Arachne Performance

Thread Creation on Remote (Idle) Core

In this experiment, we issued a thread creation from one core to a different core which was idle at the time and measured the time between the `createThread()` call and the first line of the new thread. We ran this experiment 10,000 times and the median time is 160 ns. Measured in August 2016.

Thread Yield on Same Core

In this experiment, we put two user threads on the same core and measured the time between one thread yielding and the other thread regaining control. This was measured at a median latency of 56 ns in August 2016.

Condition Variable Signal Across Cores

In this experiment, one thread takes a SpinLock and then sleeps on an Arachne Condition Variable. Another thread running on a different core acquires the same lock, notifies on the condition variable, and then releases the lock. The median time between notification and wake-up varies between 200 and 250 ns depending on the number of blocked threads.