[bootlin/training-materials updates] master: Updates to real-time slides (33575e30)

Michael Opdenacker michael.opdenacker at bootlin.com
Thu May 14 10:43:39 CEST 2020


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

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

commit 33575e30a716983065b0552188c81780024e944d
Author: Michael Opdenacker <michael.opdenacker at bootlin.com>
Date:   Thu May 14 10:43:39 2020 +0200

    Updates to real-time slides
    
    - Links to newer presentations
    - Graph of patchset size evolution
    - Removal of obsolete information
    - Update in configuration parameter names
    - Updates in screen captures
    
    Signed-off-by: Michael Opdenacker <michael.opdenacker at bootlin.com>


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

33575e30a716983065b0552188c81780024e944d
 labs/sysdev-real-time/sysdev-real-time.tex        |   2 +-
 slides/sysdev-realtime/preempt-rt-option-help.png | Bin 0 -> 111738 bytes
 slides/sysdev-realtime/preempt-rt-option.png      | Bin 0 -> 49412 bytes
 slides/sysdev-realtime/rt-patch-sizes.ods         | Bin 0 -> 16463 bytes
 slides/sysdev-realtime/rt-patch-sizes.png         | Bin 0 -> 69448 bytes
 slides/sysdev-realtime/rt-preempt-options.png     | Bin 37119 -> 0 bytes
 slides/sysdev-realtime/sysdev-realtime.tex        | 113 +++++++++++++---------
 7 files changed, 67 insertions(+), 48 deletions(-)

diff --git a/labs/sysdev-real-time/sysdev-real-time.tex b/labs/sysdev-real-time/sysdev-real-time.tex
index 458dd6f5..412cd287 100644
--- a/labs/sysdev-real-time/sysdev-real-time.tex
+++ b/labs/sysdev-real-time/sysdev-real-time.tex
@@ -197,7 +197,7 @@ the results.
 Download the latest \code{PREEMPT_RT} kernel patch and apply it to
 your kernel sources.
 
-Configure your kernel with \code{CONFIG_PREEMPT_RT_FULL} and boot it.
+Configure your kernel with \code{CONFIG_PREEMPT_RT} and boot it.
 
 Repeat the tests and compare the results again. You should see a massive
 improvement in the maximum latency.
diff --git a/slides/sysdev-realtime/preempt-rt-option-help.png b/slides/sysdev-realtime/preempt-rt-option-help.png
new file mode 100644
index 00000000..1b919e30
Binary files /dev/null and b/slides/sysdev-realtime/preempt-rt-option-help.png differ
diff --git a/slides/sysdev-realtime/preempt-rt-option.png b/slides/sysdev-realtime/preempt-rt-option.png
new file mode 100644
index 00000000..c8e757d5
Binary files /dev/null and b/slides/sysdev-realtime/preempt-rt-option.png differ
diff --git a/slides/sysdev-realtime/rt-patch-sizes.ods b/slides/sysdev-realtime/rt-patch-sizes.ods
new file mode 100644
index 00000000..391e4640
Binary files /dev/null and b/slides/sysdev-realtime/rt-patch-sizes.ods differ
diff --git a/slides/sysdev-realtime/rt-patch-sizes.png b/slides/sysdev-realtime/rt-patch-sizes.png
new file mode 100644
index 00000000..3feefe49
Binary files /dev/null and b/slides/sysdev-realtime/rt-patch-sizes.png differ
diff --git a/slides/sysdev-realtime/rt-preempt-options.png b/slides/sysdev-realtime/rt-preempt-options.png
deleted file mode 100644
index 5f5054af..00000000
Binary files a/slides/sysdev-realtime/rt-preempt-options.png and /dev/null differ
diff --git a/slides/sysdev-realtime/sysdev-realtime.tex b/slides/sysdev-realtime/sysdev-realtime.tex
index 2845f69d..12b67589 100644
--- a/slides/sysdev-realtime/sysdev-realtime.tex
+++ b/slides/sysdev-realtime/sysdev-realtime.tex
@@ -1,4 +1,4 @@
-\section{Real-time in embedded Linux systems}
+options\section{Real-time in embedded Linux systems}
 
 \subsection{Introduction}
 
