summaryrefslogtreecommitdiff
path: root/realtime/rt-specialties
diff options
context:
space:
mode:
authorManuel Traut <manut@linutronix.de>2011-01-27 00:52:19 +0100
committerManuel Traut <manut@linutronix.de>2011-01-27 00:52:19 +0100
commit7e5883bbd6e699d1fcee0814c5a172d6348bd63c (patch)
tree3df8a00a9727ff0e2c020d2e07304fdb00c83e3d /realtime/rt-specialties
parent6fb0950420424ff27f6aa89429a763409b088ed6 (diff)
convert the rest to the new buildsys format
Signed-off-by: Manuel Traut <manut@linutronix.de>
Diffstat (limited to 'realtime/rt-specialties')
-rw-r--r--realtime/rt-specialties/Makefile4
-rw-r--r--realtime/rt-specialties/handout_rt-specialties_de.tex45
-rw-r--r--realtime/rt-specialties/pres_rt-specialties_de.tex24
3 files changed, 33 insertions, 40 deletions
diff --git a/realtime/rt-specialties/Makefile b/realtime/rt-specialties/Makefile
index 4663d52..d641258 100644
--- a/realtime/rt-specialties/Makefile
+++ b/realtime/rt-specialties/Makefile
@@ -1,7 +1,7 @@
all:
for pdf in `ls -1 *.tex` ; do \
- pdflatex $$pdf; \
- pdflatex $$pdf; \
+ TEXINPUTS=`pwd`/../..:.:..:$(TEXINPUTS) pdflatex $$pdf; \
+ TEXINPUTS=`pwd`/../..:.:..:$(TEXINPUTS) pdflatex $$pdf; \
done
clean:
diff --git a/realtime/rt-specialties/handout_rt-specialties_de.tex b/realtime/rt-specialties/handout_rt-specialties_de.tex
index 33dc9b6..54771ca 100644
--- a/realtime/rt-specialties/handout_rt-specialties_de.tex
+++ b/realtime/rt-specialties/handout_rt-specialties_de.tex
@@ -1,13 +1,8 @@
-\documentclass{lxarticle}
-\usepackage{german}
-\usepackage[utf8]{inputenc}
-\usepackage{lxheaders}
-\usepackage{lxextras}
+\input{confighandout}
+\subsection{RT\_PREEMPT}
-\begin{document}
-
-\section*{Anwendung des Preempt RT Patches}
-\subsection*{Besorgen und Anwenden des Patches}
+\subsubsection{Anwendung des Preempt RT Patches}
+\paragraph{Besorgen und Anwenden des Patches}
Preempt RT wird als Patch gegen den Mainline Linux Kernel gepflegt.
Unter:\newline
http://www.kernel.org/pub/linux/kernel/projects/rt sind die aktuellsten Patche
@@ -39,7 +34,7 @@ cd linux-2.6.29.5-rt21
ketchup -f --no-gpg 2.6.29.5-rt21
\end{lstlisting}
-\subsection*{Konfigurieren und Übersetzen eines Preempt RT Kernels}
+\paragraph{Konfigurieren und Übersetzen eines Preempt RT Kernels}
Die Konfiguration und das Übersetzen machen keinen Unterschied zu Linux ohne
Preempt RT Patch:
\begin{lstlisting}
@@ -83,8 +78,9 @@ make O=../build modules
make O=../build install
make O=../build modules_install
\end{lstlisting}
-\section*{Testen eines Preempt RT Systems}
-\subsection*{RT Tests}
+
+\subsubsection{Testen eines Preempt RT Systems}
+\paragraph{RT Tests}
Die RT Tests sind eine Sammlung von Programmen, zur Validierung der
Eigenschaften von Echtzeitsystemen. Die RT Tests umfassen folgende Tools:
\begin{itemize}
@@ -104,7 +100,7 @@ git-clone git://git.kernel.org/pub/scm/linux/kernel\
cd rt-tests
make
\end{lstlisting}
-\subsection*{Cyclictest}
+\subparagraph{Cyclictest}
Cyclictest ist die wohl meistgenutzte Testsoftware auf Preempt RT Systemen. Mit
Cyclictest kann eine bestimmte Anzahl von Timertasks mit einem definierten
Interval aufgesetzt werden. Für diese Tasks wird kontinuierlich die Abweichung
@@ -128,7 +124,7 @@ T: 1 ( 2122) P:79 I:2500 C: 1007 Min: 47 Act: 76 Avg: 77 Max: 130
T: 2 ( 2123) P:78 I:3000 C: 841 Min: 54 Act: 76 Avg: 82 Max: 136
T: 3 ( 2124) P:77 I:3500 C: 723 Min: 67 Act: 95 Avg: 96 Max: 177
\end{lstlisting}
-\subsection*{Lastszenarien}
+\paragraph{Lastszenarien}
Um eine Aussage über das Echtzeitverhaltens treffen zu können, interessiert in
der Hauptsache das Verhalten in Worst-Case Szenarien (hohe CPU Last, hohe
Interruptlast). Ein ausgezeichnetes Werkzeug, um CPU Last zu erzeugen, ist
@@ -142,7 +138,7 @@ Rechner erzeugen. Ein Floodping schickt eine große Anzahl von ICMP Paketen in
kurzer Zeit. Dies erzeugt eine hohe Anzahl von Netzwerkinterrupts. Um Floodpings
zu generieren muß das Programm ping mit Rootrechten und mit der Option -f
ausgeführt werden.
-\subsection*{Pitfall}
+\subparagraph{Pitfall}
Ein sehr häufig gemeldetes Phänomen bei Testläufen von Cyclictest mit einem
Floodping als Lastszenario, sind extrem große Ausreißer in der Größenordnung von
50ms. Dies ist auf ein ''Feature'' aktueller Preempt RT Kernel zurückzuführen.
@@ -166,8 +162,8 @@ Zum Deaktivieren dieser Funktion muß Folgendes getan werden:
\begin{lstlisting}
echo -1 > /proc/sys/kernel/sched_rt_runtime_us
\end{lstlisting}
-\section*{Erstellen einer Realtime Task für Preempt RT}
-\subsection*{Schedulingklassen / Prioritäten}
+\subsubsection{Erstellen einer Realtime Task für Preempt RT}
+\paragraph{Schedulingklassen / Prioritäten}
Eine Realtime Applikation auf Preempt RT ist eine POSIX Realtime Applikation.
POSIX sieht für Echtzeitapplikationen folgende Schedulingstrategien vor:
\begin{itemize}
@@ -176,7 +172,7 @@ POSIX sieht für Echtzeitapplikationen folgende Schedulingstrategien vor:
\end{itemize}
Echtzeitpriorität bekommt eine Applikation nur dann, wenn dies explizit
gewünscht wird. Hierzu ist die Funktion sched\_setscheduler() vorgesehen.
-\subsection*{Beispiel einer Echtzeitapplikation}
+\paragraph{Beispiel einer Echtzeitapplikation}
Das folgende Beispiel zeigt eine einfache POSIX Realtimeapplikation:
\begin{lstlisting}
/*
@@ -239,8 +235,8 @@ undeterministisches Zeitverhalten verursachen
Eine Ausgezeichnete Einführung zum Erstellen von Echtzeitapplikationen und zur
Verwendung von Preempt RT findet sich unter:\newline
http://rt.wiki.kernel.org
-\subsection*{Tracing / Latenzen aufspüren}
-\subsubsection*{FTrace}
+\paragraph{Tracing / Latenzen aufspüren}
+\subparagraph{FTrace}
Ein hervorragendes Werkzeug, um kernelseitige Codepfade aufzuspüren, die lange
Latenzzeiten verursachen, ist Ftrace. Ftrace wird über DebugFS, einem virtuellen
Dateisystem, gesteuert und platziert dort auch seine Ausgaben. Die einfachste
@@ -248,7 +244,7 @@ Methode, FTrace zu verwenden ist Cyclictest. Cyclictest biete bereits einige
Optionen, um FTrace zu steuern. Die Option -f schällt Cyclictests Ftrace
Support an, -b <max\_latency> veranlaßt Cyclictest, bei Überschreiten einer
maximalen Latenzzeit, abzubrechen und einen Trace zu triggern.
-\subsubsection*{Kerneloptionen für FTrace}
+\subparagraph{Kerneloptionen für FTrace}
Um FTrace verwenden zu können, müssen beim Konfigurieren des Kernels einige
unter dem Menupunkt ''Kernel hacking-->Tracers'' einige Optionen aktiviert werden:
\begin{itemize}
@@ -257,7 +253,7 @@ unter dem Menupunkt ''Kernel hacking-->Tracers'' einige Optionen aktiviert werde
Tracetyp kann cyclictest über die Commandline mitgegeben werden, siehe
cyclictest -h. Default ist der Event Tracer)
\end{itemize}
-\subsubsection*{Beispiel eines Traces}
+\subparagraph{Beispiel eines Traces}
Das Erstellen eines Traces mit cyclictest läßt sich am Besten mit einem Beispiel
erläutern:
\begin{lstlisting}
@@ -292,7 +288,7 @@ IRQ-129-772 [000] 4154503386.851234: timer_interrupt<-ret_from
[...]
\end{lstlisting}
-\subsection*{Kontrollfragen}
+\paragraph{Kontrollfragen}
\begin{itemize}
\item Welche Optionen sollten beim Übersetzen eines Preempt RT Kernels
mindestens gesetzt sein?
@@ -302,4 +298,5 @@ als Lastszenario? Wie kann dieser umgangen werden?
\item Welche 3 Schritte sind notwendig, um das deterministische Zeitverhalten
einer Applikation zu garantieren?
\end{itemize}
-\end{document}
+
+\input{tailhandout}
diff --git a/realtime/rt-specialties/pres_rt-specialties_de.tex b/realtime/rt-specialties/pres_rt-specialties_de.tex
index 046521d..85cf301 100644
--- a/realtime/rt-specialties/pres_rt-specialties_de.tex
+++ b/realtime/rt-specialties/pres_rt-specialties_de.tex
@@ -1,20 +1,11 @@
-\documentclass{beamer}
-\usetheme{linutronix}
-\usepackage{german}
-\usepackage[utf8]{inputenc}
-\usepackage{pgf}
-\usepackage{graphicx}
-\usepackage{lxextras}
-
-\title{Block \lq Anwendung des Preempt RT Patches\rq}
-\institute{Linutronix GmbH}
-
-\begin{document}
+\input{configpres}
+\title{\lq Anwendung des Preempt RT Patches\rq}
\maketitle
+\subsection{PREEMPT\_RT}
-% ----- Slide ------------------
+\subsubsection{Download und Anwenden}
\begin{frame}[fragile]
\frametitle{Besorgen und Anwenden des Preempt RT Patches}
\begin{lstlisting}
@@ -43,6 +34,7 @@ ketchup -f --no-gpg 2.6.29.5-rt21
\end{lstlisting}
\end{frame}
+\subsubsection{Konfiguration}
\begin{frame}[fragile]
\frametitle{Konfigurieren und Übersetzen eines Preempt RT Kernels}
\begin{overprint}
@@ -88,6 +80,7 @@ make O=../build modules_install
\end{overprint}
\end{frame}
+\subsubsection{Verifikation}
\begin{frame}
\frametitle{Testen eines Preempt RT Systems}
RT Tests:
@@ -133,6 +126,7 @@ cat /proc/sys/kernel/sched_rt_runtime_us
\end{figure}
\end{frame}
+\subsubsection{Applikationsentwicklung}
\begin{frame}
\frametitle{Echtzeitapplikationen mit Preempt RT}
\begin{columns}
@@ -190,6 +184,7 @@ void stack_prefault(void) {
\end{overprint}
\end{frame}
+\subsubsection{Tracing / Latency hunting}
\begin{frame}[fragile]
\frametitle{Tracing / Latency hunting}
\begin{itemize}
@@ -228,4 +223,5 @@ IRQ-129-772 [000] 4154503386.851189: task_setprio<-__rt_mut
[...]
\end{lstlisting}
\end{frame}
-\end{document}
+
+\input{tailpres}