Gibt es Nachteile beim Ausführen von Prozessen mit Echtzeitpriorität ( chrt -f 99
)?
Meine Hypothese ist, dass dies in Kombination mit einer Affinität sicherstellt, dass jede Prävention meines Prozesses minimal ist und daher jeglicher Jitter (insbesondere Netzwerklatenz) minimiert wird - dies hilft nicht bei der Gesamtlatenz, aber in diesem Moment bin ich mehr befasst sich mit Jitter.
(Kernel: 2.6.16 / 3.0)
Antworten:
Der unmittelbarste Nachteil beim Ausführen eines Echtzeitprozesses besteht darin, dass der Prozess jeden anderen Prozess auf dem System leicht aushungern kann. Aus Ihrer Sicht ist das Ergebnis, dass der Computer nicht auf Tastatur, Maus und wahrscheinlich auf das Netzwerk reagiert, solange der Echtzeitprozess die CPU verwendet. Dies kann passieren, wenn etwas schief geht und der Prozess in eine Endlosschleife gerät, oder sogar vorübergehend, wenn der Prozess eine Langzeitberechnung startet, ohne regelmäßig auf Eingaben zu warten. (Führen Sie beispielsweise SETI @ home nicht mit Echtzeitpriorität aus.)
Ein einzelner Single-Thread-Prozess auf einer Multi-Core-CPU verursacht dieses Problem mit geringerer Wahrscheinlichkeit, da andere Kerne für den Prozess mit niedrigerer Priorität verwendet werden können. Wenn dieser Prozess jedoch untergeordnete Prozesse erstellt, erben diese dieselbe Echtzeitpriorität, sodass die Dinge außer Kontrolle geraten können, wenn Sie nicht vorsichtig sind.
Die
sched_setscheduler(2)
Manpage hat gute Ratschläge:Das sollte eine Shell auf der Konsole sein - nicht unter einem Xterm, es sei denn, Sie möchten auch X-Echtzeitpriorität zuweisen.
quelle