Was ist die Verwendung der Priorität "Echtzeit" für einen Prozess?

26957
Koen027

Wenn Sie einen Prozess auf Echtzeit setzen, verlangsamt sich Ihr Computer nach meiner Erfahrung auf ein Schneckentempo. Wozu dient diese Einstellung, wenn Ihr Computer dadurch unbrauchbar wird?

12
Wenn Sie einen Multi-Core-Prozessor oder ein Multi-Prozessor-System haben, können Sie die Affinität nur für einen Core festlegen. Auf diese Weise bleibt der Rest des Systems ansprechbar und Sie können den Rest der Vorteile eines Echtzeitprozesses genießen. Dies funktioniert natürlich nur gut für Prozesse, für die nur ein Kern erforderlich ist. AndrejaKo vor 12 Jahren 2

3 Antworten auf die Frage

7
Tom Wijsman

Genau das, was Sie beschreiben, führt den Prozess in Echtzeit aus, wodurch der Rest Ihres Computers auf ein Durchforstungsverfahren verlangsamt wird. In diesem Fall wird ihm eine höhere Priorität eingeräumt als alles andere. Dies ist nur für zeitkritische Anwendungen notwendig, die meisten Menschen sehen diese nicht in ihrem täglichen Leben ...

Einige sehr gebräuchliche Programme, z. B. Sound-Server (PulseAudio und JACK als zwei Linux-Beispiele), verwenden Threads mit Priorität in Echtzeit. grawity vor 12 Jahren 0
@ grawity: JACK ist kein Server, sondern nur ein Entwicklungskit. Beide sind plattformübergreifend. Ein guter Punkt ist jedoch, dass Audio-Sachen Echtzeitpriorität erfordern, aber ich habe von einem Windows 7-Standpunkt aus gesprochen, bei dem diese von Ihnen angegebenen Prozesse keine Echtzeitpriorität erhalten. Windows hat für diese Art von Prozessen jedoch den sogenannten Multimedia Class Scheduler ... Tom Wijsman vor 12 Jahren 0
Was ist dann "jackd", wenn nicht ein Sound-Server? (Nach allem, was ich bisher verstehe, arbeiten sowohl PA als auch JACK auf dieselbe Weise, dass sie sowohl einen Soundserver als auch eine Bibliothek / ein Kit für den Zugriff darauf bieten ...) grawity vor 12 Jahren 0
Das macht das Kit nicht plötzlich zu einem Server. Hier geht es um Prozesse, nicht um Threads ... Tom Wijsman vor 12 Jahren 0
Weitere Beispiele für Echtzeit-Apps sind medizinische Apps und direkt gesteuerte Robotik. Dinge, bei denen 10µs der Unterschied zwischen korrektem Betrieb und Ausfall ist (bei denen der Ausfall eines Roboters möglicherweise dazu führt, dass eine Klippe von einem Felsen abgestoßen wird oder ein Patient zu viel Strahlung ausgesetzt ist). ligos vor 12 Jahren 1
2
RLH

Dies mag unnötig erscheinen, aber wenn ein Prozess gestartet wird, können Parameter übergeben werden, die festlegen, dass der Prozess auf verschiedenen Prioritätsstufen ausgeführt wird. Der Task-Manager zeigt dies als optionale Einstellung an, da dies eine Option ist, die von der Software, die die Ausführung initiiert hat, für den Prozess festgelegt werden kann. Die meiste Software läuft unter einer "normalen" Stufe, gelegentlich werden jedoch einige angezeigt, die standardmäßig auf einer niedrigeren Stufe ausgeführt werden. Ich habe noch nie Software gesehen, die in einem überdurchschnittlichen Zustand startet.

Es ist auch erwähnenswert, dass es einen Fall gibt, in dem ein Prozess mit der höchsten Prioritätseinstellung ausgeführt werden kann und die Systemleistung nicht wesentlich zu beeinträchtigen scheint. Wenn zum Beispiel ein Prozess gestartet wird und ihm zugewiesen wird, nur an einem von beispielsweise 8 CPU-Kernen zu arbeiten, würde das Setzen der Prozesspriorität auf "Echtzeit" bedeuten, dass er einen Prozessor verbrauchen würde, so dass 7 für den Prozess übrig bleibt Betriebssystem und andere Software. In diesem Fall könnte die Ausführung in Echtzeit fast keine Auswirkungen auf das System haben, aber dem Prozess mit hoher Priorität einen vernünftigen Performance-Schub verleihen.

