Existe uma maneira de limitar o consumo geral da CPU?

23

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

Atualmente, estou procurando algumas soluções de refrigeração, mas tive a ideia de limitar o consumo global de CPU. Imaginei que, se a CPU estiver limitada, é provável que a temperatura pare de aumentar freneticamente e estou disposto a sacrificar um pouco de desempenho para concluir o trabalho.

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

Se ajudar, estou executando o Debian.

rahmu
fonte
Eu acredito que você pode fazer isso com cgroups, deixando isso aqui como um ponteiro em vez de uma resposta, porque eu não tenho certeza, e eu não tenho certeza de como exatamente ...
derobert
Você pode tentar usar o cgroups. Aqui está quesiton com problema semelhante: unix.stackexchange.com/questions/14537/...
Grzegorz Wierzowiecki

Respostas:

10

Não sei se limitar a CPU a todo o sistema é algo possível sem muitos hackers, mas você pode limitar facilmente a quantidade de CPU usada por um único processo usando cpulimit

A única maneira de pensar que você é capaz de usar isso efetivamente é escrever um script de wrapper (na verdade, não é possível chamá-lo de script, é muito pequeno) para os aplicativos que você sabe que são porcos de recursos. Por exemplo, você acha que o google-chrome usa muita CPU, pode substituir o binário do google-chrome no seu caminho por algo como:

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

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

n0pe
fonte
10

Outra alternativa que não foi mencionada é a cpufrequtilsque eu instalei e usei no meu laptop com o Debian 6. Permite alterar o algoritmo ( governador , em cpufrequtilsterminologia) que o kernel usa para escalar a taxa de clock para cima e para baixo em resposta para carregar - em particular, o userspacegovernador permite bloquear a frequência de acordo com a sua escolha (é claro que a CPU precisa ser capaz de funcionar nessa velocidade).

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

AlexWebr
fonte
1
Essa deve ser a resposta aceita. (Ou temp_throttle)
Vajk Hermecz
6

Você pode limitar os núcleos da 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 de temp_throttle *

Sepero
fonte
3

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

Sirex
fonte
E quanto aos BIOS que não suportam underclocking?
precisa saber é
1
use cgroups, mas tbh eu não vi uma BIOS que não possa alterar as configurações de frequência.
Sirex
Meu laptop alienware m14x r1 (reconhecidamente bastante mal construído) não possui essa configuração, nada disponível para alteração na bios além da ordem de inicialização e do tempo do sistema.
precisa saber é
1

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

Por exemplo, com isso para o 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 )

eadmaster
fonte
-2

Você pode usar renicepara alterar a prioridade do processo por identificação de processo ou grupo. Dos exemplos para renice:

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

    renice -n 5 -p 987 32

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

    renice -n -4 -g 324 76

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

Rilindo
fonte
4
Apenas uma observação adicional para a resposta: renice, nice ou outras ferramentas similares não afetarão a temperatura da CPU, o processo problemático continuará consumindo os ciclos da CPU.
Rufo El Magufo 23/08
2
Nice e renice não limitarão o consumo da CPU. Eles simplesmente estabelecem prioridades. Se nada mais estiver sendo executado ao mesmo tempo, o processo ainda consumirá todo o poder de processamento.
Rahmu