Limitar o uso da CPU% de todos os processos e núcleos

3

Instalei recentemente o Scientific linux 7 (64 bits) na minha caixa Dell, que possui 2 núcleos (ou seja, 2 CPUs lógicas). Eu não abri o computador para limpar o ventilador, cooler, etc por um tempo e o computador desliga ao usar alta (por exemplo, 100%) cpu em (ou ambos) núcleos por alguns minutos (geralmente quando O noveau corrompe os gráficos da tela ou carrega um documento PDF no firefox ou qualquer comando de longa duração no terminal, como make ).

Até que eu limpe o sistema, eu quero limitar o uso da CPU% para cerca de 75 ou 80% por núcleo ( não por processo!) para que eu não obtenha desligamentos inesperados. Dessa forma, os processos ainda podem obter vantagens de várias CPUs, mas não pressionar qualquer um deles acima do limite de% de uso da CPU. Alguma maneira de fazer isso?

    
por Cool Charac 24.11.2016 / 19:00

1 resposta

3

Após alguns dias de pesquisa intensiva, encontrei dois métodos de reduzir o uso de cpu para processos . Geralmente, se você quiser diminuir o uso de CPU da máquina inteira, provavelmente há alguns programas que usam a CPU mais duradoura e você deve restringir aqueles em vez de sobrecarregar a máquina inteira. E, se você fizer isso para economizar bateria, também poderá querer controlar o uso de energia do hardware com, por exemplo, sintonizado ou powertop , a maioria das distros tem ferramentas para ajudá-lo com isso.

  1. Parar / Continuar sinais

Os sinais estavam por aí desde o UNIX. Você envia um SIGSTOP ou SIGTSTP para um processo (a diferença é que o primeiro pode travar um processo se ele precisar fazer o trabalho de limpeza, os processos não são forçados a parar no último, usar aquele que atende ao seu processo ) para fazer uma pausa (liberando a CPU e possivelmente diminuindo a temperatura). Então você envia um SIGCONT ao processo para retomar, pegando a CPU. Esse método fará uma série de "picos" no gráfico da cpu e impedirá o superaquecimento do processador, porque você não está dando tempo suficiente para isso pausando os processos.

Uma conseqüência desse método é que essas pausas não são suaves , o que significa que a reprodução de vídeo e a navegação na Web também não serão suaves, portanto você pode usar esse método com comandos shell -process programas ou comandos como o Google Chrome ou make não irá funcionar bem com este método também). Obviamente, não é recomendado pausar / retomar processos do sistema, como systemd.

Embora você possa fazer isso manualmente, o cpulimit é um ótimo programa pequeno que usa esse método (ele usa SIGSTOP / SIGCONT). Ao contrário da descrição, o cpu% especificado é entre 0 e 100, mesmo se você tiver vários núcleos. E você sempre pode suspender um trabalho no terminal com Ctrl-Z.

  1. cpupower (altamente recomendado)

Este é construído no kernel do Linux, então a maioria das distros deve fornecê-lo (obtenha aqui se você não tiver isso). Este utilitário de linha de comando gerencia a frequência da CPU para que praticamente controle toda a cpu usando estados do governador (por exemplo, desempenho, economia de energia, etc.), ele também pode fazer outras coisas. Diferente do método pause / resume, os processos são muito mais fáceis com isso. Você precisará definir a frequência máxima para o processador.

  1. Execute cpupower frequency-info para ver seus estados de processador disponíveis.
  2. Como root, digite cpupower frequency-set -u <frequency> , comece com o mais baixo e tente encontrar a frequência mais alta que não superaquece.
  3. (isso é opcional) Se você quiser, pode instalar o pacote lm_sensors, que permite ver a temperatura do seu sistema. Em seguida, execute sensors-detect e responda "sim" a todas as perguntas. Por último, execute sensors para ver as temperaturas atuais e críticas (além das quais o sistema superaquece).

Neste ponto, a temperatura atual deve ser muito menor agora. Esteja ciente de que alguns programas que exigem muito desempenho, como jogos, podem travar depois de digitar o comando acima, se você receber uma janela pop-up com essa mensagem, deverá aguardar o programa em vez de forçar a saída. Observe que você precisa digitar esse comando toda vez que o sistema for reinicializado (a menos que seja possível executá-lo automaticamente). Veja este e isso para mais informações sobre o cpower.

    
por 30.11.2016 / 09:27