Wie kann ich die E / A-Priorität eines Prozesses oder eines Threads in Win7 ändern?

44754
RomanSt

Process Explorer kann die effektive E / A-Priorität eines bestimmten Threads anzeigen, jedoch nicht ändern. Die Unterstützung für E / A-Prioritäten ist eine vergleichsweise neue Funktion. Die meisten Programme legen keine eigenen E / A-Prioritäten fest. Es scheint, dass die E / A-Priorität standardmäßig von der Thread-Priorität (und nicht von der Prozesspriorität) abgeleitet wird, die auch von Process Explorer nicht geändert werden kann.

Gibt es andere Tools, die mir helfen können, die E / A-Priorität eines bestimmten Threads bzw. aller Threads eines bestimmten Prozesses zu ändern?

29
Es gibt fast die gleiche Frage zu Stack Overflow: http://stackoverflow.com/questions/301290/how-can-io-priority-of-a-process-be-ecreshed Mehper C. Palavuzlar vor 13 Jahren 0
@ [Mehper C. Palavuzlar] stimmt, aber dies ist nicht für von mir entwickelte Software. Ich suche ein vorgefertigtes Werkzeug, um dies mit Software von Drittanbietern zu tun. RomanSt vor 13 Jahren 2

4 Antworten auf die Frage

22
Wye

Ich entwickelte dies, nachdem ich gesehen hatte, dass sich niemand damit beschäftigte: https://sourceforge.net/projects/iopriority/ (Open Source)

Dieses Programm kann die E / A-Priorität eines Prozesses festlegen, und alle Threads sind sofort davon betroffen. Es ist ziemlich einfach, es zu ändern, um mit Threads anstelle von Prozessen zu arbeiten.

Das hat für mich funktioniert, danke! jftuga vor 9 Jahren 0
Ich habe gerade bemerkt, dass Sie nicht zulassen, dass ein Prozess auf Server 2012R2 in eine hohe Priorität geändert wird. jftuga vor 9 Jahren 1
15
RomanSt

ProcessHacker ist ein GUI-Tool, das die E / A- Priorität eines beliebigen Prozesses ändern kann.

Warum sieht es aus wie etwas, das Russinovich gemacht hat? Daniel Mošmondor vor 10 Jahren 0
@ DanielMošmondor Vielleicht wurde es von ProcExp und seinen Einschränkungen inspiriert? Ich habe persönlich gewechselt, weil ProcExp nach Version 14 auf meinem Laptop eine völlig falsche CPU-Auslastung aufweist. RomanSt vor 10 Jahren 1
Nicht nur das, ProcExp war auch in der Lage, meine Kompositionen BSOD usw. zu erstellen. Ist es kostenlos? Daniel Mošmondor vor 10 Jahren 1
@ DanielMošmondor Ja, außerdem scheint es in jeder Hinsicht mehr als ProcExp zu sein. Etwas andere Benutzeroberfläche, aber sehr leistungsfähig. RomanSt vor 10 Jahren 0
10
dyasta

Fertiges Werkzeug

Ein Tool eines Drittanbieters zum Einstellen von Prozess-E / A-Prioritäten, entweder durch manuelle Benutzeraktion oder durch Automatisierung und Persistenz, wäre Process Lasso . Es kann fast jede Prozesseinstellung festlegen, und zwar dauerhaft oder durch Regeln (z. B. wenn dies geschieht, ändern Sie die E / A-Priorität davon).

Programmatische Antwort

Die Antwort ist ein einfacher API-Aufruf an eine NT-native API, NTSetInformationProcess . Sie ist im DDK 2008 als Klasse "IoPriority" definiert. In NT6 werden nur zwei Stufen unterstützt: Sehr niedrig (Hintergrund) und Normal . Technisch sind 5 Stufen definiert - Kritisch, Hoch, Normal, Niedrig und Sehr Niedrig. Die kritische Ebene ist für Paging-Vorgänge reserviert. Keine Angaben zu den anderen.