Ich würde fast nie empfehlen, einen Prozess manuell in "Echtzeit" aus dem System Manager festzulegen. Dies liegt daran, dass Sie die Ausführungseinstellungen für einen Prozess ändern, der möglicherweise für einen bestimmten Ausführungsstatus konzipiert wurde. Das Ändern der Ausführungspriorität kann in einigen Fällen zum Absturz der Anwendung führen. Wenn es sich um einen Datenschreibvorgang handelt, können Ihre Daten möglicherweise beschädigt werden!

Es gibt jedoch Fälle, in denen die Verwendung einer Einstellung für die maximale Ausführungspriorität für einen Prozess das Richtige ist, aber selbst dann sollten diese Prioritätseinstellungen von der steuernden Anwendung und nicht vom Endbenutzer über einen Systemverwaltungsdialog festgelegt werden.

Ich würde persönlich empfehlen, NIEMALS eine Aufgabenpriorität zu ändern, es sei denn, es ist Ihnen wirklich egal, ob sie abstürzt und die Aufgabe VOLLSTÄNDIG unkritisch ist. Wenn aus der Softwaredokumentation explizit hervorgeht, dass Sie den Prozess beschleunigen können, um eine sehr hohe Prozessorarbeit zu beschleunigen, wäre dies ebenfalls akzeptabel. Allerdings wäre ich etwas skeptisch, wenn ein Mechanismus aus dem Prozess kommt innerhalb der Anwendung wird nicht bereitgestellt.

Als persönliche Anekdote gibt es nur einen Prozess, den ich gelegentlich manuell ändere - Software-Komprimierungsanwendungen. Ich habe schon lange keine riesige Datei entpacken müssen, aber ich habe herausgefunden, dass ich, wenn ich in Eile bin ( ähm ungeduldig), die Prozesspriorität erhöhen und einen moderaten Performance- Anstieg erzielen kann. Da diese Anwendungen eine Arbeitsaufgabe starten und schließen, wenn sie abgeschlossen sind, muss ich mich nicht darum kümmern, die Prozessoreinstellungen zu löschen. Wenn die Anwendung mit dem Extrahieren der Daten fertig ist, wird sie von selbst beendet. Dies ist der einzige Zeitpunkt, zu dem es mir persönlich nützlich war, die Prozessorgeschwindigkeit durch das Systemmanagement zu steuern.

Als Programmierer kann ich unmöglich an eine Situation denken, in der ein Programm mit mehr Ressourcen zum Absturz bringen würde TheLQ vor 12 Jahren 1
Als Programmierer ja, aber das Festlegen eines Prozesses für die Ausführung auf einer bestimmten Ebene kann zu Problemen führen, insbesondere wenn die Software (möglicherweise sogar schlecht) mit anderen Prozessen gleichzeitig ausgeführt wurde. Meine Vorschläge stammen sowohl aus Erfahrung als auch aus dem Verständnis, dass nicht alle Benutzer Entwickler sind. Das Festlegen von Prioritäten für laufende Prozesse, die Sie nicht entwickelt haben, kann sicherlich zu unerwartetem Verhalten führen. Ich möchte niemanden erschrecken, aber ich möchte auch andere Benutzer nicht dazu anregen, sich mit den Prozesseinstellungen zu beschäftigen * wenn * die Möglichkeit besteht, dass ihre Änderungen schädlich sein könnten. RLH vor 12 Jahren 0
0
Keith R.

Ich verwende die Echtzeit-Priorität, um die Spiele auf meinem Nicht-Gaming-Laptop zu beschleunigen. Ich interessiere mich nicht für den Hintergrundprozess, wenn ich im Spiel bin, und es macht mir viel mehr Spaß, meine Prozessorleistung auf diese Weise zuzuteilen.