-
Notifications
You must be signed in to change notification settings - Fork 44
Contributions
Henry Qin edited this page Feb 28, 2017
·
3 revisions
- Separation of Core Allocation from Thread Scheduling.
- Automatic core arbitration between application does not require complexity of a new operating system.
- 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.
- 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.
- 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.