/
Arachne Kernel API
Arachne Kernel API
void setCoreRequestPriority(int prio) // Q1: Do we want to have different priorities inside our request? Say, we // really really need at least 2 cores but it would be nice to have 3 in total // Q2: Should we try to discourage applications from just using the highest // priority selfishly? /** * Set the desired number of cores dedicated to this process. * * This kernel will try to allocate the desired number of cores synchronously * and then return the actual number of allocated cores. * * The actual level of parallelism doesn't necessarily match this number * during the process's lifetime. First, the kernel may not have enough * cores to fullfil this requirement. Second, there could be normal kernel * threads in this process that are scheduled by the CFS scheduler running * on other cores. */ int setDesiredNumOfCores(int n); // IMPLEMENTATION NOTES: 1) The kernel allocates a core X by moving one of its // binding KTs from the wait queue to the run queue. This way, when core X // gets to run `pick_next_task` next time, the scheduler will schedule this // runnable KT before any other threads because our Arachne scheduling class // has the highest priority. 2) The kernel will save the desired number of cores // in the proc struct because it may not have enough cores right now but still // want to try again later. // Q1: What more information/constraint about the cores do we want to convey // to the kernel? /** * Return the actual number of cores allocated to this process. */ int getNumOfAllocCores(); // We use the existing syscall sched_yield() to relinquish the core. However, // our own implementation in the Arachne scheduling class will put the calling // thread into a wait queue to ensure it does not get scheduled automatically. int sched_yield(); // NOTES: Relinquishing a core voluntarily does not affect the desired number // of cores dedicated to the process.
Medium-term goals
- Dedicate cores
- Release cores
- Preempt cores
- Hypertwins
Long-term goals (after paper deadline)
- Complex core topologies
- Hypervisor kernel negotiation
, multiple selections available,
Related content
Arachne Priorities and Starvation
Arachne Priorities and Starvation
More like this
Core Negotiation Protocol
Core Negotiation Protocol
More like this
Arachne Load Balancing
Arachne Load Balancing
More like this
Arachne Open Issues
Arachne Open Issues
More like this
Arachne Performance
Arachne Performance
More like this
Contributions of Arachne
Contributions of Arachne
More like this