[bootlin/training-materials updates] master: realtime: move scheduling classes into a separate file for reuse (54b920fc)

Clément Léger clement.leger at bootlin.com
Tue Oct 25 10:52:13 CEST 2022


Repository : https://github.com/bootlin/training-materials
On branch  : master
Link       : https://github.com/bootlin/training-materials/commit/54b920fcf17adb4d9cc94405038aa17978887bee

>---------------------------------------------------------------

commit 54b920fcf17adb4d9cc94405038aa17978887bee
Author: Clément Léger <clement.leger at bootlin.com>
Date:   Wed Oct 19 14:52:17 2022 +0200

    realtime: move scheduling classes into a separate file for reuse
    
    Signed-off-by: Clément Léger <clement.leger at bootlin.com>


>---------------------------------------------------------------

54b920fcf17adb4d9cc94405038aa17978887bee
 common/scheduling-classes.tex                      | 59 +++++++++++++++++++++
 .../realtime-linux-configuration.tex               | 60 +---------------------
 2 files changed, 60 insertions(+), 59 deletions(-)

diff --git a/common/scheduling-classes.tex b/common/scheduling-classes.tex
new file mode 100644
index 00000000..8290e841
--- /dev/null
+++ b/common/scheduling-classes.tex
@@ -0,0 +1,59 @@
+\begin{frame}
+	\frametitle{The Linux Kernel Scheduler}
+	\begin{itemize}
+		\item The Linux Kernel Scheduler is a key piece in having a real-time behaviour
+		\item It is in charge of deciding which \textbf{runnable} task gets executed
+		\item It also elects on which CPU the task runs, and it tightly coupled to CPUidle and CPUFreq
+		\item It schedules both \textbf{userspace} tasks, but also \textbf{kernel} tasks
+		\item Each task is assigned one \textbf{scheduling class} or \textbf{policy}
+		\item The class determines the algorithm used to elect each task
+		\item Tasks with different scheduling classes can coexist on the system
+	\end{itemize}
+\end{frame}
+
+\begin{frame}
+	\frametitle{Non-Realtime Scheduling Classes}
+	There are 3 \textbf{Non-RealTime} classes
+	\begin{itemize}
+		\item \code{SCHED_OTHER} : The default policy, using a time-sharing algorithm
+		\item \ksym{SCHED_BATCH} : Similar to \code{SCHED_OTHER}, but designed for CPU-intensive loads that affect the wakeup time
+		\item \ksym{SCHED_IDLE} : Very low priority class. Tasks with this policy will run only if nothing else needs to run.
+		\item \code{SCHED_OTHER} and \ksym{SCHED_BATCH} use the \textbf{nice} value to increase or decrease their scheduling frequency
+		\item A higher nice value means that the tasks gets scheduled \textbf{less} often
+	\end{itemize}
+\end{frame}
+
+\begin{frame}
+	\frametitle{Realtime Scheduling Classes}
+	There are 3 \textbf{Realtime} classes
+	\begin{itemize}
+		\item Tasks under a Realtime class can be assigned a priority between 0 and 98
+		\item Priority 99 is \textbf{reserved} for critical housekeeping tasks
+		\item Runnable tasks will preempt any other lower-priority task
+		\item \ksym{SCHED_FIFO} : All tasks with the same priority are scheduled \textbf{First in, First out}
+		\item \ksym{SCHED_RR} : Similar to SCHED\_FIFO but with a time-sharing round-robin between tasks with the same priority
+		\item \ksym{SCHED_DEADLINE} : For tasks doing recurrent jobs, extra attributes are attached to a task
+			\begin{itemize}
+				\item A computation time, which represents the time the tasks needs to complete a job
+				\item A deadline, which is the maximum allowable time to compute the job
+				\item A period, during which only one job can occur
+			\end{itemize}
+	\end{itemize}
+\end{frame}
+
+\begin{frame}
+	\frametitle{Changing the Scheduling Class}
+	\begin{itemize}
+		\item The Scheduling Class is set per-task, and defaults to \code{SCHED_OTHER}
+		\item The \code{sched_setscheduler} syscall allows changing the class of a task
+		\item The tool \code{chrt} uses it to allow changing the class of a running task :
+			\begin{itemize}
+				\item \code{chrt -f/-b/-o/-r -p PRIO PID}
+			\end{itemize}
+		\item It can also be used to launch a new program with a dedicated class :
+			\begin{itemize}
+				\item \code{chrt -f/-b/-o/-r PRIO CMD}
+			\end{itemize}
+		\item New processes will inherit the class of their parent except if the \ksym{SCHED_RESET_ON_FORK} flag is set with \code{sched_setscheduler}
+	\end{itemize}
+\end{frame}
\ No newline at end of file
diff --git a/slides/realtime-linux-configuration/realtime-linux-configuration.tex b/slides/realtime-linux-configuration/realtime-linux-configuration.tex
index a03366fe..58b578e6 100644
--- a/slides/realtime-linux-configuration/realtime-linux-configuration.tex
+++ b/slides/realtime-linux-configuration/realtime-linux-configuration.tex
@@ -63,65 +63,7 @@
 \end{frame}
 
 % scheduling classes
