Skip to content

Commit 0e88c41

Browse files
committed
preempt-rt: slides: preempt-rt: Updates on the mainlining status
Preempt_rt no longer requires a patch starting from v6.12, update the slides accordingly. Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
1 parent f22c82a commit 0e88c41

File tree

1 file changed

+26
-32
lines changed

1 file changed

+26
-32
lines changed

slides/realtime-linux-preempt-rt/realtime-linux-preempt-rt.tex

Lines changed: 26 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,34 @@
11
\section{Preempt RT}
22

33
\begin{frame}
4-
\frametitle{The PREEMPT\_RT Patch}
4+
\frametitle{The PREEMPT\_RT preemption level}
55
\begin{itemize}
66
\item One way to implement a multi-task Real-Time Operating System is to have a preemptible system
77
\item Any task can be interrupted at any point so that higher priority tasks can run
88
\item Userspace preemption already exists in Linux
99
\item The Linux Kernel also supports real-time scheduling policies
1010
\item However, code that runs in kernel mode isn't fully preemptible
11-
\item The Preempt-RT patch aims at making all code running in kernel mode preemptible
11+
\item Preempt-RT aims at making all code running in kernel mode preemptible
12+
\item \code{PREEMPT_RT} is a \textbf{compile-time} configuration option
13+
\begin{itemize}
14+
\item It may only accessible after applying a patch, the \textbf{Preempt RT Patch}
15+
\item The patch is being included as part of the Linux kernel
16+
\end{itemize}
1217
\end{itemize}
1318
\end{frame}
1419

1520
\begin{frame}
16-
\frametitle{PREEMPT\_RT mainlining status (1)}
21+
\frametitle{PREEMPT\_RT mainlining status}
1722
\begin{itemize}
18-
\item The project is making good progress since it got funding from
19-
the Linux Foundation in 2015 (Linux version 4.1 at that time).
20-
\item We can now observe a slow but steady reduction of the size of
21-
the PREEMPT\_RT patchset:\\
22-
\vfill
23-
\includegraphics[width=0.8\textwidth]{slides/realtime-linux-preempt-rt/rt-patch-sizes.png}
24-
\end{itemize}
25-
\end{frame}
26-
27-
\begin{frame}
28-
\frametitle{PREEMPT\_RT mainlining status (2)}
29-
\begin{itemize}
30-
\item However, the mainline Linux kernel is a moving target too,
31-
introducing new issues for real-time (such as disabling preemption in
32-
BPF... see \url{https://lwn.net/Articles/802884/}).
33-
\item In 5.12, new \kconfig{CONFIG_PREEMPT_DYNAMIC} switch to change the preemption
34-
model at boot time: \code{preempt=none}, \code{preempt=voluntary} or
35-
\code{preempt=full}
36-
\item In 5.15, the realtime preemption locking core is merged in mainline.
37-
This was the biggest part to mainline. A few pending changes are
38-
still left. See \url{https://lwn.net/Articles/867919/}.
39-
\item \code{printk()} is one of the remaining pieces to be upstreamed
40-
\item See the latest news on \url{https://wiki.linuxfoundation.org/realtime/}
23+
\item The project has made steady progress since it got funding from
24+
the Linux Foundation in 2015 (Linux version 4.1 at that time).
25+
\item The \code{PREEMPT_RT} option no longer requires applying the "Preempt RT patch"
26+
on some architectures, starting from v6.12
27+
\begin{itemize}
28+
\item \code{x86_64}, \code{arm64} and \code{RISCV} are supported so far
29+
\item Other architectures still require the patch on v6.12.
30+
\end{itemize}
31+
\item Stable versions of the patch are still maintained for older kernels
4132
\end{itemize}
4233
\end{frame}
4334

@@ -54,17 +45,21 @@ \section{Preempt RT}
5445
\begin{frame}
5546
\frametitle{Why not to use PREEMPT\_RT?}
5647
\begin{itemize}
57-
\item Linux will never be a formally proven RTOS
5848
\item The hardware Linux typically runs on isn't designed with RT in mind
5949
\item The RT patch makes the Kernel deterministic and preemptible...
6050
\item ... but the goal is not to have the lowest latencies possible
51+
\item Using the \code{PREEMPT_RT} mode has performance impacts
52+
\begin{itemize}
53+
\item Use it when you know your requirements
54+
\end{itemize}
6155
\end{itemize}
6256
\end{frame}
6357

6458
\begin{frame}
6559
\frametitle{Getting the patch}
6660
\begin{itemize}
67-
\item The RT Patchset is released \textbf{every other} kernel release
61+
\item Starting from \textbf{v6.12}, applying a patch isn't needed on \textbf{x86}, \textbf{arm64} and \textbf{RiscV}
62+
\item For other architectures, or older kernels, the patch is still needed.
6863
\item It can be downloaded as a set of patches or a single patch: \\
6964
\url{https://cdn.kernel.org/pub/linux/kernel/projects/rt/}
7065
\item Kernel trees with the patch applied are also available:
@@ -219,10 +214,9 @@ \section{Preempt RT}
219214
\begin{itemize}
220215
\item \code{printk()} is one of the main logging mechanism in the kernel
221216
\item It works in all execution context
222-
\item It's currently one of the last items preventing the RT-patch from being fully upstream
223-
\item Currently, the last kernel task who printed must print the full buffer
224-
\item A low priority task can block a high priority task by printing lots of data
225-
\item A low log-level can help remove these issues for now
217+
\item It was the last item preventing the RT-patch from being fully upstream
218+
\item The last kernel task who printed was in charge of printing the full buffer
219+
\item A low priority task could block a high priority task by printing lots of data
226220
\end{itemize}
227221
\end{frame}
228222

0 commit comments

Comments
 (0)