Eu vou te dar duas respostas: uma que usa cpulimit
e uma alternativa que faz mais sentido.
Primeira resposta: se você está tentando limitar um script com cpulimit
, por que não executa as tarefas individuais dentro do script em cpulimit
? Por exemplo:
#!/bin/dash
cpulimit --limit 20 -- ~/bin/mprime/mprime -t # starts a slow mprime
Resposta alternativa: você está apresentando um problema x-y. Você quer dar tempo à CPU para esfriar, mas você está fazendo isso com um programa que funciona suspendendo e retomando processos rapidamente.
NOTES
cpulimit always sends the SIGSTOP and SIGCONT signals to a process,
both to verify that it can control it and to limit the average
amount of CPU it consumes ...
Não só isso é um kludge impreciso que pode ser replicado com um bash
one-liner, mas também note que cpulimit
mexe com os descritores de arquivo de uma forma que pode estragar os programas. Por exemplo, eu tinha executado mprime
no modo interativo com cpulimit --limit 20 -- ~/bin/mprime/mprime
no primeiro exemplo, eu teria visto um loop infinito de mprime
prompts inundar meu terminal até que eu SIGKILLed cpulimit
e mprime
manualmente. / p>
Seu objetivo é dar ao processador algum tempo ocioso. A maneira correta de fazer isso é fazer o downclock do processador para que ele gaste mais tempo sem fazer nada. Como o dispositivo em questão é um Raspberry Pi, isso não deve ser muito difícil de realizar.
P.S .: Rui F Ribeiro está correto, pois limitar a tarefa de processamento intensivo a um único núcleo ajudará a manter as temperaturas baixas. Não faz sentido mover continuamente o processo entre os núcleos, pois isso não ajudará o processador a se refrescar de alguma forma, já que a mesma quantidade de energia ainda está sendo despejada no mesmo chip.