~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/scheduler/sched-eevdf.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/scheduler/sched-eevdf.rst (Architecture i386) and /Documentation/scheduler/sched-eevdf.rst (Architecture mips)


  1 ===============                                     1 ===============
  2 EEVDF Scheduler                                     2 EEVDF Scheduler
  3 ===============                                     3 ===============
  4                                                     4 
  5 The "Earliest Eligible Virtual Deadline First"      5 The "Earliest Eligible Virtual Deadline First" (EEVDF) was first introduced
  6 in a scientific publication in 1995 [1]. The L      6 in a scientific publication in 1995 [1]. The Linux kernel began
  7 transitioning to EEVDF in version 6.6 (as a ne      7 transitioning to EEVDF in version 6.6 (as a new option in 2024), moving
  8 away from the earlier Completely Fair Schedule      8 away from the earlier Completely Fair Scheduler (CFS) in favor of a version
  9 of EEVDF proposed by Peter Zijlstra in 2023 [2      9 of EEVDF proposed by Peter Zijlstra in 2023 [2-4]. More information
 10 regarding CFS can be found in                      10 regarding CFS can be found in
 11 Documentation/scheduler/sched-design-CFS.rst.      11 Documentation/scheduler/sched-design-CFS.rst.
 12                                                    12 
 13 Similarly to CFS, EEVDF aims to distribute CPU     13 Similarly to CFS, EEVDF aims to distribute CPU time equally among all
 14 runnable tasks with the same priority. To do s     14 runnable tasks with the same priority. To do so, it assigns a virtual run
 15 time to each task, creating a "lag" value that     15 time to each task, creating a "lag" value that can be used to determine
 16 whether a task has received its fair share of      16 whether a task has received its fair share of CPU time. In this way, a task
 17 with a positive lag is owed CPU time, while a      17 with a positive lag is owed CPU time, while a negative lag means the task
 18 has exceeded its portion. EEVDF picks tasks wi     18 has exceeded its portion. EEVDF picks tasks with lag greater or equal to
 19 zero and calculates a virtual deadline (VD) fo     19 zero and calculates a virtual deadline (VD) for each, selecting the task
 20 with the earliest VD to execute next. It's imp     20 with the earliest VD to execute next. It's important to note that this
 21 allows latency-sensitive tasks with shorter ti     21 allows latency-sensitive tasks with shorter time slices to be prioritized,
 22 which helps with their responsiveness.             22 which helps with their responsiveness.
 23                                                    23 
 24 There are ongoing discussions on how to manage     24 There are ongoing discussions on how to manage lag, especially for sleeping
 25 tasks; but at the time of writing EEVDF uses a     25 tasks; but at the time of writing EEVDF uses a "decaying" mechanism based
 26 on virtual run time (VRT). This prevents tasks     26 on virtual run time (VRT). This prevents tasks from exploiting the system
 27 by sleeping briefly to reset their negative la     27 by sleeping briefly to reset their negative lag: when a task sleeps, it
 28 remains on the run queue but marked for "defer     28 remains on the run queue but marked for "deferred dequeue," allowing its
 29 lag to decay over VRT. Hence, long-sleeping ta     29 lag to decay over VRT. Hence, long-sleeping tasks eventually have their lag
 30 reset. Finally, tasks can preempt others if th     30 reset. Finally, tasks can preempt others if their VD is earlier, and tasks
 31 can request specific time slices using the new     31 can request specific time slices using the new sched_setattr() system call,
 32 which further facilitates the job of latency-s     32 which further facilitates the job of latency-sensitive applications.
 33                                                    33 
 34 REFERENCES                                         34 REFERENCES
 35 ==========                                         35 ==========
 36                                                    36 
 37 [1] https://citeseerx.ist.psu.edu/document?rep     37 [1] https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=805acf7726282721504c8f00575d91ebfd750564
 38                                                    38 
 39 [2] https://lore.kernel.org/lkml/a79014e6-ea83     39 [2] https://lore.kernel.org/lkml/a79014e6-ea83-b316-1e12-2ae056bda6fa@linux.vnet.ibm.com/
 40                                                    40 
 41 [3] https://lwn.net/Articles/969062/               41 [3] https://lwn.net/Articles/969062/
 42                                                    42 
 43 [4] https://lwn.net/Articles/925371/               43 [4] https://lwn.net/Articles/925371/
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php