Establezca la prioridad del proceso en Alta: ¿Peligroso?

8

He leído que configurar algo en tiempo real es un gran no-no, así que no voy a hacer eso. Pero sí tengo una aplicación que necesito asegurarme de que siempre tenga la máxima prioridad en mi sistema, ya que es fundamental para el resto de las aplicaciones que estoy ejecutando. ¿Existe algún peligro al establecer la prioridad en alta, que está un nivel por debajo del tiempo real?

Además, ¿cómo podría hacer esto cambiando el objetivo de acceso directo? Cual es el comando?

eek
fuente
La configuración "por encima de lo normal" (Windows 7) es más segura. Alguna discusión aquí ... stackoverflow.com/questions/1663993/…
Moab
1
Es muy peligroso. El principal problema es la inversión de prioridad, que da como resultado que el proceso de mayor prioridad realmente obtenga una prioridad efectivamente menor porque puede ser bloqueado indefinidamente por un proceso de menor prioridad .
David Schwartz
Como se mencionó, "Realtime" no es necesariamente malo siempre que su proceso se comporte bien y solo se ejecute cuando lo necesite y duerma cuando no lo haga, de lo contrario puede (y evitará) que otras tareas se ejecuten por completo.
Mokubai
2
@David Schwartz, Cutler diseñó el programador de Windows para evitar el punto muerto debido a la inversión de prioridad. Desde support.microsoft.com/kb/96418 , "El programador de Windows NT resuelve este problema al aumentar aleatoriamente la prioridad de los subprocesos que están listos para ejecutarse (en este caso, los titulares de bloqueo de baja prioridad). Los subprocesos de baja prioridad se ejecutan el tiempo suficiente para soltar su bloqueo (salir de la sección crítica), y el subproceso de alta prioridad recupera el bloqueo. Si el subproceso de baja prioridad no obtiene suficiente tiempo de CPU para liberar su bloqueo la primera vez, tendrá otra oportunidad en la próxima ronda de programación ".
Nicole Hamilton
@NicoleHamilton Entonces, ¿por eso a veces un programa se abrirá algunas instancias a la vez si no se abrió con el primer clic (y usted hizo clic varias veces), debido a la alta carga?
Simon Verbeke

Respuestas:

6

El tiempo real no es necesariamente un "no-no". Simplemente podría privar a otros procesos de los ciclos de la CPU. Algunas aplicaciones no pueden manejar eso. Es algo con lo que tendrías que experimentar.

Alto debería ser un problema menor. Sin embargo, aún necesita monitorear su sistema para ver si todas las aplicaciones se están comportando bien.

Aquí le mostramos cómo cambiar el proceso a través de la línea de comando, que puede poner en un acceso directo:

http://support.microsoft.com/kb/191771

Keltari
fuente
1
En Windows, priva de hambre a otros procesos con mucha facilidad (incluido el Administrador de tareas).
user1686
3
Todo depende de tu sistema. Dependiendo de cuán intensivo sea el proceso de CPU, una afinidad en tiempo real está bien. Estoy ejecutando un proceso en tiempo real en este momento sin problemas. Además, puede ayudar establecer una afinidad con un procesador mientras establece la prioridad en tiempo real.
Keltari
Si un proceso se configura en tiempo real, ¿se le dará prioridad absoluta sobre todos los demás procesos en el núcleo en el que se ejecuta? He estado tratando de encontrar formas de dedicar uno de mis núcleos a Dwarf Fortress mientras se está ejecutando.
SaintWacko
3

Yo diría que depende. Si solo tiene un núcleo / CPU en su computadora, y es una tarea intensiva de CPU, no lo configuraría en tiempo real. Alto podría estar bien, pero eso necesita experimentar.

Si tiene varios núcleos y el proceso es de un solo subproceso: adelante, configúrelo como desee. Sus otros núcleos seguirán siendo libres, incluso cuando un núcleo esté al 100% de carga todo el tiempo.

Si tiene varios núcleos y el proceso es multiproceso: dependerá de si todos los subprocesos tendrán una carga del 100%. Algunos programas tienen un subproceso de "administrador" que distribuye el trabajo a otros subprocesos pero no procesa mucho. Eso dejaría un núcleo casi libre y, por lo tanto, permitiría una prioridad alta o en tiempo real.

Otros programas intentarán asimilar todos los núcleos. En este caso, alto podría estar bien, pero necesita experimentar.

Incluso otros solo tomarán un número particular de núcleos y podrían no usar todos los núcleos disponibles. En este caso, la prioridad alta o en tiempo real debería estar bien.

A menos que estés en un solo núcleo, adelante, experimenta. La mayoría de las veces no hará daño configurarlo en tiempo real o incluso en tiempo real. También puede establecer la afinidad de un proceso (cuántos núcleos puede usar) en el administrador de tareas. De esta manera, puede equilibrar mejor la carga en su CPU. También puede ayudar a mantener bajas las temperaturas y el consumo de energía, etc.

Simon Verbeke
fuente
+1 Buen punto de que una aplicación de un solo subproceso no es un problema en una máquina de múltiples núcleos, sin importar cuán vinculados a los cálculos.
Nicole Hamilton
Sin embargo, no olvide que, como se advirtió, [principalmente] los procesos de alta prioridad de un solo subproceso, incluso si afectan solo a un solo núcleo, pueden mantener bloqueos de sincronización del sistema global durante un período de tiempo anormal.
dyasta
1

Si esto funcionará para usted depende completamente de lo que haga su aplicación. Si se está procesando a través de un cómputo largo y largo que nunca necesita esperar E / S, espere que la ejecución de alta prioridad pueda poner a su máquina de rodillas. Pero si el problema es la latencia y su aplicación solo necesita despertarse muy rápido en respuesta a una finalización de E / S o un evento similar, realice un procesamiento rápido y luego vuelva a dormir, estará bien.

Nicole Hamilton
fuente