Process Explorer puede mostrar la prioridad de E / S efectiva de un subproceso determinado, pero no cambiarla. Como el soporte prioritario de E / S es una característica relativamente nueva, la mayoría de los programas no establecen sus propias prioridades de E / S. Parece que, de forma predeterminada, la prioridad de E / S se deriva de la prioridad del subproceso (en lugar de la prioridad del proceso), que Process Explorer tampoco puede modificar.
¿Hay alguna otra herramienta que pueda ayudarme a cambiar la prioridad de E / S de un hilo dado / todos los hilos de un proceso dado?
Respuestas:
Herramienta lista para usar
Process Lasso sería una herramienta de terceros para establecer las prioridades de E / S del proceso, ya sea mediante la acción manual del usuario o la automatización y persistencia . Puede establecer casi cualquier configuración de proceso, y hacerlo de forma persistente, o por reglas (por ejemplo, cuando esto sucede, cambie la prioridad de E / S de eso).
Respuesta programática
La respuesta es una simple llamada API a una API nativa de NT, NTSetInformationProcess . Se define como la clase 'IoPriority' en el DDK 2008. En NT6 solo se admiten dos niveles: Muy bajo (fondo) y Normal . Técnicamente, hay 5 niveles definidos: crítico, alto, normal, bajo y muy bajo. El nivel Crítico está reservado para operaciones de paginación. No hay datos sobre los demás.
Sin embargo, la forma correcta de usar la prioridad de E / S es solo iniciar un 'modo de fondo' a través de una llamada a la API SetProcessPriorityClass de Windows , proporcionando PROCESSS_MODE_BACKGROUND_BEGIN. Esto hará que use la prioridad de E / S muy baja (fondo), junto con una clase de prioridad de CPU IDLE. Cuando termine, revierta a través de PROCESS_MODE_BACKGROUND_END.
La API SetThreadPriority también permitirá este mismo modo de fondo para subprocesos específicos. Aquí proporcionaría THREAD_MODE_BACKGROUND_BEGIN / END.
fuente
Desarrollé esto después de ver que nadie se molestó: https://sourceforge.net/projects/iopriority/ (código abierto)
Este programa puede establecer la prioridad de E / S de un proceso, y todos los subprocesos se ven afectados de inmediato. Es bastante fácil modificarlo para que funcione con hilos en lugar de procesos.
fuente
ProcessHacker es una herramienta GUI que puede cambiar la prioridad de E / S de un proceso arbitrario.
fuente
Soy partidario de una aplicación gratuita llamada PRIO, que es un protector de prioridad de proceso (entre otras cosas) con una huella muy pequeña (menos de 1 MB). Después de la instalación, se ejecuta silenciosamente en segundo plano hasta que lo necesite, y su interfaz se integra directamente en el Administrador de tareas de Windows, ampliando su funcionalidad y haciendo que las funciones agregadas siempre sean parte del Administrador de tareas. Cuando hace clic con el botón derecho en un proceso en el Administrador de tareas con la intención de cambiar su prioridad, algunas de las características adicionales de PRIO se vuelven aparentes, ya que puede cambiar no solo la prioridad de la CPU del proceso sino también su prioridad de E / S (ergo su pregunta) , y puede elegir GUARDAR la nueva configuración si así lo desea. Esto último hace que cada vez que se ejecute ese proceso (es decir, ese programa), entren en vigor las prioridades de proceso de CPU y E / S establecidas y guardadas por usted.
La aplicación tiene otras características que también amplían la funcionalidad de las diversas pestañas en el Administrador de tareas de Windows. Existen versiones para sistemas de 32 y 64 bits, y la aplicación es gratuita para uso personal.
fuente