Contributions of Arachne

  1. Making more resource information available at higher levels of software, and letting higher level leverage that to enable better performance.
    This point is a little too vague, but maybe we can make it more concrete once our implementation is working.
  2. Having many more threads than we could afford in the kernel
          ==> avoid deadlocks based on thread limitations.
  3.  Ability to run tasks to completion (no preemption at awkward times)
  4.  Fast context switches
          ==> Reuse of idle times without paying for kernel context switch
          ==> Allows us to get high throughput without giving up low latency
  5. Policies for relating the number of cores to logical concurrency (number of user threads)
          - Enable us to fill in the idle time without adding extra latency
          - Allow the application to offer concurrency that matches available cores (avoid kernel thread multiplexing)
  6. Effective load-balancing by using very short tasks.
  7. Reduced tail latency