-\begin{frame}
-	\frametitle{The Linux Kernel Scheduler}
-	\begin{itemize}
-		\item The Linux Kernel Scheduler is a key piece in having a real-time behaviour
-		\item It is in charge of deciding which \textbf{runnable} task gets executed
-		\item It also elects on which CPU the task runs, and it tightly coupled to CPUidle and CPUFreq
-		\item It schedules both \textbf{userspace} tasks, but also \textbf{kernel} tasks
-		\item Each task is assigned one \textbf{scheduling class} or \textbf{policy}
-		\item The class determines the algorithm used to elect each task
-		\item Tasks with different scheduling classes can coexist on the system
-	\end{itemize}
-\end{frame}
-
-\begin{frame}
-	\frametitle{Non-Realtime Scheduling Classes}
-	There are 3 \textbf{Non-RealTime} classes
-	\begin{itemize}
-		\item \code{SCHED_OTHER} : The default policy, using a time-sharing algorithm
-		\item \ksym{SCHED_BATCH} : Similar to \code{SCHED_OTHER}, but designed for CPU-intensive loads that affect the wakeup time
-		\item \ksym{SCHED_IDLE} : Very low priority class. Tasks with this policy will run only if nothing else needs to run.
-		\item \code{SCHED_OTHER} and \ksym{SCHED_BATCH} use the \textbf{nice} value to increase or decrease their scheduling frequency
-		\item A higher nice value means that the tasks gets scheduled \textbf{less} often
-	\end{itemize}
-\end{frame}
-
-\begin{frame}
-	\frametitle{Realtime Scheduling Classes}
-	There are 3 \textbf{Realtime} classes
-	\begin{itemize}
-		\item Tasks under a Realtime class can be assigned a priority between 0 and 98
-		\item Priority 99 is \textbf{reserved} for critical housekeeping tasks
-		\item Runnable tasks will preempt any other lower-priority task
-		\item \ksym{SCHED_FIFO} : All tasks with the same priority are scheduled \textbf{First in, First out}
-		\item \ksym{SCHED_RR} : Similar to SCHED\_FIFO but with a time-sharing round-robin between tasks with the same priority
-		\item \ksym{SCHED_DEADLINE} : For tasks doing recurrent jobs, extra attributes are attached to a task
-			\begin{itemize}
-				\item A computation time, which represents the time the tasks needs to complete a job
-				\item A deadline, which is the maximum allowable time to compute the job
-				\item A period, during which only one job can occur
-			\end{itemize}
-	\end{itemize}
-\end{frame}
-
-\begin{frame}
-	\frametitle{Changing the Scheduling Class}
-	\begin{itemize}
-		\item The Scheduling Class is set per-task, and defaults to \code{SCHED_OTHER}
-		\item The \code{sched_setscheduler} syscall allows changing the class of a task
-		\item The tool \code{chrt} uses it to allow changing the class of a running task :
-			\begin{itemize}
-				\item \code{chrt -f/-b/-o/-r -p PRIO PID}
-			\end{itemize}
-		\item It can also be used to launch a new program with a dedicated class :
-			\begin{itemize}
-				\item \code{chrt -f/-b/-o/-r PRIO CMD}
-			\end{itemize}
-		\item New processes will inherit the class of their parent except if the \ksym{SCHED_RESET_ON_FORK} flag is set with \code{sched_setscheduler}
-	\end{itemize}
-\end{frame}
+\input{../common/scheduling-classes.tex}
 
 \begin{frame}
 	\frametitle{Realtime policies and CPU hogging}




More information about the training-materials-updates mailing list