Warum sollte sich jemand dafür entscheiden, den Low-Latency-Kernel nicht zu verwenden?

Warum sollte sich jemand dafür entscheiden, den Low-Latency-Kernel nicht zu verwenden?

Ich kann keine guten Informationen zu den rtLinux lowlatency-Kerneln finden.

Ich frage mich, warum jemandnichtSie möchten einen Kernel mit geringer Latenz verwenden.

Und es wäre auch großartig, wenn jemand die genauen Unterschiede nennen könnte.

Antwort1

Bei den verschiedenen Konfigurationen „generisch“, „niedrige Latenz“ (wie in Ubuntu konfiguriert) und RT („Echtzeit“) geht es darum, Durchsatz und Latenz auszugleichen. Generische Kernel bevorzugen Durchsatz gegenüber Latenz, die anderen bevorzugen Latenz gegenüber Durchsatz. Daher würden Benutzer, die mehr Durchsatz als niedrige Latenz benötigen, keinen Kernel mit niedriger Latenz wählen.

Im Vergleich zur generischen Konfiguration ändert der Low-Latency-Kernel die folgenden Einstellungen:

  • IRQs sind standardmäßig Threaded, was bedeutet, dass mehr IRQs (immer noch nichtalleIRQs können vorweggenommen werden, und sie können auch priorisiert und ihre CPU-Affinität gesteuert werden.
  • Preemption ist im gesamten Kernel aktiviert (CONFIG_PREEMPTanstattCONFIG_PREEMPT_VOLUNTARY);
  • DieLatenz-DebuggingTools werden aktiviert, sodass der Benutzer feststellen kann, welche Kernelvorgänge den Fortschritt blockieren.
  • Die Timerfrequenz ist eingestellt auf1000 Hzanstatt250 Hz.

RT-Kernel fügen hinzueine Reihe von Patcheszum Hauptkernel und ein paar weitere Konfigurationsoptimierungen. Der Zweck der meisten dieser Patches besteht darin, mehr Möglichkeiten für Präemption zu schaffen, indem Sperren entfernt oder aufgeteilt werden, und die Zeit zu reduzieren, die der Kernel mit der Verarbeitung unterbrechungsfreier Aufgaben verbringt (insbesondere indem die Protokollierungsmechanismen verbessert und weniger genutzt werden). Das Ziel all dessen ist es, dem Kernel zu ermöglichen,Termine einhalten,dhStellen Sie sicher, dass es nicht mit etwas anderem beschäftigt ist, wenn es etwas verarbeiten muss. Dies ist nicht dasselbe wie hoher Durchsatz oder geringe Latenz, aber das Beheben von Latenzproblemen ist hilfreich.

Die generischen Kernel, wie sie in den meisten Distributionen standardmäßig konfiguriert sind, sind als „vernünftiger“ Kompromiss konzipiert: Sie versuchen sicherzustellen, dass keine einzelne Aufgabe das System zu lange monopolisieren kann und dass Aufgaben relativ häufig wechseln können, ohne jedoch den Durchsatz zu beeinträchtigen – denn je mehr Zeit der Kernel damit verbringt, zu überlegen, ob er Aufgaben (innerhalb oder außerhalb des Kernels) wechseln soll, oder Interrupts zu verarbeiten, desto weniger Zeit kann das System als Ganzes mit „Arbeiten“ verbringen. Dieser Kompromiss ist nicht gut genug für latenzempfindliche Workloads wie Echtzeit-Audio- oder Videoverarbeitung: Für diese bieten Kernel mit niedriger Latenz geringere Latenzen auf Kosten eines gewissen Durchsatzes. Und für Echtzeitanforderungen entfernen die Echtzeitkernel so viele Blockierer mit niedriger Latenz wie möglich, auf Kosten eines höheren Durchsatzes.

Mainstream-Distributionen von Linux werden meist auf Servern installiert, wo Latenz traditionell nicht als so wichtig angesehen wurde (obwohl Sie dem möglicherweise widersprechen, wenn Sie eine Perzentil-Leistungsanalyse durchführen und Wert auf die Leistung im obersten Perzentil legen). Daher sind die Standardkernel recht konservativ. Desktop-Benutzer sollten wahrscheinlich die Kernel mit niedriger Latenz verwenden, wie in der Dokumentation des Kernels selbst vorgeschlagen wird. Tatsächlich gilt: Je mehr Kernel mit niedriger Latenz verwendet werden, desto mehr Feedback wird es zu ihrer Relevanz geben, was dazu beiträgt, allgemein anwendbare Verbesserungen in die Standard-Kernelkonfigurationen einzubringen; dasselbe gilt für die RT-Kernel (viele der RT-Patches sind irgendwann für den Mainstream-Kernel vorgesehen).

Diese Präsentation zum Themabietet ziemlich viel Hintergrund.

Seit Version 5.12 des Linux-Kernels„dynamische Präemption“kann aktiviert werden; dadurch kann das Standard-Preemption-Modell auf der Kernel-Befehlszeile überschrieben werden, mit dempreempt=Parameter. Dies unterstützt derzeit none(Server), voluntary(Desktop) und full(Desktop mit geringer Latenz).

Antwort2

Stephen Kitt hat die Konfigurationen und das Gleichgewicht sowie alle schönen technischen Parameter erläutert. Ich möchte nur eine kleine intuitive Unterscheidung anbieten:

  • Sie sind auf Safari und fahren mit einem Jeep durch das Gelände. Ihre Beute rennt. Wenn die Beute im Fadenkreuz ist, drücken Sie den Abzug und das Gewehr schießt - die Berechnung ist einfach - Beute im Fadenkreuz = Treffer, Beute nicht im Fadenkreuz = Fehlschuss - Sie brauchen dringendgeringe Wartezeit– dann erholen Sie sich, laden das Gewehr nach und suchen sich eine andere Beute – Sie brauchen weder besondere Geschwindigkeit noch Regelmäßigkeit.Latenzist Alles.

  • Sie konvertieren ein Video aus dieser Safari. Es ist langwierig, es dauert Stunden. Es ist Ihnen egal, wann ein bestimmtes Bild verarbeitet wird und ob einige Bilder mehr Zeit für die Verarbeitung benötigen als andere. Sie müssen den Prozess so schnell wie möglich abschließen - besserDurchsatzbedeutet weniger Stunden, alles andere ist nicht wichtig

  • Sie erhalten Telegraphie - nur kurze, lange und Leerzeichen - Morse ist leicht zu entziffern und Sie müssen nicht wissen, wann genau jeder Impuls begann oder endete, aber Sie brauchen eineGarantie, dass du tustnicht verpassenirgendeinen davon - Sie brauchenEchtzeit(es mag langsam sein, der Telegraph ist nicht so schnell, aber esmuss regelmäßig sein

In diesen drei Beispielen wählen Sie offensichtlich nur eines derLatenz,DurchsatzoderRegelmäßigkeit, wobei die anderen beiden geopfert werden - aus offensichtlichen Gründen. Und nur bei einem möchten Sie wirklich eine niedrige Latenz, wenn Sie nicht alle drei gleichzeitig haben können.

Antwort3

Für Laien ausgedrückt:

  • Wenn Sie Ihrem PC nicht regelmäßig Arbeit geben, ist der Low-Latency-Kernel das Richtige für Sie.
  • Wenn Sie Ihrem PC ständig CPU-intensive Aufgaben zuweisen, ist der generische Kernel das Richtige für Sie.
  • Wenn Sie Ihren PC nur gelegentlich zum Surfen, Abspielen von Videos, Musik usw. verwenden, ist eine niedrige Latenz das Richtige für Sie.
  • Beim Spielen besteht der theoretische Unterschied zwischen niedriger Latenz und allgemein darin, dass die niedrige Latenz in allen Szenarien außer einem gewinnen würde: Level-Laden. Dies hängt jedoch eher davon ab, ob Sie eine SSD haben oder nicht, und von der Qualität der SSD, da Ihre Basis-SSD mit 1-facher Geschwindigkeit arbeitet, während Ihre höchste PCI-Express-SSD 6-fach schneller ist. Eine herkömmliche Festplatte hat eine Geschwindigkeit von 0,1-fach. Eine SSD kann also 60-mal schneller sein als eine herkömmliche Festplatte.

Grundsätzlich erledigt der generische Kernel die meiste Arbeit in der kürzesten Zeit, während der Kernel mit niedriger Latenz dem PC die höchste Reaktionszeit beschert; vorausgesetzt, es treten keine Fehler im Kernel oder System auf.

Für die meisten Leute ist der Kernel mit niedriger Latenz am sinnvollsten. Wenn Sie Ihrem PC jedoch ständig viel Arbeit aufbürden, ist der generische Kernel das Richtige für Sie.

Anders ausgedrückt: Wenn Ihre CPU-Auslastung über alle Kerne 90 % der Zeit unter 60 % liegt, ist der Kernel mit niedriger Latenz das Richtige für Sie. Wenn Ihre CPU-Auslastung über alle Kerne hingegen 80 %, 90 % oder mehr der Zeit über 60 % liegt, ist der generische Kernel das Richtige für Sie.

Quiz: Welcher Kernel würde in einem Benchmark besser abschneiden? Solange die Latenz als Benchmark-Parameter ignoriert wird, gewinnt immer der generische Kern, aber eine niedrige Latenz ist wie ein Oktopus an Ihrer Seite, der bereit ist, Aufgaben zu delegieren.

Antwort4

Weil es einen Kompromiss gibt. Das Umschalten von Prozessen oder das Ein- und Ausschalten von Interrupts braucht Zeit. Wenn Sie den Scheduler beispielsweise mit 1000 Hz statt 250 Hz ausführen, haben Sie einen Timer-Interrupt und können Prozesse möglicherweise viermal so oft wechseln. Dadurch kann ein Prozess schneller reagieren, da er regelmäßiger ausgeführt werden kann. Als Mensch werden Sie jedoch wahrscheinlich keinen Unterschied bemerken (250 Hz bedeutet alle 4 ms, was bereits viel schneller ist als jede menschliche Reaktionszeit).

Die gesamte Verarbeitungsleistung bzw. der E/A-Durchsatz ist begrenzt und ein häufigerer Aufruf des Schedulers bedeutet nur, dass Sie einen Teil davon verschwenden.

verwandte Informationen