Warum sollte man einen Kernel mit niedriger Latenz gegenüber einem generischen oder einem Echtzeitkernel wählen?

105

Nach der Installation von Ubuntu Studio 12.04 stellte ich fest, dass es einen Kernel mit niedriger Latenz verwendet. Ich suchte, warum und wie ich zu einer Echtzeit- oder einer allgemeinen Version zurückkehren kann. Aber es sieht so aus, als wäre dieser Teil von Linux nicht so ausführlich behandelt worden.

F: Warum sollte man einen Kernel mit niedriger Latenz gegenüber einem allgemeinen oder einem Echtzeitkernel wählen?

PS: Ich habe die Antworten von dieser Frage und diesem Beitrag bereits gelesen .

Starx
quelle
3
+1, weil es eine ziemlich gute Frage sein muss, wenn alle ratlos sind. Ich kenne den Unterschied zwischen dem Kernel mit niedriger Latenz, dem generischen Kernel und dem Echtzeitkernel immer noch nicht. Wenn -realtimees Echtzeit ist, wofür steht dann -rt? Und was ist mit dem -preemptKernel los? Ich danke gemue2010, er hat es ziemlich gut erklärt, aber es erklärt immer noch nicht alles.
Hitechcomputergeek

Antworten:

61

Mit den folgenden einfachen Richtlinien können Sie nachvollziehen, welcher Kernel in welcher Reihenfolge für Ihren Anwendungsfall getestet werden sollte.

  • Wenn Sie für Ihr System keine geringe Latenzzeit benötigen, verwenden Sie bitte den generischen Kernel.
  • Wenn Sie ein System mit geringer Latenz benötigen (z. B. zum Aufnehmen von Audio), verwenden Sie bitte den Kernel -preempt als erste Wahl. Dadurch wird die Latenz verringert, die Energiesparfunktionen werden jedoch nicht beeinträchtigt. Es ist nur für 64-Bit-Systeme verfügbar (auch als amd64 bezeichnet).
  • Wenn der Kernel -preempt nicht genügend niedrige Latenz für Ihre Anforderungen bietet (oder Sie ein 32-Bit-System haben), sollten Sie den Kernel -lowlatency ausprobieren.
  • Wenn der -lowlatency-Kernel nicht ausreicht, sollten Sie den -rt-Kernel ausprobieren
  • Wenn der -rt-Kernel für Sie nicht stabil genug ist, sollten Sie den -realtime-Kernel ausprobieren

Ubuntu Help Source

Es kommt also darauf an, was Sie mit Ihrer Studiodistribution machen. Für die meisten Benutzer, die eine schnelle Antwortzeit für Endbenutzer benötigen, ist die Verwendung von generischem Code ausreichend. Für andere Benutzer, die eine professionelle Videobearbeitung ausführen müssen, ist der Echtzeitkernel nicht akzeptabel.

Lesen Sie diesen Link , um einen ausführlicheren, leicht verständlichen Blog-Beitrag zu erhalten

Ubuntu Fan
quelle
1
Ich habe den vorherigen Artikel, den Sie gepostet haben, bereits gelesen. Inwiefern sind diese Fakten in etwa zuverlässig?
Starx
Naja die dort genannten Tests sprechen für sich. Wenn sich das Ubuntu-Team zunächst für Latenz entschieden hat, muss dies ein Grund dafür sein. SO wollten Sie die Unterschiede kennen, jetzt tun Sie. Problem gelöst ?
Ubuntu Fan
5
Nein. Ich glaube nicht, dass das Problem gelöst ist. Wenn deine Antwort etwas bewirkt, steigert sie meine Neugier mehr.
Starx
9
Trifft dies auch 2015 noch zu? Der -preempt, -rtund -realtimeKern nicht-mehr existieren
naught101
51

Ich bin der Autor des Blogposts, der von ubuntu fan verlinkt wurde: http://sevencapitalsins.wordpress.com/2007/08/10/low-latency-kernel-wtf/

Dieser Blogbeitrag enthält keine Fakten, sondern nur eine Theorie . Eigentlich funktioniert es so: Der Prozessor "stoppt" häufiger, um festzustellen, ob einige Prozesse sofort ausgeführt werden müssen. Das bedeutet, dass diese Prozesse vor den anderen ausgeführt werden, sodass Sie beim Codieren keine Frames überspringen oder große Verzögerungszeiten zwischen Mausklicks und Feindtod haben. Dies bedeutet nicht, dass alle Prozesse früher beendet werden: Tatsächlich verliert die CPU einen größeren Teil ihrer Zeit, um zu entscheiden, welcher Prozess als nächstes ausgeführt wird, und um den Kontext zu wechseln. Die Gesamtausführungszeit ist also länger, und aus diesem Grund wird auf Webserver- oder Datenbankcomputern kein zulässiger Kernel ausgeführt. Für Gameserver ist ein 300-Hz- (oder sogar 1000-Hz-) Kernel am besten geeignet.

Aber heutzutage haben Prozessoren viele Kerne, und wenn es nur wenige Prozesse gibt, die Aufmerksamkeit erfordern, können sie leicht einem anderen Kern zugewiesen werden, anstatt darauf zu warten, dass ein Kern diesen benötigt.