Die richtige Methode für die Verwendung der E / A-Priorität besteht jedoch nur darin, einen 'Hintergrundmodus' über einen Aufruf an die Windows-API SetProcessPriorityClass zu starten, die PROCESSS_MODE_BACKGROUND_BEGIN liefert. Dies führt dazu, dass die sehr niedrige E / A-Priorität (Hintergrund) zusammen mit einer IDLE-CPU-Prioritätsklasse verwendet wird. Wenn Sie fertig sind, kehren Sie über PROCESS_MODE_BACKGROUND_END zurück.

Die SetThreadPriority- API ermöglicht denselben Hintergrundmodus für bestimmte Threads. Hier würden Sie THREAD_MODE_BACKGROUND_BEGIN / END angeben.

Ich beschäftige mich nicht mit Windows-Programmierung und OS-Level-Sachen, aber ich habe gehört, die Priorität eines Threads zu erhöhen. Bis THREAD_PRIORITY_TIME_CRITICAL ist das mit Ihrem Programm oder einem anderen Programm möglich? oder ist es nur noch IO-Priorität, die eingestellt werden kann, und nicht die Priorität der Thread-CPU? Ich denke, das Ändern der E / A-Priorität wird keinen großen Unterschied bei der CPU-Nutzung machen, oder? barlop vor 11 Jahren 0
Ja. Beide können festgelegt werden und bestehen bleiben. Viele andere Dinge können auch festgelegt oder basierend auf Regeln dynamisch geändert werden (z. B. CPU-Affinität). Die E / A-Priorität unterscheidet sich von der CPU-Priorität, richtig. dyasta vor 11 Jahren 0
Das ist kein "fertiges Tool, um dies mit Software von Drittanbietern zu tun". Cees Timmerman vor 9 Jahren 0
Sorry, ich denke, die Frage wurde möglicherweise bearbeitet, da ich eindeutig von einer programmatischen Seite (nicht bearbeitet) aus geantwortet habe. Process Lasso ist ein "fertiges Werkzeug, um dies mit Software von Drittanbietern zu tun". Siehe https://bitsum.com dyasta vor 7 Jahren 0
1
Mike Mounier

Ich bin Teil einer kostenlosen App mit dem Namen PRIO, die unter anderem einen Prozessprioritätsschoner mit einem sehr kleinen (weniger als 1 MB) Footprint ist. Nach der Installation wird es unbeaufsichtigt im Hintergrund ausgeführt, bis Sie es benötigen. Die Benutzeroberfläche wird direkt in den Windows Task-Manager integriert, erweitert die Funktionalität und macht es so, als wären die hinzugefügten Funktionen immer Teil des Task-Managers. Wenn Sie im Task-Manager mit der rechten Maustaste auf einen Prozess klicken, um die Priorität zu ändern, werden einige der von PRIO hinzugefügten Funktionen sichtbar, da Sie nicht nur die CPU-Priorität des Prozesses, sondern auch die E / A-Priorität des Prozesses ändern können (ergo your question)., und Sie können die neuen Einstellungen SPEICHERN, wenn Sie dies wünschen. Letzteres macht es so, dass jedes Mal, wenn dieser Prozess (dh dieses Programm) ausgeführt wird, sowohl die von Ihnen festgelegten als auch die von Ihnen festgelegten und gespeicherten CPU- und E / A-Prozessprioritäten wirksam werden.

Die App verfügt über weitere Funktionen, die auch die Funktionalität der verschiedenen Registerkarten im Windows Task Manager erweitern. Es gibt Versionen für 32- und 64-Bit-Systeme, und die App ist für den persönlichen Gebrauch kostenlos.

Klingt nach einer großartigen App. Hast du einen Link? Stijn de Witt vor 6 Jahren 0
Wenn Sie PRIO meinen, ist es von verschiedenen Inhaltsaggregatoren (wie cnet) verfügbar, aber direkt von der Entwickler-Website wäre https://www.prnwatch.com/prio/ Mike Mounier vor 6 Jahren 1