Ich versuche die Leistung auf meinem Server zu verbessern. Ich habe ein paar Prozesse, die wenig Jitter benötigen (weniger als 10 ms Varianz).
Ich habe eine durchschnittliche Belastung von 4 maximal auf einem i7-920 (4 physische Kerne, 8 mit HT). Es gibt ungefähr 10 Prozesse, die von 40% bis 90% eines Kernbenutzermodus reichen. Die Systemnutzung beträgt insgesamt 3%. Die maximale CPU-Auslastung beträgt 80%.
Wird das Einstellen des Kernels von 100 Hz auf 1000 Hz den Jitter verbessern, wenn bereits tickless und hochauflösende Timer eingestellt sind?
Diese Seite scheint darauf hinzudeuten, dass sie noch etwas tut. https://lkml.org/lkml/2009/4/28/401
Wie wäre es mit einem Wechsel von freiwillig (PREEMPT_VOLUNTARY) zu präemptibel (PREEMPT)?
linux
linux-kernel
Bob
quelle
quelle
Antworten:
Jede Echtzeit wird die Leistung nicht verbessern, da das gesamte System ruhiger läuft, aber tatsächlich ein bisschen langsamer. Mit anderen Worten, es geht um Durchsatz vs. Latenz. Wenn es wirklich das ist, was Sie brauchen, dann gibt es verschiedene Möglichkeiten:
nice
,schedtool
um die richtigen Prioritäten / Klassen gemäß Ihren Anforderungen zuzuweisenquelle
Wenn für Sie ein geringer Jitter wichtig ist, können Sie sowohl 1000 Hz als auch PREEMPT verwenden.
Wenn diese Prozesse wirklich zeitkritisch sind, werden Sie wahrscheinlich einige echtzeitorientiertere Patches / Kernel oder zumindest einige Planungsparameter auf Prozessebene wie rtprio benötigen.
Typische Anwendungen sind Audioserver , siehe zum Beispiel Ratschläge von jackaudio
quelle
1) Verwenden Sie Tickless nicht, es ist immer noch sehr experimentell und wird nur Entwicklern empfohlen, die daran arbeiten. Es soll auch beim Energiesparen helfen.
2) Ein vollständig präemtibles System soll die Reaktionsfähigkeit des Desktors erhöhen, während ein freiwilliges präemtibles System für den allgemeinen Gebrauch vorgesehen ist (Mischung aus Reaktionsfähigkeit und Durchsatz). Wenn Ihr Server über SMP (mehrere Kerne) verfügt, sollten Sie wahrscheinlich die Option "Nicht vorbelegen" wählen, da die meisten Arbeiten auf ihren Kernen und ohne Unterbrechungen ausgeführt werden, was in der Regel 1) Zeit in Anspruch nimmt 2) Papierkorb-Cache
3) 1000Hz ist ein Desktop-Wert, der Overhead verursacht, aber beispielsweise das Spielen von Spielen und anderen Dingen ermöglicht. 300 Hz ist ein Wert, der für Videos empfohlen wird (damit Inhalte neu geplant werden können und Sie trotzdem keine Frames verpassen), während 100 Hz den besten Durchsatz bieten (obwohl er nicht für Netzwerkinhalte mit niedriger Latenz ausgelegt ist).
Wenn Sie so stabil wie möglich sein möchten (ohne Verwendung von RT-Patches), sollten Sie Folgendes tun: Periodische Ticks (Stabilität), nicht vorgebbare (Stabilität) Timer-Frequenz (bis zu Ihnen, 1000 für die beste Reaktionsfähigkeit und niedrige Latenzen, 100 für bester Durchsatz, aber 10ms Auflösung auf dem Timer (zB läuft das Zeug mindestens 10ms)
Hoffe das hilft etwas.
quelle