Skip to content

Contributions

Henry Qin edited this page Feb 28, 2017 · 3 revisions

List of Contributions

Ideas from Berkeley that we build on.

  • Separation of Core Allocation from Thread Scheduling.

Our Claims

  • Automatic core arbitration between application does not require complexity of a new operating system.

Our Contributions

  • Core Arbiter: A user application which allocates dedicated cores to various applications and arbitrates between them at different priority levels.
    • Graceful core preemption for non-cooperating application; no special handling of critical sections needed.
  • Arachne: A fast user-level thread scheduler.
    • Examines its own concurrency to discover an efficient level of parallelism.
    • Negotiates with the Core Arbiter to automatically increase and decrease the number of cores.
    • Infers priorities from based on application behavior.

Usual benfits of Cooperative User Threading

  • Cheap context switches and synchronization primitives (block / signal / sleep/ lock/ cv, etc) reduce the need for applications to build their own synchronization out of atomic primitives.
  • Allow hundreds of user threads to run, and thereby make distributed resource deadlock very unlikely.
  • Allow application threads to run tasks until they block or voluntarily yield, rather than getting preempted at random points.

How do we deal with blocking IO?

  • Arachne does not deal with blocking IO explicitly, but asynchronous system calls and epoll are recommended approaches. This is the same approach used by uThreads.