(stackexchange erfordert Referenzen / persönliche Erfahrung: Ich bin ein Elektronikingenieur und ein blutrünstiger Noobgamer, der mehrere Gameserver unter http://www.gamezoo.it betreut. )

Als Faustregel würde ich also sagen: Wenn Ihr Prozessor ein leistungsstarker Quad-Core-Hochfrequenzprozessor ist und Sie normalerweise nicht tonnenweise Webseiten öffnen, während Sie kodieren / dekodieren / spielen (huh), könnten Sie das Probieren Sie einfach den generischen (oder i686- oder amd64-, falls vorhanden) Kernel aus und erzielen Sie den höchstmöglichen Durchsatz (dh den Rohwert, zu dem der Prozessor in der Lage ist). Wenn Sie auf Probleme stoßen (diese sollten eigentlich geringfügig sein) oder Ihre Maschine etwas weniger leistungsstark ist als die Spitze des Marktes, gehen Sie auf -preempt.

Wenn Sie sich auf einem Low-End-Computer mit nur einem oder zwei Kernen befinden, probieren Sie die -Langsamkeit aus. Sie können auch die -realtime ausprobieren, aber Sie werden feststellen, dass sie dazu neigt, Prozesse zu blockieren, bis die "Echtzeit" -Prozesse ihre Arbeit beendet haben. Ich glaube, der Echtzeit-Kernel ist nicht der "Vanille" -Kernel, aber der CONFIG_PREEMPT_RT-Patch wurde angewendet. Ich denke, dass Echtzeit-Kernel nur für diejenigen gedacht sind, die eine einzige Anwendung auf eingebetteten Systemen erstellen müssen. Daher sollten normale Desktop-Benutzer keine wirklichen Vorteile haben, da sie normalerweise eine ganze Reihe von Anwendungen gleichzeitig ausführen.

Die wichtigsten Kernel-Optionen, wenn Sie Ihren Kernel selbst neu kompilieren möchten, um einen Desktop mit geringer Latenz zu erhalten, sind:

PREEMPT=y

und:

CONFIG_1000_HZ=y

Um etwas Energie zu sparen, können Sie dies ankreuzen:

CONFIG_NO_HZ=y
Sieben
quelle
Ich habe bemerkt, dass Sie die Wartung von Servern erwähnt haben. Ich versuche, den besten Kernel für Ventilquellen-dedizierte Server (CSGO-spezifisch) zu finden. Die meisten CS-Threads, die ich finde, beziehen sich auf goldsrc, das einen 1000-Hz-Kernel benötigte. Ist die niedrige Latenz bei srcds schlecht? Wenn es keine Rolle spielt, halte ich mich einfach an die niedrige Latenz, da ich sie gerade habe (ich isoliere die CPU-Kerne für 128-Tick-Srcds-Server, da sie sowieso nicht wirklich vom Multithreading profitieren).
Vincent De Smet
Nützlich, um diese Tipps zu kennen, ich werde völlig auf preempt wechseln. Ich habe es nicht so eilig, dass ich möchte, dass mein Kernel sich wie ein dreckiger Pirat verhält.
userDepth
4

Aus dem oben zitierten Dokument ( http://www.versalogic.com/mediacenter/whitepapers/wp_linux_rt.asp )

  1. Ein weiches Echtzeitsystem reduziert die durchschnittliche Latenz, garantiert jedoch keine maximale Reaktionszeit.
  2. Ein hartes Echtzeitsystem hält die gewünschten Fristen zu jeder Zeit ein (100 Prozent), auch unter der Last eines Worst-Case-Systems.
  3. Laut Yaghmour [4] geht es in Echtzeit um Garantien und nicht um Geschwindigkeit.

In dem Artikel heißt es, dass ein Echtzeit-Kernel, der nicht ansprechbar oder zeitgebunden ist, die wichtigste Eigenschaft ist. Daher verzögern sie manchmal nicht kritische Aktivitäten, die zu Verzögerungen führen. Bei einer niedrigen Latenz oder einem anderen Echtzeit-Kernel wird jedoch versucht, die allgemeine Latenz zu verringern, was in den meisten Fällen hilfreich ist. Aufgrund der reduzierten Latenz scheint das System schnell zu sein. Lesen Sie den Artikel sorgfältig.

Mayank Suman
quelle
Das stimmt, aber wir müssen wissen, welche Kernelvariante zu welcher Echtzeitsystem- „Härte“ passt.
Melebius
0

Ich habe diesen alten Laptop mit Dual AMD A6-4400M bei 1600MHz, den ich sparsam benutze, wenn ich nicht im Büro bin, hauptsächlich, um E-Mails zu lesen und gelegentliche Websites zu durchsuchen. Möglicherweise hing etwas mit Softwareupdates zusammen, was dazu führt, dass es nicht mehr reagiert. Etwa ein Dutzend Zeichen eingeben, ohne das erste zu sehen. Oft fragt das Widget, ob ich einen Prozess zwangsweise beenden soll.

Nach dem sudo apt-get install linux-lowlatencyNeustart wurde es reibungslos und reaktionsschnell. (uname -r 5.0.0-20-lowlatency.) Wunderbar, ich hätte vor Jahren wechseln sollen. Lassen Sie mich Sevens Antwort betonen: Wenn Sie nicht das Maximum aus einem Server herausholen möchten, der Zahlen drückt, versuchen Sie es mit -preempt !

Ale
quelle