[FE training-materials-updates] Misc RT slide updates and improvements
Michael Opdenacker
michael.opdenacker at free-electrons.com
Sun Nov 8 16:25:23 CET 2015
Repository : git://git.free-electrons.com/training-materials.git
On branch : master
Link : http://git.free-electrons.com/training-materials/commit/?id=5eee1abffaef725aa31af95e46aaa4276002d499
>---------------------------------------------------------------
commit 5eee1abffaef725aa31af95e46aaa4276002d499
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date: Sun Nov 8 16:25:23 2015 +0100
Misc RT slide updates and improvements
Signed-off-by: Michael Opdenacker <michael.opdenacker at free-electrons.com>
>---------------------------------------------------------------
5eee1abffaef725aa31af95e46aaa4276002d499
...rity-inversion.dia => priority-inheritance.dia} | 196 ++++++++++-----------
slides/sysdev-realtime/sysdev-realtime.tex | 18 +-
2 files changed, 96 insertions(+), 118 deletions(-)
diff --git a/slides/sysdev-realtime/priority-inversion.dia b/slides/sysdev-realtime/priority-inheritance.dia
similarity index 82%
copy from slides/sysdev-realtime/priority-inversion.dia
copy to slides/sysdev-realtime/priority-inheritance.dia
index f4d2170..3987b9a 100644
--- a/slides/sysdev-realtime/priority-inversion.dia
+++ b/slides/sysdev-realtime/priority-inheritance.dia
@@ -145,7 +145,7 @@
<dia:point val="21,8"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="21,7.405;23.2775,8.1525"/>
+ <dia:rectangle val="21,7.26;22.965,8.2"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -178,7 +178,7 @@
<dia:point val="39.5,17.5"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="39.5,16.905;41.065,17.6525"/>
+ <dia:rectangle val="39.5,16.76;40.88,17.7"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -211,7 +211,7 @@
<dia:point val="26.75,15.075"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="24.815,14.655;26.75,15.7469"/>
+ <dia:rectangle val="25.1625,14.5525;26.75,15.7794"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
@@ -245,13 +245,13 @@ lock A#</dia:string>
<dia:point val="27,10"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="26.95,9.95;31.55,11.55"/>
+ <dia:rectangle val="26.95,9.95;31.0125,11.55"/>
</dia:attribute>
<dia:attribute name="elem_corner">
<dia:point val="27,10"/>
</dia:attribute>
<dia:attribute name="elem_width">
- <dia:real val="4.5"/>
+ <dia:real val="3.9624999999999986"/>
</dia:attribute>
<dia:attribute name="elem_height">
<dia:real val="1.5"/>
@@ -271,16 +271,16 @@ lock A#</dia:string>
</dia:object>
<dia:object type="Standard - Box" version="0" id="O7">
<dia:attribute name="obj_pos">
- <dia:point val="31.5,14.5"/>
+ <dia:point val="31.0625,10"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="31.45,14.45;35.55,16.05"/>
+ <dia:rectangle val="31.0125,9.95;36.7125,11.55"/>
</dia:attribute>
<dia:attribute name="elem_corner">
- <dia:point val="31.5,14.5"/>
+ <dia:point val="31.0625,10"/>
</dia:attribute>
<dia:attribute name="elem_width">
- <dia:real val="4"/>
+ <dia:real val="5.5999999999999943"/>
</dia:attribute>
<dia:attribute name="elem_height">
<dia:real val="1.5"/>
@@ -298,36 +298,7 @@ lock A#</dia:string>
<dia:boolean val="true"/>
</dia:attribute>
</dia:object>
- <dia:object type="Standard - Box" version="0" id="O8">
- <dia:attribute name="obj_pos">
- <dia:point val="35.5,11.5"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="35.45,11.45;40.05,13.05"/>
- </dia:attribute>
- <dia:attribute name="elem_corner">
- <dia:point val="35.5,11.5"/>
- </dia:attribute>
- <dia:attribute name="elem_width">
- <dia:real val="4.5"/>
- </dia:attribute>
- <dia:attribute name="elem_height">
- <dia:real val="1.5"/>
- </dia:attribute>
- <dia:attribute name="border_width">
- <dia:real val="0.10000000149011612"/>
- </dia:attribute>
- <dia:attribute name="border_color">
- <dia:color val="#cc1f1a"/>
- </dia:attribute>
- <dia:attribute name="inner_color">
- <dia:color val="#ffacac"/>
- </dia:attribute>
- <dia:attribute name="show_background">
- <dia:boolean val="true"/>
- </dia:attribute>
- </dia:object>
- <dia:object type="Standard - Line" version="0" id="O9">
+ <dia:object type="Standard - Line" version="0" id="O8">
<dia:attribute name="obj_pos">
<dia:point val="27,14.5"/>
</dia:attribute>
@@ -355,74 +326,54 @@ lock A#</dia:string>
<dia:connection handle="1" to="O6" connection="5"/>
</dia:connections>
</dia:object>
- <dia:object type="Standard - Line" version="0" id="O10">
+ <dia:object type="Standard - Text" version="1" id="O9">
<dia:attribute name="obj_pos">
- <dia:point val="31.5,11.5"/>
+ <dia:point val="30.425,10.6"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="31.1382,11.45;31.8618,14.6118"/>
- </dia:attribute>
- <dia:attribute name="conn_endpoints">
- <dia:point val="31.5,11.5"/>
- <dia:point val="31.5,14.5"/>
+ <dia:rectangle val="27.715,10.0775;30.425,11.3044"/>
</dia:attribute>
- <dia:attribute name="numcp">
- <dia:int val="1"/>
- </dia:attribute>
- <dia:attribute name="end_arrow">
- <dia:enum val="22"/>
- </dia:attribute>
- <dia:attribute name="end_arrow_length">
- <dia:real val="0.5"/>
- </dia:attribute>
- <dia:attribute name="end_arrow_width">
- <dia:real val="0.5"/>
- </dia:attribute>
- <dia:connections>
- <dia:connection handle="0" to="O6" connection="7"/>
- <dia:connection handle="1" to="O7" connection="0"/>
- </dia:connections>
- </dia:object>
- <dia:object type="Standard - Line" version="0" id="O11">
- <dia:attribute name="obj_pos">
- <dia:point val="35.5,14.5"/>
- </dia:attribute>
- <dia:attribute name="obj_bb">
- <dia:rectangle val="35.1382,12.8882;35.8618,14.55"/>
- </dia:attribute>
- <dia:attribute name="conn_endpoints">
- <dia:point val="35.5,14.5"/>
- <dia:point val="35.5,13"/>
- </dia:attribute>
- <dia:attribute name="numcp">
- <dia:int val="1"/>
- </dia:attribute>
- <dia:attribute name="end_arrow">
- <dia:enum val="22"/>
- </dia:attribute>
- <dia:attribute name="end_arrow_length">
- <dia:real val="0.5"/>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#Tries to
+acquire lock A#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.56444442272186279"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="30.425,10.6"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:composite>
</dia:attribute>
- <dia:attribute name="end_arrow_width">
- <dia:real val="0.5"/>
+ <dia:attribute name="valign">
+ <dia:enum val="3"/>
</dia:attribute>
- <dia:connections>
- <dia:connection handle="0" to="O7" connection="2"/>
- <dia:connection handle="1" to="O8" connection="5"/>
- </dia:connections>
</dia:object>
- <dia:object type="Standard - Text" version="1" id="O12">
+ <dia:object type="Standard - Text" version="1" id="O10">
<dia:attribute name="obj_pos">
- <dia:point val="31.225,10.6"/>
+ <dia:point val="33.625,12.525"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="28.0425,10.18;31.225,11.2719"/>
+ <dia:rectangle val="31.5937,12.0025;35.6562,14.3583"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
- <dia:string>#Tries to
-acquire lock A#</dia:string>
+ <dia:string>#Cannot be preempted
+by processes with
+intermediate
+priority#</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="Latin Modern Sans" style="0" name="Courier"/>
@@ -431,13 +382,13 @@ acquire lock A#</dia:string>
<dia:real val="0.56444442272186279"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="31.225,10.6"/>
+ <dia:point val="33.625,12.525"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
</dia:attribute>
<dia:attribute name="alignment">
- <dia:enum val="2"/>
+ <dia:enum val="1"/>
</dia:attribute>
</dia:composite>
</dia:attribute>
@@ -445,17 +396,18 @@ acquire lock A#</dia:string>
<dia:enum val="3"/>
</dia:attribute>
</dia:object>
- <dia:object type="Standard - Text" version="1" id="O13">
+ <dia:object type="Standard - Text" version="1" id="O11">
<dia:attribute name="obj_pos">
- <dia:point val="32.375,13.025"/>
+ <dia:point val="36.42,10.6075"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="31.7587,12.605;32.9913,13.1325"/>
+ <dia:rectangle val="31.2275,10.085;36.42,11.3119"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
- <dia:string>#Waits#</dia:string>
+ <dia:string>#Continues to run with inhe-
+rited priority, release lock#</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="Latin Modern Sans" style="0" name="Courier"/>
@@ -464,13 +416,13 @@ acquire lock A#</dia:string>
<dia:real val="0.56444442272186279"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="32.375,13.025"/>
+ <dia:point val="36.42,10.6075"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
</dia:attribute>
<dia:attribute name="alignment">
- <dia:enum val="1"/>
+ <dia:enum val="2"/>
</dia:attribute>
</dia:composite>
</dia:attribute>
@@ -478,17 +430,47 @@ acquire lock A#</dia:string>
<dia:enum val="3"/>
</dia:attribute>
</dia:object>
- <dia:object type="Standard - Text" version="1" id="O14">
+ <dia:object type="Standard - Box" version="0" id="O12">
<dia:attribute name="obj_pos">
- <dia:point val="36.975,14.15"/>
+ <dia:point val="36.76,9.985"/>
</dia:attribute>
<dia:attribute name="obj_bb">
- <dia:rectangle val="35.7425,13.73;38.2075,14.2575"/>
+ <dia:rectangle val="36.71,9.935;41.31,11.535"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="36.76,9.985"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="4.5"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="1.5"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0.10000000149011612"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#6a8954"/>
+ </dia:attribute>
+ <dia:attribute name="inner_color">
+ <dia:color val="#c5e387"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O13">
+ <dia:attribute name="obj_pos">
+ <dia:point val="40.145,10.6325"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="37.1925,10.11;40.145,11.3369"/>
</dia:attribute>
<dia:attribute name="text">
<dia:composite type="text">
<dia:attribute name="string">
- <dia:string>#Preempted#</dia:string>
+ <dia:string>#Acquires lock A
+and continues#</dia:string>
</dia:attribute>
<dia:attribute name="font">
<dia:font family="Latin Modern Sans" style="0" name="Courier"/>
@@ -497,13 +479,13 @@ acquire lock A#</dia:string>
<dia:real val="0.56444442272186279"/>
</dia:attribute>
<dia:attribute name="pos">
- <dia:point val="36.975,14.15"/>
+ <dia:point val="40.145,10.6325"/>
</dia:attribute>
<dia:attribute name="color">
<dia:color val="#000000"/>
</dia:attribute>
<dia:attribute name="alignment">
- <dia:enum val="1"/>
+ <dia:enum val="2"/>
</dia:attribute>
</dia:composite>
</dia:attribute>
diff --git a/slides/sysdev-realtime/sysdev-realtime.tex b/slides/sysdev-realtime/sysdev-realtime.tex
index 751edbb..c8e70ab 100644
--- a/slides/sysdev-realtime/sysdev-realtime.tex
+++ b/slides/sysdev-realtime/sysdev-realtime.tex
@@ -131,7 +131,8 @@
\begin{itemize}
\item The duration of these critical sections is unbounded
\end{itemize}
- \item Other possible source: shared interrupts
+ \item Other possible source: shared interrupts (not a real problem:
+ mustn't be used for time-critical interrupt-sources anyway).
\end{itemize}
\begin{center}
\includegraphics[width=0.9\textwidth]{slides/sysdev-realtime/spinlock.pdf}
@@ -347,7 +348,7 @@
reaction to user input.
\item Adds explicit rescheduling points throughout kernel code.
\item Minor impact on throughput.
- \item Used in: Ubuntu Desktop 13.04, Ubuntu Server 12.04
+ \item Used in: Ubuntu Desktop 15.04, Ubuntu Server 14.04
\end{itemize}
\end{frame}
@@ -373,12 +374,7 @@
\begin{itemize}
\item One classical solution to the priority inversion problem is
called priority inheritance
- \begin{itemize}
- \item The idea is that when a task of a low priority holds a lock
- requested by a higher priority task, the priority of the first
- task gets temporarily raised to the priority of the second task:
- it has inherited its priority.
- \end{itemize}
+ \includegraphics[width=0.9\textwidth]{slides/sysdev-realtime/priority-inheritance.pdf}
\item In Linux, since 2.6.18, mutexes support priority inheritance
\item In user space, priority inheritance must be explicitly enabled
on a per-mutex basis.
@@ -512,9 +508,9 @@
otherwise the PREEMPT\_RT patch may not apply and may require
some adaptations
\end{itemize}
- \item At the moment, only "even" releases of the Linux kernel are
- supported: 3.0, 3.2, 3.4, 3.6, 3.8, 3.10, 3.12, 3.14.
- \item Quick set up
+ \item Not all releases of the Linux kernel are supported.
+ Currently: 3.0, 3.2, 3.4, 3.6, 3.8, 3.10, 3.12, 3.14, 3.18, 4.0, 4.1
+ \item Quick set up:
\begin{itemize}
\item Download the latest PREEMPT\_RT patch\\
from \footnotesize \url{http://www.kernel.org/pub/linux/kernel/projects/rt/} \normalsize
More information about the training-materials-updates
mailing list