1 / 20

BFS: Brain F* ck Scheduler

BFS: Brain F* ck Scheduler. Jacob Chan. Objectives. Brain F* ck Scheduling What it is How it works Features Scalability Limitations Definition of Terms. Brain F*** Scheduler: What and Why?. I don’t curse FYI. It’s against my integrity 

reuben
Download Presentation

BFS: Brain F* ck Scheduler

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. BFS: Brain F*ck Scheduler Jacob Chan

  2. Objectives • Brain F*ck Scheduling • What it is • How it works • Features • Scalability • Limitations • Definition of Terms

  3. Brain F*** Scheduler: What and Why? • I don’t curse FYI. It’s against my integrity  • So for the purpose of this class, let’s say that it’s BFS • Goals • Minimize complex designs of CPU process schedulers • Implement a simpler design (because BFS is an alternative to Completely Fair Scheduler or CFS) • Achieve desktop interactivity without the heuristics • Aka improving desktop performance • Who operates desktops? How does the user interact to the desktop?

  4. Brain F*** Scheduler: What and Why? • Con Kolivas • Australian anesthetist • Wrote patches to improve desktop performance • Linux developers mainly focused on server development prior to BFS • Thus, he devised the BFS • BFS allowed enhancements for lower-spec devices • Single cores • Low power machines (like phones) • Reason: low overhead (due to dropping lower priority tasks; more on this later)

  5. Jiffy • Duration of one tick of the timer system interrupt • 1 jiffy = 1 tick of system clock • Not absolute • Dependent on clock interval frequency of the HARDWARE • Linux on Intel i386 has a jiffy of 4 milliseconds (too slow!)

  6. How does BFS Work? • System time is updated by an interrupt that is periodically sent out by the CPU • Think of system time as the computer’s body clock (to be simpler) • CPU will stop what it is doing and runs the timer interrupt service routine (just to update system time) • Effects • Jiffy is added (one tick of system clock) • Preemption • CPU resumes whatever it is doing (unless there is a preemption)

  7. Key Feature: Virtual Deadline • Deadlines imposed on soft real-time system • Not really a critical deadline (as in life-or-death) • Service the earliest deadline as much as possible • Expired deadlines are not BOOM! But if there are, finish it right away. • Virtual deadlines may be ignored(depending on priority of process), and can also be recomputed • In BFS, virtual deadlines are only used for normal and idle processes • Including tasks at the same level • Real time tasks go ahead of normal tasks!

  8. BFS: Variables • rr_interval • Round robin interval (can be found in /proc/sys/kernel/rr_interval) • Default value: 6ms • Humans can detect jitter in approximately 7ms • Higher than 6ms will result into worse latencies • Latency vs throughput: what are the difference? • Time quantum is equal to this value • Affects in computing virtual deadlines (more on this later) • iso_cpu • Used for isochronous scheduling • Default value: 70% • Setting this to 0 removes running pseudo-real-time tasks • Setting this to 100 results into users getting round robin access (SCHED_RR)

  9. BFS: Variables • Scheduling policies • SCHED_ISO (Isochronous Scheduling) • Allows non-root users to run tasks with an almost real-time priority • If isochronous task exceeds iso_cputime, then it is demoted to a normal task • During this, total CPU power is computed • SCHED_IDLEPRIO (scheduling tasks that would run only if processor is idle) • Very low priority!

  10. General Features of BFS • Only one runqueue for the ENTIRE SYSTEM, not each CPU • This makes BFS unique from other schedulers (since other schedulers are on a per-core basis) • Maximum size = (# of tasks requesting CPU time) – (logical processors) + 1 • O(n) worst case (what is n?) • Relies on virtual deadlines for normal (and idle, if any) priority tasks • Process accounting does not rely on sleep time

  11. Computation of Virtual Deadline • Only applies to normal or idle tasks • When task requests CPU time, it enters the ready queue • Priority ratio (based on nice level) • Nice level = 100% for -20, +10% for every level above that • Virtual deadline = (current time in jiffies) + (priority ratio * rr_interval) • Time slice = rr_interval

  12. Computation of Virtual Deadline • Only applies to normal or idle tasks • When task requests CPU time, it enters the ready queue • Priority ratio (based on nice level) • Nice level = 100% for -20, +10% for every level above that • Virtual deadline = (current time in jiffies) + (priority ratio * rr_interval) • Time slice = rr_interval

  13. Computation of Virtual Deadline • When task uses up time slice, its time slice is refilled and its virtual deadline is recomputed then it is put back to the runqueue • The virtual deadline will remain unchanged if the task goes to sleep without using its allocated time slice • Why would a task go to sleep?

  14. BFS: New Task Inserted • BFS runqueues have 103 priority queues • Each is a double linked list implementation • 100 for static real-time tasks • 1 for isochronous • 1 for normal • 1 for idle • When task is inserted, a corresponding bit in a bitmap of priorities is updated • Indicates that this task is waiting to be run

  15. BFS: New Task Arrives • When task arrives (or ready to be in the runqueue) • If there is an available processor, immediately assign the task to that processor (to run it) • Requires O(n), n = number of CPUs • Else, preempt the running task with the lowest priority, if the task’s priority and virtual deadline allows it (or latest deadline, if applicable) • Check priority, then virtual deadline (only for normal or idle tasks) • If no available processor and preemption, then put the task in the appropriate priority queue • O(1)

  16. BFS: Rescheduling • Tasks return to runqueue when: • Time slice allocated is consumed. Time slice and virtual deadline are recomputed • It goes to sleep or is preempted. Time slice and virtual deadline are not recomputed • Check bitmap to see priority level tasks • Real-time -> isochronous -> normal -> idle • Each priority queue has its own algorithm to choose next process to run • Real-time with same priority level tasks are in FIFO • Isochronous tasks are in FIFO • Among normal and idle tasks, earliest virtual deadline is chosen • Chosen process is removed from the runqueue and dispatched to the processor

  17. BFS: Rescheduling • It’s not always the case that normal/idle queues use priority-oriented algorithms • Normally, the earliest deadline task is chosen • But this takes O(n), with n = number of processes in queue • If process with expired deadline is found while searching, then choose that process immediately! • Even if there is a task with an earlier and expired deadline along the list

  18. BFS: Computer Affinity • Tasks can be assigned to any CPU, but idle processors are ranked according to affinity • Temporal locality • tasks that have run at least once are assigned to the same processor (or processor in the same cache)

  19. Lab 6: Answering Questions • There will be no lab for this session (in order to prepare for next week’s midterms) • However, the following questions must be answered first (next slide) • No need to submit a certificate of authorship (since submission is notes-based) • This will count as a normal lab • I have uploaded BFS notes for this exercise (since some of them come from the notes) • Deadline: 11:55 pm tonight (it’s easy anyway)

  20. Lab 6: Answering Questions • Why is there a subtraction of number of processors in computing for the maximum size of the runqueue? What about the +1? (2 pts) • Based on the niceness level, which has higher priority, a process with a niceness level of 8 or -5? Show your solution (2 pts) • Why does processing not account of sleep time? (2 pts) • If a process A will run on processor B located at cache C, why will it prefer to run in that same processor? (2 pts) • Describe subtick accounting in your own words (2 pts)

More Related