Wozu dient die Priorität "Echtzeit" für einen Prozess?

12

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

Koen027
quelle
2
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 reaktionsschnell und Sie können den Rest der Vorteile eines Echtzeitprozesses nutzen. Dies funktioniert natürlich nur bei Prozessen, für die nur ein Kern erforderlich ist.
AndrejaKo

Antworten:

7

Genau das, was Sie beschreiben, führt den Prozess in Echtzeit aus und gibt ihm eine höhere Priorität als alles andere. Dies ist nur für zeitkritische Anwendungen erforderlich, die die meisten Menschen in ihrem täglichen Leben nicht sehen ...

Tamara Wijsman
quelle
Einige sehr verbreitete Programme, wie z. B. Soundserver (PulseAudio und JACK als zwei Linux-Beispiele), verwenden Echtzeit-Prioritätsthreads.
user1686
@grawity: JACK ist kein Server, sondern nur ein Development Kit. Beide sind plattformübergreifend. Ein guter Punkt, dass Audio-Inhalte Echtzeitpriorität erfordern, aber ich sprach von einem Windows 7-Standpunkt, bei dem diese von Ihnen angegebenen Prozesse keine Echtzeitpriorität erhalten. Windows hat jedoch einen so genannten Multimedia-Klassenplaner für diese Art von Prozessen ...
Tamara Wijsman
Was ist jackddann, wenn kein Soundserver? (Soweit ich weiß, arbeiten sowohl PA als auch JACK auf dieselbe Weise, indem sie sowohl einen Soundserver als auch eine Bibliothek / ein Kit für den Zugriff darauf
bereitstellen
Dadurch wird das Kit nicht plötzlich zu einem Server. Wir sprechen hier von Prozessen, nicht von Threads ...
Tamara Wijsman
1
Andere 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 ein Roboter möglicherweise von einer Klippe herunterfährt oder ein Patient zu viel Strahlung ausgesetzt ist).
Ligos
2

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 wird unter einer "normalen" Ebene ausgeführt, aber gelegentlich sehen Sie möglicherweise einige, die standardmäßig auf einer niedrigeren Ebene ausgeführt werden. Ich habe noch nie Software gesehen, die in einem überdurchschnittlichen Zustand startet.

Erwähnenswert ist auch, dass ein Prozess unter Umständen mit der höchsten Priorität ausgeführt werden kann und die Systemleistung nicht wesentlich zu beeinträchtigen scheint. Wenn zum Beispiel ein Prozess gestartet wird und ihm nur 1 von beispielsweise 8 CPU-Kernen zugewiesen ist, würde das Setzen der Prozesspriorität auf "Echtzeit" bedeuten, dass er einen Prozessor verbraucht und 7 von dem verwendet wird Betriebssystem und jede andere Software. In diesem Fall hat die Echtzeitausführung möglicherweise fast keine Auswirkungen auf das System, verschafft dem Prozess mit hoher Priorität jedoch eine angemessene Leistungsbeeinträchtigung.

Ich würde fast nie empfehlen, einen Prozess manuell so einzustellen, dass er in "Echtzeit" im System-Manager ausgeführt wird. Dies liegt daran, dass Sie die Ausführungseinstellungen für einen Prozess ändern, der möglicherweise für den Betrieb in einem bestimmten Ausführungsstatus konzipiert wurde. Das Ändern der Ausführungspriorität kann in einigen Fällen zum Absturz der Anwendung führen, und wenn es sich um einen Datenschreibvorgang handelt, können Ihre Daten möglicherweise beschädigt werden!

Es gibt jedoch einige Fälle, in denen die Verwendung einer maximalen Ausführungsprioritätseinstellung für einen Prozess die richtige Vorgehensweise sein kann. Diese Prioritätseinstellungen sollten jedoch auch dann von der steuernden Anwendung und nicht vom Endbenutzer über ein Systemverwaltungsdialogfeld festgelegt werden.

Ich persönlich würde NIEMALS empfehlen, die Priorität einer Aufgabe zu ändern, es sei denn, es ist Ihnen wirklich egal, ob sie abstürzt und die Aufgabe VOLLSTÄNDIG unkritisch ist. Wenn in der Softwaredokumentation explizit angegeben wird, dass Sie den Prozess beschleunigen können, um eine sehr große Prozessorlast zu beschleunigen, wäre dies ebenfalls akzeptabel. Ich wäre jedoch etwas skeptisch, wenn ein Mechanismus verwendet wird innerhalb der Anwendung ist nicht vorgesehen.

Als persönliche Anekdote gibt es nur einen Prozess, den ich gelegentlich manuell ändere - Softwarekomprimierungsanwendungen. Ich musste seit langem keine große Datei mehr entpacken, aber ich habe festgestellt, dass ich die Prozesspriorität erhöhen und eine moderate Beeinträchtigung der Leistung erzielen kann , wenn ich in Eile bin ( ähm , ich bin ungeduldig). Da diese Anwendungen eine Arbeitsaufgabe starten und nach Abschluss schließen, muss ich mir keine Gedanken mehr über das Deaktivieren der Prozessoreinstellungen machen, da die Anwendung nach dem Extrahieren der Daten von selbst stoppt. Dies ist das einzige Mal, dass ich es für persönlich nützlich halte, die Prozessorgeschwindigkeit über die Systemverwaltung zu steuern.

RLH
quelle
1
Als Programmierer kann ich mir unmöglich eine Situation
vorstellen,
Ja, als Programmierer kann das Festlegen eines Prozesses, der auf einer bestimmten Ebene ausgeführt wird, zu Problemen führen, insbesondere wenn die Software so geschrieben wurde (möglicherweise sogar schlecht), dass sie gleichzeitig mit anderen Prozessen ausgeführt wird. Meine Vorschläge stammen aus Erfahrung und mit 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 ermutigen, mit den Prozesseinstellungen zu experimentieren, wenn die Möglichkeit besteht, dass ihre Änderungen schädlich sind.
RLH
0

Ich verwende die Echtzeitpriorität, um 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 zuzuweisen.

Keith R.
quelle