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%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.
Tags und Links optimization c++ benchmarking performance real-time