Skip to content

Global Task List

hq6 edited this page Sep 25, 2018 · 23 revisions

Must-Haves for Paper

  • Thread-creation must have load-balancing included.
  • Fix the Shenango reference
  • Use the proper mechanism for the exclusive-thread-exit instead of the current hacks (reclaiming on demand). See board picture for ideas.
  • Maintain a count of blocked threads and use numOccupied - numBlocked to determine load instead of just numOccupied. This will correct against the CoreLoadEstimator taking up a thread slot and being blocked most of the time.

Nice-to-have

  • Finish new Core Arbiter implementation and replace measurements in paper.
    • Always allocate the hypertwin to the same process.
    • When yielding cores, always yield in the same order we received a core.
  • Investigate and try to optimize thread exit performance
  • RAMCloud latency numbers - why are they so much higher than we expect?
  • Measure the cost of the random number generator

Deferrable

  • Fix TLS issues in Arachne

  • Ensure that empty thread contexts which a core is polling on do not get swapped during thread migration.

  • Revisit the bug fixes that Peter implemented and see if there are cleaner solutions.

  • Run the synthetic application without the power of 2. Just make a random choice.

    • Evidence for the power of 2.
    • Expect 99% to get worse
  • Make all of the paper experiments easy to re-run without source code modification or arcane knowledge.

  • Start CoreArbiter Server (setuid binary) in Arachne runtime if it is not already started.

Pie in the Sky

  • Integrate Arachne into Redis and/or build other applications on Arachne?
  • Insert Core Arbiter / Reimplement Arachne under Go / Java
  • Cluster scheduler that interacts with the core arbiter? // Replace Borg
  • Analyze all sources of latency in Arachne's operations.
  • Do latency & throughput comparisons against Golang's work-stealing load balancer, assuming that threads are created by a central dispatcher.

Done

  • Resolve memory barrier issues around thread wakeup. // Exchange has mfence semantics, trust in gcc
  • Design & implement a new CorePolicy API and architecture.
  • Clean up Peter's bug fix for reducing the contexts scanned; one option is simply to remove that optimization until we can come up with something cleaner.
  • Re-run RAMCloud write throughput with the core arbiter running.
  • Integrate Arachne into memcached
    • Current done with video processing as background
  • Fix the Arachne-RAMCloud-YCSB integration.
    • Re-run YCSB benchmarks and put results into the paper.
  • Revise the paper to incorporate the memcached results
  • Refactor CoreEstimator to take a CoreList as an argument, and only do estimation across the cores specified therein. Estimation should be deferred if data for the specific CoreList was not previously collected.
  • Run microbenchmarks with both idle and active hypertwins
  • Expand graphs and tables in paper
  • Investigate why memcached-A-NoArbiter performs worse than memcached - Add the graph requested.
  • Investigate why microbenchmarks got slower.
  • Decide what to do with Cilk -- e.g. find an older compiler that doesn't remove thread creations?
  • Check whether x264 is running with a nice value set; if so, rerun experiments without nice.
    • Make sure we mention in the paper
    • Rerun without nice.
  • Add a new line in Table 2 for thread exit turnaround time. Time from when one thread exits to the next thread starts.
  • Make sure figure 2 is consistent with Table 2.