...
Q3: Should we consider the possibility of async. syscall mechanism (e.g., FlexSC, Linux Syslets, etc.)?
...
Q4: What if we have too many threads blocking in the syscalls at the same time? Should we try to cap the size of the thread pool?
Q5: Is the scheduling class going to be notified when threads are blocked on syscalls and woken?
The scheduling class interface `sched_class` is defined at: http://lxr.free-electrons.com/source/kernel/sched/sched.h?v=4.7#L1193. `dequeue_task` and `task_woken` will be called respectively when a task goes to sleep and when it's woken up.
SCHEDULING POLICIES IN KERNEL
Scheduling policies currently available in Linux 4.7 are defined at: http://lxr.free-electrons.com/source/include/uapi/linux/sched.h?v=4.7#L35.
...
Code Block |
---|
void Arachne::MainLoop() { while (1) { while (!relinquishThisCore() && !yieldToUnblockedSibling()) { // Pick the next Arachne user thread to run // and switch to its context; this function // returns when the Arachne user thread // decides to yield the control schedule_next_thread(); } // If this thread have been downgraded and // lost its binding to the core, just exit the // the main loop and terminate gracefully if (!boundToThisCore()) return; } sched_yield(); } } |
(DYNAMIC) FULL CORE ISOLATION
...