Process Explorer kann die effektive E / A-Priorität eines bestimmten Threads anzeigen, aber nicht ändern. Da die Unterstützung von E / A-Prioritäten eine vergleichsweise neue Funktion ist, legen die meisten Programme keine eigenen E / A-Prioritäten fest. Standardmäßig wird die E / A-Priorität von der Thread-Priorität (und nicht von der Prozesspriorität) abgeleitet, die auch von Process Explorer nicht geändert werden kann.
Gibt es andere Tools, mit denen ich die E / A-Priorität eines bestimmten Threads / aller Threads eines bestimmten Prozesses ändern kann?
Antworten:
Fertiges Werkzeug
Ein Drittanbieter-Tool zum Festlegen von Prozess-E / A-Prioritäten, entweder durch manuelle Benutzeraktion oder durch Automatisierung und Persistenz, ist Process Lasso . Es kann fast jede Prozesseinstellung festlegen, und zwar dauerhaft oder nach Regeln (z. B. wenn dies passiert, ändern Sie die E / A-Priorität davon).
Programmatische Antwort
Die Antwort ist ein einfacher API-Aufruf an eine native NT-API, NTSetInformationProcess . Es wird im DDK 2008 als Klasse 'IoPriority' definiert. In NT6 werden nur zwei Ebenen unterstützt: Sehr niedrig (Hintergrund) und Normal . Es sind technisch gesehen 5 Stufen definiert - Kritisch, Hoch, Normal, Niedrig und Sehr Niedrig. Die kritische Ebene ist für Paging-Vorgänge reserviert. Keine Daten zu den anderen.
Die ordnungsgemäße Verwendung der E / A-Priorität besteht jedoch nur darin, einen Hintergrundmodus über einen Aufruf der Windows-API SetProcessPriorityClass zu starten , der PROCESSS_MODE_BACKGROUND_BEGIN bereitstellt. Dadurch wird die sehr niedrige (Hintergrund-) E / A-Priorität zusammen mit einer IDLE-CPU-Prioritätsklasse verwendet. Wenn Sie fertig sind, kehren Sie über PROCESS_MODE_BACKGROUND_END zurück.
Die SetThreadPriority- API ermöglicht diesen Hintergrundmodus auch für bestimmte Threads. Hier geben Sie THREAD_MODE_BACKGROUND_BEGIN / END an.
quelle
Ich habe das entwickelt, nachdem ich gesehen hatte, dass es niemanden gestört hat: 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 so zu ändern, dass es mit Threads statt mit Prozessen funktioniert.
quelle
ProcessHacker ist ein GUI-Tool, mit dem die E / A- Priorität eines beliebigen Prozesses geändert werden kann.
quelle
Ich bin teilweise an einer kostenlosen App namens PRIO interessiert, die (unter anderem) Prozesspriorität spart und einen sehr geringen Platzbedarf (weniger als 1 MB) aufweist. 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. Dadurch wird die Funktionalität erweitert und die hinzugefügten Funktionen werden als Teil des Task-Managers betrachtet. Wenn Sie im Task-Manager mit der rechten Maustaste auf einen Prozess klicken, um dessen Priorität zu ändern, werden einige der hinzugefügten PRIO-Funktionen deutlich, da Sie nicht nur die CPU-Priorität des Prozesses, sondern auch dessen E / A-Priorität ändern können (stellen Sie Ihre Frage). , und Sie können die neuen Einstellungen SPEICHERN, wenn Sie dies wünschen. Letzteres bewirkt, dass jedes Mal, wenn dieser Prozess (dh dieses Programm) ausgeführt wird, die von Ihnen festgelegten und gespeicherten CPU- und E / A-Prozessprioritäten wirksam werden.
Die App verfügt über weitere Funktionen, die die Funktionalität der verschiedenen Registerkarten im Windows Task-Manager erweitern. Es gibt Versionen für 32- und 64-Bit-Systeme. Die App ist für den persönlichen Gebrauch kostenlos.
quelle