1000 HZ Linux-Kernel notwendig, wenn ich einen tickless und hochauflösenden Timer habe?

13

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)?

Bob
quelle
Details zur Betriebssystemverteilung / Version?
Ewwhite
Ubuntu 11.10 64bit Server Linux 3.3 Kernel.
Bob
Sie haben viel Benutzermoduslast; Systemzeit ist vergleichsweise vernachlässigbar. Ich würde nicht vorschlagen, dort um Kernel-Tunables herum zu tanzen. Oder möchten Sie eine zeitnahe Planung erreichen?
Yrk
Sagen Sie also, wenn die Systemauslastung niedrig ist, hat dies keinen Einfluss auf die Reaktionsfähigkeit?
Bob

Antworten:

4

Ich versuche die Leistung auf meinem Server zu verbessern. Ich habe ein paar Prozesse, die wenig Jitter benötigen (weniger als 10 ms Varianz).

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:

  • Verwenden Sie 300 Hz oder sogar 1 kHz (PREEMPT) und verwenden Sie kein tickless
  • Verwenden Sie nice, schedtoolum die richtigen Prioritäten / Klassen gemäß Ihren Anforderungen zuzuweisen
  • Probieren Sie RT oder BFS aus
Poige
quelle
Was ist los mit tickless?
Bob
1
@Bob, es ist gut für das Energiesparen, aber wenn Sie sich für Latenz interessieren, wird empfohlen, es auszuschalten, zum Beispiel ck.kolivas.org/patches/bfs/bfs-configuration-faq.txt
poige
3

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

Koollman
quelle
3

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.

pruzinat
quelle