linux-doc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/1] docs: scheduler: Start documenting the EEVDF scheduler
@ 2024-07-20  0:22 Carlos Bilbao
  2024-07-20  0:22 ` [PATCH v3 1/1] " Carlos Bilbao
  2024-08-07 19:41 ` [PATCH v3 0/1] " Jonathan Corbet
  0 siblings, 2 replies; 3+ messages in thread
From: Carlos Bilbao @ 2024-07-20  0:22 UTC (permalink / raw)
  To: corbet, sergio.collado, peterz, rdunlap
  Cc: bilbao, jembid, linux-kernel, linux-doc, Carlos Bilbao

I was in the process of updating the CFS documentation, as Sergio proposed,
when I realized we don't have any EEVDF documentation to point to. I have
started it. I know it isn't a lot of info about EEVDF in the doc, but (1) I
wanted to get the ball rolling, and (2) I prefer to keep it light until we
have a solid idea of how EEVDF will actually end up. This could take a
while. When or if it stops being an option, we can revisit it.

Sergio, if you’d like to update the Spanish translations of CFS and add one
for this new EEVDF doc, please go for it! ;)

Thanks,
Carlos

P.S.: Jon, I have triple-checked for compilation warnings, but if you
      encounter any, please LMK the versions of your tools so I can match
      them moving forward.

Carlos:
  docs: scheduler: Start documenting the EEVDF scheduler

---
Changelog:
  v3: Removed labels and used instead paths to documents.
  v2: Move file within scheduler index. Remove incorrect subsection
      numbering.

---
 Documentation/scheduler/index.rst            |  1 +
 Documentation/scheduler/sched-design-CFS.rst | 10 +++--
 Documentation/scheduler/sched-eevdf.rst      | 43 ++++++++++++++++++++
 3 files changed, 50 insertions(+), 4 deletions(-)
 create mode 100644 Documentation/scheduler/sched-eevdf.rst

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH v3 1/1] docs: scheduler: Start documenting the EEVDF scheduler
  2024-07-20  0:22 [PATCH v3 0/1] docs: scheduler: Start documenting the EEVDF scheduler Carlos Bilbao
@ 2024-07-20  0:22 ` Carlos Bilbao
  2024-08-07 19:41 ` [PATCH v3 0/1] " Jonathan Corbet
  1 sibling, 0 replies; 3+ messages in thread
From: Carlos Bilbao @ 2024-07-20  0:22 UTC (permalink / raw)
  To: corbet, sergio.collado, peterz, rdunlap
  Cc: bilbao, jembid, linux-kernel, linux-doc, Carlos Bilbao

Add some documentation regarding the newly introduced scheduler EEVDF.

Signed-off-by: Carlos Bilbao <carlos.bilbao.osdev@gmail.com>
---
 Documentation/scheduler/index.rst            |  1 +
 Documentation/scheduler/sched-design-CFS.rst | 10 +++--
 Documentation/scheduler/sched-eevdf.rst      | 43 ++++++++++++++++++++
 3 files changed, 50 insertions(+), 4 deletions(-)
 create mode 100644 Documentation/scheduler/sched-eevdf.rst

diff --git a/Documentation/scheduler/index.rst b/Documentation/scheduler/index.rst
index 43bd8a145b7a..1f2942c4d14b 100644
--- a/Documentation/scheduler/index.rst
+++ b/Documentation/scheduler/index.rst
@@ -12,6 +12,7 @@ Scheduler
     sched-bwc
     sched-deadline
     sched-design-CFS
+    sched-eevdf
     sched-domains
     sched-capacity
     sched-energy
diff --git a/Documentation/scheduler/sched-design-CFS.rst b/Documentation/scheduler/sched-design-CFS.rst
index bc1e507269c6..8786f219fc73 100644
--- a/Documentation/scheduler/sched-design-CFS.rst
+++ b/Documentation/scheduler/sched-design-CFS.rst
@@ -8,10 +8,12 @@ CFS Scheduler
 1.  OVERVIEW
 ============
 
-CFS stands for "Completely Fair Scheduler," and is the new "desktop" process
-scheduler implemented by Ingo Molnar and merged in Linux 2.6.23.  It is the
-replacement for the previous vanilla scheduler's SCHED_OTHER interactivity
-code.
+CFS stands for "Completely Fair Scheduler," and is the "desktop" process
+scheduler implemented by Ingo Molnar and merged in Linux 2.6.23. When
+originally merged, it was the replacement for the previous vanilla
+scheduler's SCHED_OTHER interactivity code. Nowadays, CFS is making room
+for EEVDF, for which documentation can be found in
+Documentation/scheduler/sched-eevdf.rst.
 
 80% of CFS's design can be summed up in a single sentence: CFS basically models
 an "ideal, precise multi-tasking CPU" on real hardware.