@@ -339,7 +339,7 @@
     reaction to user input.
   \item Adds explicit rescheduling points throughout kernel code.
   \item Minor impact on throughput.
-  \item Still used in: Ubuntu Desktop 17.04
+  \item Still used in: Ubuntu Desktop 20.04
   \end{itemize}
 \end{frame}
 
@@ -416,41 +416,25 @@
   \end{itemize}
 \end{frame}
 
+\subsection{PREEMPT\_RT patchset specifics}
+
 \begin{frame}
-  \frametitle{Ongoing work on the PREEMPT\_RT patchset}
-  \begin{itemize}
-  \item Before Oct. 2015: project stalled because of the lack of funding.
-        Thomas Gleixner still the maintainer but lacked time for further
-        development and mainlining efforts. Patch releases only made
-        for specific kernel releases.
-  \item Oct. 2015: the Linux Foundation at last got funding
-        for mainlining the patchset into the Linux kernel (see
-        \url{http://lwn.net/Articles/659193/}).
-  \item Since then, the mainlining effort continues and further kernel
-        releases are supported.
-  \end{itemize}
+  \frametitle{New real-time preemption option (1)}
+  The PREEMPT\_RT patchset adds one new level of preemption, \code{CONFIG_PREEMPT_RT}:
+  \begin{center}
+    \includegraphics[height=0.4\textheight]{slides/sysdev-realtime/preempt-rt-option.png}
+  \end{center}
 \end{frame}
 
-\subsection{PREEMPT\_RT specifics}
-
 \begin{frame}
-  \frametitle{New real-time preemption options}
-  The PREEMPT\_RT patchset adds two new levels of preemption:
-  \begin{itemize}
-    \item \code{CONFIG_PREEMPT_RTB}:\\
-    Roughly all PREEMPT\_RT features except sleeping spinlocks.\\
-    Useful for debugging.
-    \item \code{CONFIG_PREEMPT_RT_FULL}:\\
-    All PREEMPT\_RT features
-  \end{itemize}
+  \frametitle{New real-time preemption option (2)}
   \begin{center}
-    \includegraphics[height=0.4\textheight]{slides/sysdev-realtime/rt-preempt-options.png}
+    \includegraphics[width=\textwidth]{slides/sysdev-realtime/preempt-rt-option-help.png}
   \end{center}
-  
 \end{frame}
 
 \begin{frame}
-  \frametitle{{\tt CONFIG\_PREEMPT\_RT\_FULL} (1)}
+  \frametitle{{\tt CONFIG\_PREEMPT\_RT} (1)}
   This level of preemption replaces all kernel spinlocks by
   mutexes (or so-called sleeping spinlocks)
   \begin{itemize}
@@ -468,9 +452,9 @@
 \end{frame}
 
 \begin{frame}
-  \frametitle{{\tt CONFIG\_PREEMPT\_RT\_FULL} (2)}
+  \frametitle{{\tt CONFIG\_PREEMPT\_RT} (2)}
   \begin{itemize}
-  \item With \code{CONFIG_PREEMPT_RT_FULL}, virtually all kernel code
+  \item With \code{CONFIG_PREEMPT_RT}, virtually all kernel code
     becomes preemptible
     \begin{itemize}
     \item An interrupt can occur at any time, when returning from the
@@ -498,9 +482,10 @@
     \item Best to have a board supported by the mainline kernel,
       otherwise the PREEMPT\_RT patch may not apply and may require
       some adaptations
+    \item Similarly, only long term stable releases of the kernel
+      are supported, currently: 5.4, 4.19, 4.14, 4.9, 4.4.
+      This is yet another advantage of using an LTS kernel release!
     \end{itemize}
-  \item Not all releases of the Linux kernel are supported.
-      Most recent: 4.14, 4.16, 4.18, 4.19, 5.0, 5.2, 5.4, 5.6
   \item Quick set up:
     \begin{itemize}
     \item Download the latest PREEMPT\_RT patch\\
@@ -517,7 +502,7 @@
   \begin{itemize}
   \item In the kernel configuration, be sure to enable
     \begin{itemize}
-    \item \code{CONFIG_PREEMPT_RT_FULL}
+    \item \code{CONFIG_PREEMPT_RT}
     \item High-resolution timers
     \end{itemize}
   \item Compile your kernel, and boot
@@ -528,6 +513,54 @@
   \end{itemize}
 \end{frame}
 
+\begin{frame}
+  \frametitle{PREEMPT\_RT mainlining status (1)}
+  \begin{itemize}
+  \item The project is making good progress since it got funding from
+        the Linux foundation in 2015.
+  \item However, a reduction of the size of the PREEMPT\_RT patchset
+        is not really visible yet:\\
+    \vfill
+    \includegraphics[width=0.8\textwidth]{slides/sysdev-realtime/rt-patch-sizes.png}
+  \end{itemize}
+\end{frame}
+
+\begin{frame}
+  \frametitle{PREEMPT\_RT mainlining status (2)}
+  \begin{itemize}
+  \item However, the mainline Linux kernel is a moving target too,
+        introducing new issues for real-time (such as disabling preemption in
+        BPF... see \url{https://lwn.net/Articles/802884/}).
+  \item A major achievement though in Linux 5.3: the
+        \code{CONFIG_PREEMPT_RT} configuration option is now in mainline, though
+        it cannot be selected yet (missing dependencies). This
+        simplifies further mainlining work.
+  \item See the latest status presentations:
+        \begin{itemize}
+	\item PREEMPT\_RT: status and Q\&A, Thomas Gleixner, Linux Plumbers 2019\\
+        Video: \url{https://youtu.be/bpyFQJV5gCI?t=8489}
+	\item State of PREEMPT\_RT - Sebastian Andrzej Siewior, Real-time Linux Summit 2019\\
+        {\footnotesize \url{https://bristot.me/wp-content/uploads/2019/11/rtls2019_07_rt_status.pdf}}
+        \end{itemize}
+  \end{itemize}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Useful resources}
+  About real-time support in the standard Linux kernel
+  \begin{itemize}
+  \item Real-Time is coming to Linux - What does that mean for you, Steven Rostedt, VMWare, ELCE 2018\\
+	\url{https://www.elinux.org/images/7/7e/Rostedt-elc-eu-2018-rt-what-does-it-mean.pdf}\\
+	Video: \url{https://youtu.be/BxJm-Ujipcg}
+  \item Using SCHED\_DEADLINE - Steven Rostedt, ELCE 2016\\
+	{\small \url{https://elinux.org/images/f/fe/Using_SCHED_DEADLINE.pdf}}\\
+	Video: \url{https://youtu.be/TDR-rgWopgM}
+  \item The home page of the PREEMPT\_RT project:\\
+       \url{https://wiki.linuxfoundation.org/realtime/}
+  \item See also our books page.
+  \end{itemize}
+\end{frame}
+
 \subsection{Real-time application development with PREEMPT\_RT}
 
 \begin{frame}
@@ -922,20 +955,6 @@ cat /sys/kernel/tracing/tracing_max_latency
   \end{itemize}
 \end{frame}
 
-\begin{frame}
-  \frametitle{Useful reading}
-  About real-time support in the standard Linux kernel
-  \begin{itemize}
-  \item Real-Time is coming to Linux - What does that mean for you, Steven Rostedt, VMWare, ELCE 2018\\
-    	\url{https://www.elinux.org/images/7/7e/Rostedt-elc-eu-2018-rt-what-does-it-mean.pdf}\\
-    	Video: \url{https://youtu.be/BxJm-Ujipcg}
-  \item Using SCHED\_DEADLINE - Steven Rostedt, ELCE 2016\\
-	{\small \url{https://elinux.org/images/f/fe/Using_SCHED_DEADLINE.pdf}}
-	Video: \url{https://youtu.be/TDR-rgWopgM}
-  \item See also our books page.
-  \end{itemize}
-\end{frame}
-
 \subsection{Real-time extensions to the Linux kernel}
 
 \begin{frame}




More information about the training-materials-updates mailing list