¿Hay alguna forma de establecer la prioridad de un proceso en Mac OS X?

48

Tengo un proceso en segundo plano ejecutándose al 100% de la CPU en Mac OS X. Debido a ello, todas las demás aplicaciones son muy lentas.

Me gustaría configurar este proceso para que no tome más del 50% para que mis aplicaciones puedan ejecutarse mejor. ¿Cómo puedo hacer esto?

Daniel Cukier
fuente

Respuestas:

48

Desde la línea de comando ( Terminal.appo lo que sea) use nicey renice, al igual que en otros unixes.

Usar niceal iniciar un proceso:

nice -n <priority> <command> <arguments to command>

La prioridad predeterminada es cero, los valores positivos son "mejores" (es decir, menor prioridad) y los valores negativos son "menos agradables" (mayor prioridad). Parece que Mac OS se ejecuta de +10 a -10.

Se usa renicepara cambiar la prioridad de un proceso que ya se está ejecutando (desde la renicepágina del manual en 10.5):

renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]  
renice -n increment [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]

La parte que te interesa aquí es la pidparte. Esa es la identificación del proceso para el trabajo y puede encontrarla usando ps -u <your username>y buscando el nombre del proceso, pero prefiero top -oen este caso, porque el proceso en el que está interesado estará cerca de la parte superior.

Nota: Sin privilegios de superusuario, nunca puede aumentar la prioridad de un proceso. Para usuarios normales, nicey reniceson calles de sentido único. Y pequeños cambios en la prioridad pueden tener grandes efectos en el tiempo de ejecución. Así que ve con calma hasta que lo entiendas.

dmckee
fuente
¿Y cómo puedo hacer con un proceso que ya se está ejecutando? Está funcionando durante 2 horas y no quiero comenzar de nuevo y perder mis 2 horas de procesamiento
Daniel Cukier
15

Puedes usar el comando:

renice -n # PID

Dónde:

  • # es un número que debería ser mayor que 0 (de lo contrario, moverá su proceso a una prioridad más alta)
  • PID es el ID de proceso que puede ver escribiendo topen la aplicación de terminal (utilities / terminal.app)

Si es un proceso del sistema u otro proceso de usuario, debe escribir:

sudo renice -n 10 PID

Le pedirá su contraseña (si es sudoer). En cuanto al número, recomendaría 10 o 19 (incluso menor prioridad).

Tenga en cuenta que esto cambiará la prioridad, no el uso de la CPU. Si no está ejecutando otros procesos que requieren CPU o tiene más de una CPU en su Mac (Core 2 Quad Core), el proceso aún puede usar el 100% de la CPU.

Pietro Sormanni
fuente
6
renice 20 $(pgrep ImageOptim)

O use el nombre de su programa en lugar de ImageOptim

William Entriken
fuente
1
Además, el uso renice -20le da a un proceso la mayor prioridad posible, por ejemplo, al compilar un gran programa como octava. renice 20le da a un proceso la prioridad más baja.
nyxee
5

También hay una serie de utilidades GUI, como el BeNicer y Process Wizard gratuitos (mi favorito anterior) y la versión de $ 1.99 de Freezer , que es mi nuevo favorito. Todo esto funciona en la ejecución de aplicaciones.

beiju
fuente
3
BeNicer y Asistente de Procesos son ambas aplicaciones PowerPC y no se ejecutará en versiones recientes de OSX
arolson101
¿Freezer sigue trabajando en versiones más recientes del sistema operativo?
iluminar
compruebe mi respuesta para otra alternativa, AppPolice
JacopKane
2
  • Si su proceso es una aplicación o una utilidad auxiliar de la aplicación en lugar de un proceso del sistema y no desea hacerlo niceo reniceen cada arranque del sistema, puede darle una oportunidad a AppPolice . Es de código abierto y gratuito. Puedes descargarlo aquí .

  • Otra alternativa sería una GUI de administrador de tareas de línea de comandos muy agradable llamada htop. Puede ver todos los procesos y ajustar sus nicevalores mediante F7y y F8accesos directos. (Tenga en cuenta que los nicevalores negativos son más prioritarios y opuestos para los valores positivos)

Para instalarlo:

  • Instala homebrew si aún no lo tienes.
  • Ejecute este comando brew install htopen la Terminal
  • Ahora puede hacer htoppara ver y administrar procesos en Terminal o sudo htoppara cubrir todo el sistema.
JacopKane
fuente
0

Puede establecer el valor agradable (prioridad) para el demonio permanentemente usando la variable en el archivo PLIST para la aplicación. Para saber cómo escribe MAN plist en una ventana de terminal.

SINERGISTA
fuente