diff --git a/Documentation/scheduler/sched-eevdf.rst b/Documentation/scheduler/sched-eevdf.rst
new file mode 100644
index 000000000000..83efe7c0a30d
--- /dev/null
+++ b/Documentation/scheduler/sched-eevdf.rst
@@ -0,0 +1,43 @@
+===============
+EEVDF Scheduler
+===============
+
+The "Earliest Eligible Virtual Deadline First" (EEVDF) was first introduced
+in a scientific publication in 1995 [1]. The Linux kernel began
+transitioning to EEVDF in version 6.6 (as a new option in 2024), moving
+away from the earlier Completely Fair Scheduler (CFS) in favor of a version
+of EEVDF proposed by Peter Zijlstra in 2023 [2-4]. More information
+regarding CFS can be found in
+Documentation/scheduler/sched-design-CFS.rst.
+
+Similarly to CFS, EEVDF aims to distribute CPU time equally among all
+runnable tasks with the same priority. To do so, it assigns a virtual run
+time to each task, creating a "lag" value that can be used to determine
+whether a task has received its fair share of CPU time. In this way, a task
+with a positive lag is owed CPU time, while a negative lag means the task
+has exceeded its portion. EEVDF picks tasks with lag greater or equal to
+zero and calculates a virtual deadline (VD) for each, selecting the task
+with the earliest VD to execute next. It's important to note that this
+allows latency-sensitive tasks with shorter time slices to be prioritized,
+which helps with their responsiveness.
+
+There are ongoing discussions on how to manage lag, especially for sleeping
+tasks; but at the time of writing EEVDF uses a "decaying" mechanism based
+on virtual run time (VRT). This prevents tasks from exploiting the system
+by sleeping briefly to reset their negative lag: when a task sleeps, it
+remains on the run queue but marked for "deferred dequeue," allowing its
+lag to decay over VRT. Hence, long-sleeping tasks eventually have their lag
+reset. Finally, tasks can preempt others if their VD is earlier, and tasks
+can request specific time slices using the new sched_setattr() system call,
+which further facilitates the job of latency-sensitive applications.
+
+REFERENCES
+==========
+
+[1] https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=805acf7726282721504c8f00575d91ebfd750564
+
+[2] https://lore.kernel.org/lkml/a79014e6-ea83-b316-1e12-2ae056bda6fa@linux.vnet.ibm.com/
+
+[3] https://lwn.net/Articles/969062/
+
+[4] https://lwn.net/Articles/925371/
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v3 0/1] docs: scheduler: Start documenting the EEVDF scheduler
  2024-07-20  0:22 [PATCH v3 0/1] docs: scheduler: Start documenting the EEVDF scheduler Carlos Bilbao
  2024-07-20  0:22 ` [PATCH v3 1/1] " Carlos Bilbao
@ 2024-08-07 19:41 ` Jonathan Corbet
  1 sibling, 0 replies; 3+ messages in thread
From: Jonathan Corbet @ 2024-08-07 19:41 UTC (permalink / raw)
  To: Carlos Bilbao, sergio.collado, peterz, rdunlap
  Cc: bilbao, jembid, linux-kernel, linux-doc, Carlos Bilbao

Carlos Bilbao <carlos.bilbao.osdev@gmail.com> writes:

> I was in the process of updating the CFS documentation, as Sergio proposed,
> when I realized we don't have any EEVDF documentation to point to. I have
> started it. I know it isn't a lot of info about EEVDF in the doc, but (1) I
> wanted to get the ball rolling, and (2) I prefer to keep it light until we
> have a solid idea of how EEVDF will actually end up. This could take a
> while. When or if it stops being an option, we can revisit it.
>
> Sergio, if you’d like to update the Spanish translations of CFS and add one
> for this new EEVDF doc, please go for it! ;)
>
> Thanks,
> Carlos
>
> P.S.: Jon, I have triple-checked for compilation warnings, but if you
>       encounter any, please LMK the versions of your tools so I can match
>       them moving forward.
>
> Carlos:
>   docs: scheduler: Start documenting the EEVDF scheduler
>
> ---
> Changelog:
>   v3: Removed labels and used instead paths to documents.
>   v2: Move file within scheduler index. Remove incorrect subsection
>       numbering.
>
> ---
>  Documentation/scheduler/index.rst            |  1 +
>  Documentation/scheduler/sched-design-CFS.rst | 10 +++--
>  Documentation/scheduler/sched-eevdf.rst      | 43 ++++++++++++++++++++
>  3 files changed, 50 insertions(+), 4 deletions(-)
>  create mode 100644 Documentation/scheduler/sched-eevdf.rst

So, nobody has screamed, so I went ahead and applied this.

Thanks,

jon

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-08-07 19:41 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-20  0:22 [PATCH v3 0/1] docs: scheduler: Start documenting the EEVDF scheduler Carlos Bilbao
2024-07-20  0:22 ` [PATCH v3 1/1] " Carlos Bilbao
2024-08-07 19:41 ` [PATCH v3 0/1] " Jonathan Corbet

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).