Existe uma maneira de limitar o consumo geral da CPU?

22

Meu laptop (um HP com um chip i3) superaquece como um louco toda vez que eu executo um processo pesado de recursos (como uma grande compilação, extraindo tarballs grandes ou ... tocando Flash).

Atualmente, estou analisando algumas soluções de resfriamento, mas tenho a ideia de limitar o consumo global de CPU. Eu imaginei que, se a CPU é limitada, as chances são de que a temperatura pare de aumentar freneticamente, e estou disposto a sacrificar um pouco o desempenho para fazer o trabalho.

  1. Estou errado no meu raciocínio?
  2. Como posso proceder para limitar o uso da CPU no geral?

Se isso ajudar, estou executando o Debian.

    
por rahmu 23.08.2011 / 00:25

7 respostas

10

Eu não sei que limitar a CPU a todo o sistema é algo que é possível sem muito hacking, mas você pode facilmente limitar a quantidade de CPU usada por um único processo usando cpulimit

A única maneira que posso pensar em você ser capaz de usar isso de forma eficaz é escrever um script wrapper (não pode realmente chamá-lo de script, é tão pequeno) para os aplicativos que você sabe que são porcos de recurso. Digamos, por exemplo, você acha que o google-chrome usa muita CPU, você poderia substituir o binário do google-chrome em seu caminho com algo como:

#! /bin/bash
cpulimit --limit 70 /usr/bin/google-chrome-bin

Eu não testei isso, então pegue com um grão de sal. No site do cpulimit, parece que você pode definir regras para limites de CPU em diferentes aplicativos. Não tenho certeza, você teria que dar uma olhada.

    
por 23.08.2011 / 01:01
9

Outra alternativa que não foi mencionada é cpufrequtils , que eu instalei e usei no meu laptop com o Debian 6. Ele permite que você altere o algoritmo ( governor , em cpufrequtils terminologia) que o kernel usa para escalar o clock para cima e para baixo em resposta à carga - em particular, o regulador userspace permite que você bloqueie a freqüência em algo de sua escolha (é claro que a CPU precisa ser capaz de funcionar esta velocidade).

Eu usei para bloquear um Atom em 800MHz em vez de 1,6GHz, por exemplo. É muito fácil de usar.

    
por 30.04.2012 / 16:13
5

Você pode limitar seus núcleos de CPU automaticamente com base na temperatura usando o script temp_throttle . Pode ser executado em segundo plano enquanto você se concentra em coisas mais importantes. Um exemplo de como executar:

sudo ./temp_throttle.sh 80 # Will limit CPU cores when 80C is reached.

* Isenção de responsabilidade - Eu sou o autor e mantenedor do temp_throttle *

    
por 25.12.2013 / 21:15
3

Entre no BIOS e faça o underclock do cpu. - Não há necessidade de esperteza.

    
por 23.08.2011 / 09:23
2

Visite esta página, explica como instalar e usar cpulimit no Debian e no Ubuntu:

link

    
por 30.04.2012 / 17:58
0

Não há necessidade de mudar o governador, você só precisa alterar o valor de /sys/devices/system/cpu/*/cpufreq/scaling_max_freq para cada núcleo de cpu.

Por exemplo com este loop:

for f in /sys/devices/system/cpu/*/cpufreq/scaling_max_freq; do
    sudo sh -c "echo $1 > $f" 
done

veja também meu script setcpu .

( comandos originais encontrados aqui )

    
por 25.05.2017 / 19:53
-2

Você pode usar renice para alterar a prioridade do processo por processo ou id de grupo. Dos exemplos para renice :

  1. Ajuste o valor ideal para que os IDs de processo 987 e 32 tenham um valor menor valor agradável:

    renice -n 5 -p 987 32

  2. Ajuste o valor legal para que os IDs de grupo 324 e 76 tenham um maior valor agradável, se o usuário tiver os privilégios apropriados para fazer isso:

    renice -n -4 -g 324 76

  3. Ajuste o valor legal para que o ID de usuário numérico 8 e o usuário sas tenham um valor mais baixo:     renice -n 4 -u 8 sas

por 23.08.2011 / 02:13