Eu tenho um processo regular que não é tão importante, mas consumirá muita energia da CPU, e eu tenho outro processo que é realmente importante, mas ele passa a maior parte do tempo ocioso, mas quando conseguiu um emprego, ele realmente precisa de alto poder de computação
Tentei correr com nice -20 ./low_priority_process
e nice --20 ./high_priority_process
mas ainda assim a prioridade mais baixa consumir uma quantidade significativa de CPU quando do processo de alta prioridade está em necessidade, como posso executar um processo que vai realmente produzir ou mesmo auto-suspensão quando outro processo usando o poder da CPU
RR
agendamento para o processo de alta prioridade.Respostas:
Dê uma olhada no cgroups , ele deve fornecer exatamente o que você precisa - reservas de CPU (e mais). Eu sugiro ler a prioridade de controle de aplicativos usando cgroups .
Dito isso, coloque os processos importantes, mas geralmente ociosos, em grupo com 95% da CPU alocada e seus outros aplicativos em outro com 5% alocado - você terá (quase) toda a energia de seus trabalhos quando necessário, enquanto os processo com fome de energia só terá 5% no máximo nesses momentos. Quando os surtos computacionais desaparecerem, todo o desempenho da CPU será gerado nos processos restantes. Como benefício, se você criar um cgroup especial (com requisitos mínimos de desempenho) para processos como esse
sshd
, poderá efetuar login independentemente do que estiver tentando obter toda a CPU possível - algum tempo de CPU será reservadosshd
.fonte
cpulimit
ounice
modificar o cgroup de processo? porque i se cgroup é uma chamada de API, estou em posição não pode recompilar qualquer um desses aplicativo para uso cgroupsystemd
, pelo menos em alguns casos) "roubam" a interface do cgroups de usuários que precisam usar a interface do sistema init (geralmente um comando especial). Leia a resposta vinculada e o artigo da Wikipedia. Realmente. :)libcgroup
pacote, que vem com utilitários para trabalhar com cgroups, incluindo um daemon (cgrulesengd
) que pode realmente classificar processos em grupos, dependendo de algumas condições.Se a prioridade do processo (valor agradável) for baixa, não interromperá um processo de prioridade mais alta. A razão que você está vendo o processo de baixa prioridade ainda consome uma quantidade significativa de CPU quando o processo de prioridade maior está funcionando é porque o processo de prioridade mais alta não é que ocupado. Provavelmente esperando IO. Use
chrt -p -i 0 $PID
para executar o processo com uma prioridade ainda menor do quenice 19 -p $PID
(assumindo que estamos falando sobre Linux aqui).chrt -p -i 0 $PID
coloca o processo no planejador inativo "true".http://linux.die.net/man/1/chrt
fonte
Tente este exemplo para executar um processo como um processo baixo.
Se você é um bom trabalho tar xvf asets.zip
Usar
nice tar xvf assets.zip
Depois disso, emitir
para monitorar o processo descompacte com
ps aux | grep "alcatrão"
Tente algo específico com cpulimit
cpulimit -l 50 python 0 9999999999> / dev / null &
fonte
-20
é "baixa prioridade" e--20
é "alta prioridade", olhe para o duplo traço denice
comando. e sim, eu sou completamente compreender sobre o valor bom, mas a minha pergunta é, existe uma maneira de dizer outro programador que usar bom valor-n -20
,-n 20
etchtop
outop
oups
ou qualquer outra coisaPara futuras-chegados, aqui está um exemplo completo de
nice
com o estresse .stress
:apt-get install stress
nice -20 stress --cpu 2
top
:Isso mostra que ambas as CPUs estão totalmente ocupadas.
nice --20 stress --cpu 1
top
Isso mostra que o processo de estresse de núcleo único obtém sua CPU completa, enquanto os processos de menor prioridade compartilham os 1 CPU restante
stress
chamadas acima e acionar apenas um único processostress --cpu 3
resultaria em 66% da CPU para cadafonte