Arachne: Core-Aware Thread Management
Arachne is a new user-level implementation of threads that provides both low latency and high throughput for applications consisting of extremely short-lived threads (only a few microseconds). Arachne is core-aware: a lightweight runtime within each application computes how many cores are needed based on its load, and a central core arbiter allocates cores among competing applications. Each runtime always knows its current core allocation, so it can schedule user threads to match the available resources. The runtime is optimized to minimize cache misses; it can initiate a new user thread on a different core (with load balancing) in about 180 ns and wake up a blocked thread on another core in about 130 ns. Adding Arachne to the RAMCloud storage system increased its write throughput by more than 2.5x. Both the Arachne runtime and the core arbiter run at user level on Linux; no kernel modifications are needed.