Schedulers University of New Mexico
Total Page:16
File Type:pdf, Size:1020Kb
Schedulers University of New Mexico https://commons.wikimedia.org/wiki/ File:Simplified_Structure_of_the_Linux_Kern el.svg 2 University of New Mexico O(1) scheduler (older) Two arrays, switching between them is just changing a pointer Uses heuristics to try to know which processes are interactive Average sleep time https://en.wikipedia.org/wiki/O(1)_scheduler 3 University of New Mexico CFS scheduler (currently in Linux) Completely Fair Scheduler Red-black tree of execution to the nanosecond niffies Like weighted fair queuing for packet networks An ideal processor would share equally maximum execution time = time the process has been waiting to run / total number of processes https://en.wikipedia.org/wiki/Completely_Fair_Scheduler 4 University of New Mexico BFS (now MuQQS) Brain “Hug” Scheduler Specifically for desktops Weighted round-robin where the weights are based on some very complex formulae (see Wikipedia for details) No priority modification for sleep behavior Time slice = 6ms (human perception of jitter ≈ 7ms) Performs slightly better than CFS for <16 cores https://en.wikipedia.org/wiki/Brain_Fuck_Scheduler https://lwn.net/Articles/720227/ 5 University of New Mexico Windows NT through 10 ● Multilevel Feedback Queue (MLFQ) 6 University of New Mexico Mac OS X ● XNU is a mix of FreeBSD and Mach – Network, files, processes, POSIX interface, etc. come from FreeBSD – CPU scheduling, memory management, specialized IPC, etc. comes from Mach ● Round-robin and MLFQ schedulers 7 University of New Mexico IOS (i.e., iPhone) ● Same as Mac OS X – MLFQ and round-robin 8 University of New Mexico Android ● Same as Linux – Completely Fair Scheduler 9 University of New Mexico FreeBSD ● https://www.usenix.org/legacy/event/bsdco n03/tech/full_papers/roberson/roberson.pdf ● ULE scheduler ● Looks a lot like Linux’s old O(1) scheduler 10 University of New Mexico Others ● GNU Hurd uses GNU Mach’s scheduler – MLFQ and RR ● Haiku has a simple RR scheduler where the time slice is based on the priority ● Solaris uses MLFQ ● Minix and xv6 - ??? ● Real-time OSes - ??? ● Supercomputers - ??? 11.