|
@@ -18,8 +18,8 @@ In this document, I give an overview of the \texttt{rtsched} \LaTeX
|
18
|
18
|
package, which can be used to easily draw chronograms (GANTT charts).
|
19
|
19
|
These diagrams are quite common in real-time scheduling research.
|
20
|
20
|
|
21
|
|
-The package depends on keyval and TikZ/PGF (versions 2.10 or greater), both widely
|
22
|
|
-available on any \TeX distribution.
|
|
21
|
+
|
|
22
|
+The package depends on keyval and TikZ/PGF (pgf version 2.10 or greater), both widely available on any \TeX distribution.
|
23
|
23
|
|
24
|
24
|
The drawing capabilities are completely based on TikZ. Thus, you can compile
|
25
|
25
|
a document that uses \texttt{rtsched} package with modern tools producing pdf document
|
|
@@ -88,6 +88,8 @@ Figure \ref{fig:ex1a}. Available periodic versions of the commands can be found
|
88
|
88
|
\verb+\TaskDeadline{i}{t}+ & \verb+\TaskNDeadline{i}{t}{p}{n}+ \\
|
89
|
89
|
\verb+\TaskArrDeadl{i}{t}{reld}+ & \verb+\TaskNArrDeadl{i}{t}{reld}{p}{n}+ \\
|
90
|
90
|
\verb+\TaskExecDelta{i}{t}{delta}+ & \verb+\TaskNExecDelta{i}{t}{delta}{p}{n}+\\
|
|
91
|
+ \verb+\TaskEnd{i}{t}+ & \verb+\TaskNEnd{i}{t}{p}{n}+\\
|
|
92
|
+
|
91
|
93
|
\hline
|
92
|
94
|
\end{tabular}
|
93
|
95
|
\caption{Table of periodic commands where p stands for the period and n for the number of instances}
|
|
@@ -185,6 +187,9 @@ from periods (the so-called \emph{constrained deadline tasks}).
|
185
|
187
|
\TaskNArrDead{1}{0}{4}{4}{5} % draws the arrivals and deadlines
|
186
|
188
|
\TaskNExecDelta{1}{0}{1}{4}{5} % draws executions (highest priority)
|
187
|
189
|
% for 5 instances of period 4
|
|
190
|
+
|
|
191
|
+ \TaskNEnd{1}{1}{4}{5} % draws 5 ends of job execution of period 4
|
|
192
|
+
|
188
|
193
|
|
189
|
194
|
% draws the arrival and deadline
|
190
|
195
|
\TaskNArrDead{2}{0}{6}{6}{3} % for 3 instances of period 6
|
|
@@ -193,7 +198,10 @@ from periods (the so-called \emph{constrained deadline tasks}).
|
193
|
198
|
\TaskExecution{2}{1}{4}
|
194
|
199
|
\TaskExecution{2}{6}{8}
|
195
|
200
|
\TaskExecution{2}{9}{10}
|
196
|
|
- \TaskExecution{2}{13}{16}
|
|
201
|
+ \TaskExecution{2}{13}{16}
|
|
202
|
+ \TaskEnd{2}{4}
|
|
203
|
+ \TaskEnd{2}{10}
|
|
204
|
+ \TaskEnd{2}{16}
|
197
|
205
|
\end{RTGrid}
|
198
|
206
|
|
199
|
207
|
\begin{verbatim}
|
|
@@ -202,15 +210,21 @@ from periods (the so-called \emph{constrained deadline tasks}).
|
202
|
210
|
\TaskNArrDead{1}{0}{4}{4}{5} % draws the arrivals and deadlines
|
203
|
211
|
\TaskNExecDelta{1}{0}{1}{4}{5} % draws executions (highest priority)
|
204
|
212
|
% for 5 instances of period 4
|
|
213
|
+
|
|
214
|
+ \TaskNEnd{1}{1}{4}{5} % draws 5 ends of job execution of period 4
|
205
|
215
|
|
206
|
216
|
\TaskNArrDead{2}{0}{6}{6}{3} % draws the arrival and deadline
|
207
|
217
|
% for 3 instances of period 6
|
|
218
|
+
|
208
|
219
|
|
209
|
220
|
% no simple formula for lowest priority, sorry!
|
210
|
221
|
\TaskExecution{2}{1}{4}
|
211
|
222
|
\TaskExecution{2}{6}{8}
|
212
|
223
|
\TaskExecution{2}{9}{10}
|
213
|
|
- \TaskExecution{2}{13}{16}
|
|
224
|
+ \TaskExecution{2}{13}{16}
|
|
225
|
+ \TaskEnd{2}{4}
|
|
226
|
+ \TaskEnd{2}{10}
|
|
227
|
+ \TaskEnd{2}{16}
|
214
|
228
|
\end{RTGrid}
|
215
|
229
|
\end{verbatim}
|
216
|
230
|
\caption{Using periodic commands to avoid repetitions}
|
|
@@ -288,7 +302,7 @@ It is also possible to visualise preempted tasks with a hatched fill
|
288
|
302
|
style. An example is in Figure~\ref{fig:resp-time} that uses command
|
289
|
303
|
\texttt{TaskRespTime}.
|
290
|
304
|
|
291
|
|
-\begin{figure}
|
|
305
|
+\begin{figure}[!htbp]
|
292
|
306
|
\centering
|
293
|
307
|
\begin{RTGrid}{2}{20}
|
294
|
308
|
|
|
@@ -332,6 +346,16 @@ style. An example is in Figure~\ref{fig:resp-time} that uses command
|
332
|
346
|
\label{fig:resp-time}
|
333
|
347
|
\end{figure}
|
334
|
348
|
|
|
349
|
+It is sometimes usefull to represent the end of a job execution, especially when jobs are preempted. In that case, you can use the following command:
|
|
350
|
+
|
|
351
|
+\begin{verbatim}
|
|
352
|
+\TaskEnd{i}{t}
|
|
353
|
+\end{verbatim}
|
|
354
|
+
|
|
355
|
+and its periodic version detailed in Table~\ref{tab:periodic_versions} that draw little circle(s) at the specified date(s). It works in the same way as \verb+\TaskArrival+ command and its us is shown in Figure~\ref{fig:ex1a}.
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
|
335
|
359
|
|
336
|
360
|
\subsection{Controlling visualization}
|
337
|
361
|
|
|
@@ -535,8 +559,8 @@ to highlight a portion of the schedule with \texttt{RTBox}:
|
535
|
559
|
|
536
|
560
|
Notice that the order with which the objects are drawn is exactly the
|
537
|
561
|
same as the order in which they are specified in the code, excepted
|
538
|
|
-for horizontal axes, arrivals and deadlines that are always drawn on the foreground.
|
539
|
|
- For example, in Figure \ref{fig:ex3a}, the executions of all the tasks are
|
|
562
|
+for horizontal axes, arrivals, deadlines and end of job execution that are always drawn on the foreground.
|
|
563
|
+For example, in Figure \ref{fig:ex3a}, the executions of all the tasks are
|
540
|
564
|
drawn on top of the box. You can try to move the \texttt{RTBox}
|
541
|
565
|
command at the end to see what happens.
|
542
|
566
|
|
|
@@ -568,7 +592,7 @@ following command:
|
568
|
592
|
\TaskExecution[color=white,execlabel=S]{3}{4}{5}
|
569
|
593
|
\end{verbatim}
|
570
|
594
|
|
571
|
|
-\begin{figure}
|
|
595
|
+\begin{figure}[!htbp]
|
572
|
596
|
\centering
|
573
|
597
|
\begin{RTGrid}[width=12cm]{3}{25}
|
574
|
598
|
\TaskArrDead{3}{0}{20}
|
|
@@ -616,6 +640,65 @@ following command:
|
616
|
640
|
\label{fig:ex4}
|
617
|
641
|
\end{figure}
|
618
|
642
|
|
|
643
|
+
|
|
644
|
+\subsection{Jitter}
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+Jitter is often represented as an interval drawned by an horizontal double arrowhead. As shown in the Figure~\ref{fig:interval}, you can define jitter or any other interval with the following command:
|
|
648
|
+
|
|
649
|
+\begin{verbatim}
|
|
650
|
+\TaskInterval{i}{t1}{t2}{label}
|
|
651
|
+\end{verbatim}
|
|
652
|
+
|
|
653
|
+This command draws an horizontal double arrowhead for the \texttt{i}-th task from \texttt{t1} to \texttt{t2} with the specified \texttt{label} in the middle.
|
|
654
|
+
|
|
655
|
+\begin{figure}[!htbp]
|
|
656
|
+ \centering
|
|
657
|
+ \begin{RTGrid}[nogrid=1, nosymbols=1 ,nonumbers=1]{3}{20}
|
|
658
|
+
|
|
659
|
+ \RowLabel{1}{$\tau_i$}
|
|
660
|
+ \TaskArrival{1}{0}
|
|
661
|
+ \TaskExecution{1}{1}{4}
|
|
662
|
+ \TaskDeadline{1}{7}
|
|
663
|
+
|
|
664
|
+ \RowLabel{2}{msg}
|
|
665
|
+ \TaskArrival{2}{0}
|
|
666
|
+ \TaskExecution{2}{4}{6}
|
|
667
|
+ \TaskDeadline{2}{8}
|
|
668
|
+ \TaskInterval{2}{0}{4}{$J_m$} % draws an interval between date 0 and 4 for task 2 with a label J_m
|
|
669
|
+
|
|
670
|
+ \RowLabel{3}{$\tau_j$}
|
|
671
|
+ \TaskArrival{3}{0}
|
|
672
|
+ \TaskExecution{3}{6}{9}
|
|
673
|
+ \TaskDeadline{3}{10}
|
|
674
|
+ \TaskInterval{3}{0}{6}{$J_j$} % draws an interval between date 0 and 6 for task 3 with a label J_j
|
|
675
|
+ \end{RTGrid}
|
|
676
|
+\begin{verbatim}
|
|
677
|
+ \begin{RTGrid}[nogrid=1, nosymbols=1 ,nonumbers=1]{3}{20}
|
|
678
|
+
|
|
679
|
+ \RowLabel{1}{$\tau_i$}
|
|
680
|
+ \TaskArrival{1}{0}
|
|
681
|
+ \TaskExecution{1}{1}{4}
|
|
682
|
+ \TaskDeadline{1}{7}
|
|
683
|
+
|
|
684
|
+ \RowLabel{2}{msg}
|
|
685
|
+ \TaskArrival{2}{0}
|
|
686
|
+ \TaskExecution{2}{4}{6}
|
|
687
|
+ \TaskDeadline{2}{8}
|
|
688
|
+ \TaskInterval{2}{0}{4}{$J_m$} % draws an interval between date 0 and 4 for task 2 with a label J_m
|
|
689
|
+
|
|
690
|
+ \RowLabel{3}{$\tau_j$}
|
|
691
|
+ \TaskArrival{3}{0}
|
|
692
|
+ \TaskExecution{3}{6}{9}
|
|
693
|
+ \TaskDeadline{3}{10}
|
|
694
|
+ \TaskInterval{3}{0}{6}{$J_j$} % draws an interval between date 0 and 6 for task 3 with a label J_j
|
|
695
|
+ \end{RTGrid}
|
|
696
|
+\end{verbatim}
|
|
697
|
+ \caption{Example with TaskInterval used to represent jitters}
|
|
698
|
+ \label{fig:interval}
|
|
699
|
+\end{figure}
|
|
700
|
+
|
|
701
|
+
|
619
|
702
|
\end{document}
|
620
|
703
|
%%% Local Variables:
|
621
|
704
|
%%% mode: latex
|