Process Explorer est capable d'afficher la priorité d'E / S effective d'un thread donné, mais pas de la modifier. Étant donné que la prise en charge des priorités d'E / S est une fonctionnalité relativement nouvelle, la plupart des programmes ne définissent pas leurs propres priorités d'E / S. Il semble que par défaut, la priorité IO est dérivée de la priorité du thread (plutôt que de la priorité du processus), que Process Explorer ne peut pas modifier non plus.
Existe-t-il d'autres outils qui peuvent m'aider à modifier la priorité d'E / S d'un thread donné / tous les threads d'un processus donné?
Réponses:
Outil prêt à l'emploi
Un outil tiers pour traiter ensemble les priorités d' E / S, soit par action manuelle de l' utilisateur ou de l' automatisation et de la persistance, serait Lasso de processus . Il peut définir presque n'importe quel paramètre de processus, et le faire de manière persistante, ou par des règles (par exemple, lorsque cela se produit, modifiez la priorité d'E / S de cela).
Réponse programmatique
La réponse est un simple appel d'API à une API native NT, NTSetInformationProcess . Elle est définie comme la classe «IoPriority» dans le DDK 2008. Dans NT6, seuls deux niveaux sont pris en charge: très faible (arrière-plan) et normal . Techniquement, 5 niveaux sont définis: critique, élevé, normal, bas et très bas. Le niveau Critique est réservé aux opérations de pagination. Aucune donnée sur les autres.
Cependant, la bonne façon d'utiliser la priorité d'E / S consiste uniquement à démarrer un «mode d'arrière-plan» via un appel à l'API Windows SetProcessPriorityClass , en fournissant PROCESSS_MODE_BACKGROUND_BEGIN. Cela lui fera utiliser la priorité d'E / S très faible (en arrière-plan), ainsi qu'une classe de priorité CPU IDLE. Une fois terminé, revenez via PROCESS_MODE_BACKGROUND_END.
L' API SetThreadPriority autorisera également ce même mode d'arrière-plan pour des threads spécifiques. Ici, vous fournirez THREAD_MODE_BACKGROUND_BEGIN / END.
la source
J'ai développé cela après avoir vu que personne ne s'en souciait: https://sourceforge.net/projects/iopriority/ (open source)
Ce programme est capable de définir la priorité d'E / S d'un processus, et tous les threads en sont affectés immédiatement. Il est assez facile de le modifier pour qu'il fonctionne avec des threads plutôt qu'avec des processus.
la source
ProcessHacker est un outil GUI qui peut changer la priorité d'E / S d'un processus arbitraire.
la source
Je suis friand d'une application gratuite appelée PRIO, qui est un économiseur de priorité de processus (entre autres) avec une très petite empreinte (moins de 1 Mo). Après l'installation, il s'exécute silencieusement en arrière-plan jusqu'à ce que vous en ayez besoin, et son interface s'intègre directement dans le Gestionnaire des tâches de Windows, étendant ses fonctionnalités et faisant comme si les fonctionnalités ajoutées faisaient toujours partie du Gestionnaire des tâches. Lorsque vous cliquez avec le bouton droit sur un processus dans le Gestionnaire des tâches avec l'intention de modifier sa priorité, certaines des fonctionnalités ajoutées de PRIO deviennent évidentes, car vous pouvez modifier non seulement la priorité du processeur du processus, mais également sa priorité d'E / S (ergo votre question) , et vous pouvez choisir d'enregistrer les nouveaux paramètres si vous le souhaitez. Ce dernier fait en sorte que chaque fois que ce processus (c'est-à-dire ce programme) est exécuté, les priorités de processus CPU et E / S définies et enregistrées par vous entrent en vigueur.
L'application possède d'autres fonctionnalités qui étendent également les fonctionnalités des différents onglets du Gestionnaire des tâches de Windows. Des versions existent pour les systèmes 32 et 64 bits, et l'application est gratuite pour un usage personnel.
la source