Ist es möglich, Jitter von einem Linux-Rechner zu entfernen, wenn ein einfaches single-threaded C ++ - Programm ausgeführt wird?

8

Ich mache verschiedene Experimente mit einer Ubuntu-Box, auf der Kernel 3.5.7 läuft. I Aufwärmen mein Benchmark-Code auf 10 Millionen Iterationen und dann mit der Zeit 90 Millionen Iterationen fortfahren. Trotzdem sehe ich folgenden Jitter:

%Vor%

Ich sehe schlechte Zeiten bei 0,01% meiner Iterationen. Ist es möglich, einen Linux-Kernel wirklich in Echtzeit zu machen? Gibt es noch etwas anderes im Kernel, das ich nicht kontrollieren kann?

%Vor%     
LatencyGuy 04.07.2015, 13:21
quelle

1 Antwort

6

Die kurze Antwort ist nein. Sie müssten alles andere, was der Kernel bietet, verwerfen, um zu garantieren, dass Ihr Code 100% Einschaltdauer erreicht.

Wenn Sie ein garantiertes Monopol auf der CPU haben wollen, müssen Sie ein Echtzeit-Betriebssystem verwenden, mit dem Sie alle Interrupts deaktivieren können. So etwas wie FreeRTOS oder VXWorks.

Der Tickless-Kernel ist für Energieeinsparungen im Leerlauf ausgelegt. Es ist nicht entworfen, um Interrupts vollständig zu deaktivieren. Alle IO-Devices fordern ständig Interrupts. Wenn Sie alle E / A-Treiber deaktiviert haben und alle Dienste, die in regelmäßigen Abständen aufwachen könnten, deaktiviert und deaktiviert haben, können Sie sich dem Jitter-freien Betrieb nähern. Aber dann hättest du einen Ziegelstein.

    
Mark Lakata 04.07.2015, 15:56
quelle