Existe alguma maneira de definir a prioridade de um processo no Mac OS X?


44

Eu tenho um processo em segundo plano em execução a 100% da CPU no Mac OS X. Todos os outros aplicativos são muito lentos por causa disso.

Eu gostaria de definir esse processo para não levar mais de 50% para que meus aplicativos funcionem melhor. Como posso fazer isso?

Respostas:


46

Na linha de comando ( Terminal.app ou o que quer que seja) nice e renice, assim como em outros unixes.

Usar nice ao iniciar um processo:

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

A prioridade padrão é zero, valores positivos são "mais agradáveis" (que é prioridade mais baixa) e valores negativos são "menos agradáveis" (prioridade mais alta). Parece que o Mac OS é executado de +10 a -10.

Usar renice para alterar a prioridade de um processo já em execução (do renice página man em 10.5):

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

A parte em que você está interessado aqui é a pid pouco. Essa é a identificação do processo para o trabalho e você pode encontrá-lo usando ps -u <your username> e procurando pelo nome do processo, mas eu prefiro top -o neste caso, porque o processo em que você está interessado estará próximo do topo.

Nota: Sem privilégios de superusuário, você nunca pode aumentar a prioridade de um processo. Para usuários normais, nice e renice são ruas de sentido único. E pequenas mudanças na prioridade podem ter grandes efeitos no tempo de execução. Então, vá com calma até entender.


E como posso fazer com um processo já em execução? Está funcionando por 2 horas e eu não quero começar de novo e perder minhas 2 horas de processamento
Daniel Cukier

14

Você pode usar o comando:

renice -n # PID

Onde:

  • # é um número que deve ser maior que 0 (caso contrário você moverá seu processo para prioridade mais alta)
  • PID é o ID do processo que você pode ver digitando top no aplicativo terminal (utilitários / terminal.app)

Se for um processo do sistema ou outro processo do usuário, você deve digitar:

sudo renice -n 10 PID

Ele pedirá sua senha (se você for sudoer). Quanto ao número, eu recomendaria 10 ou 19 (prioridade ainda menor).

Observe que isso alterará a prioridade e não o uso da CPU. Se você não estiver executando outros processos que exijam CPU ou se tiver mais de uma CPU no seu Mac (Core 2 Quad Core), o processo ainda poderá usar 100% da CPU.


4

Há também uma série de utilitários GUI, como o livre BeNicer e Assistente de processo (meu favorito anterior) e a versão de US $ 1,99 Congelador qual é o meu novo favorito. Todos estes trabalham em aplicativos em execução.


3
BeNicer e Process Wizard são ambos aplicativos PowerPC e não serão executados em versões recentes do OSX
arolson101

O Freezer ainda está trabalhando em versões mais recentes do sistema operacional?
ylluminate

por favor, verifique minha resposta para outra alternativa, AppPolice
JacopKane

3
renice 20 $(pgrep ImageOptim)

Ou use o nome do seu programa em vez de ImageOptim


1
Além disso, usando renice -20 dá a um processo a maior prioridade possível, por exemplo, ao compilar um programa grande como a oitava. renice 20 dá a um processo a menor prioridade.
nyxee

0
  • Se o seu processo for um aplicativo ou aplicativo auxiliar de ajuda em vez de um processo do sistema e você não quiser fazer nice ou renice em cada inicialização do sistema você pode dar uma chance para AppPolice . É open source e grátis. Você pode baixá-lo Aqui .

  • Outra alternativa seria um muito agradável GUI gerenciador de tarefas de linha de comando chamado htop. Você pode ver todos os processos e ajustar seus nice valores por F7 e e F8 atalhos. (Por favor, note que negativo nice valores são mais priorizados e opostos para valores positivos)

Para instalá-lo:

  • Instalar homebrew se você não tem ainda.
  • Execute este comando brew install htop no terminal
  • Agora você pode fazer htop para ver e gerenciar processos no terminal ou sudo htop para cobrir todo o sistema.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.