CPU

Como limitar o uso de CPU de um processo no Linux

Como limitar o uso de CPU de um processo no Linux
Durante a vida do Linux, você deve ter visto alguns processos ocuparem todos os ciclos da CPU (90-99% do uso da CPU), fazendo com que o computador quase não responda até terminar. Isso pode ser bom se o processo levar alguns segundos para ser concluído. Mas e se demorar muito? Não é muito bom sentar e olhar para o seu computador que não responde por minutos e horas, certo? Bem, o Linux tem muitas ferramentas incríveis para fazer esses não muito legal processos para legais processos.

Você pode definir a quantidade de CPU que um único processo pode ter. Se o processo realmente precisa de muita energia da CPU, você pode executar alguns comandos para dar a ele todos os ciclos de CPU ociosos (ciclos de CPU que você não precisa). Dessa forma, você nunca terá que sentar e olhar para o seu computador que não responde por muito tempo.

Neste artigo, vou mostrar como limitar o uso da CPU de um processo no Linux. Vou usar o CentOS 7 neste artigo. Mas qualquer distribuição Linux moderna deve funcionar. Então vamos começar.

Limitando o uso da CPU com nice e renice:

No Linux, as prioridades de cada processo em execução podem ser alteradas. Você pode definir prioridades mais altas para o processo que é mais importante para você do que um processo que está monopolizando sua CPU sem um bom motivo.

Cada processo no Linux tem um bom valor. O valor de nice determina qual processo tem prioridades mais altas e qual tem menos. O valor adequado pode ser entre -20 a 19. Um processo com o valor agradável de -20 terá a prioridade mais alta e usará a maioria dos ciclos de CPU. Um processo com o bom valor 19 terá a prioridade mais baixa e usará a CPU quando nenhum outro processo estiver usando apenas.

Existem duas maneiras de definir o valor ideal de um processo. Você pode iniciar um processo com o legais comando para definir um bom valor ao iniciar o processo. Ou você pode usar o Renice comando para definir um bom valor após o início de um processo.

Para definir um bom valor ao iniciar um processo, execute o processo da seguinte maneira:

$ nice -n NICE_VALUE COMMAND_TO_RUN

NOTA: Aqui NICE_VALUE pode ser qualquer coisa de -20 a 19 e COMMAND_TO_RUN é qualquer comando que você deseja executar com o bom valor de NICE_VALUE.

Por exemplo, digamos, você deseja executar o dormir comando com o bom valor de 14. Execute o comando da seguinte maneira:

$ nice -n 14 sleep 40.000 &

Agora você pode verificar se o valor agradável está definido corretamente usando o comando top. Você pode listar todos os processos que iniciou (como seu usuário de login) com o seguinte comando:

$ ps -fl

Como você pode ver, o valor legal do processo é definido como 14.

Agora, se você deseja alterar o valor legal de seus processos existentes, então tudo que você precisa é o ID do processo (PID) do processo do qual você deseja alterar o valor legal. Você pode usar o ps aux comando ou o principal comando para encontrar o ID do processo ou PID.

Então você pode correr Renice comando da seguinte forma para alterar o valor legal de um processo existente:

$ sudo renice -n NEW_NICE_VALUE -p PROCESS_PID

Como você pode ver, o bom valor do processo com PID 6422 é alterado.

Limitando o uso da CPU com CGROUPS:

A forma completa de CGROUPS é Control Groups. É um recurso do kernel Linux usado para limitar recursos para processar grupos como (CPU, memória, permissões e muitos mais) no Linux.

Tudo que você precisa fazer é criar um novo grupo de processos e adicionar seus processos aos quais deseja limitar os recursos, a esse grupo. Simples!

As ferramentas de gerenciamento CGROUPS não são instaladas no CentOS 7 por padrão. Mas está disponível no repositório oficial de pacotes do CentOS 7.

Primeiro atualize o cache do repositório de pacotes YUM com o seguinte comando:

$ sudo yum makecache

Agora instale as ferramentas de gerenciamento CGROUPS com o seguinte comando:

$ sudo yum install libcgroup-tools

Agora pressione y e então pressione .

Deve ser instalado.

Você pode limitar o uso da CPU de um único grupo. Por exemplo, você pode usar CGROUPS para dizer a um processo dentro de um CGROUP para usar, digamos, 100ms a cada 1000ms (ou .1s em cada 1s) de tempo de CPU.

Primeiro crie um CGROUP com o seguinte comando:

$ sudo cgcreate -g cpu: / cpulimit

NOTA: Aqui, cpulimit é o nome do grupo que controla o CPU uso.

Agora, você tem que definir CPU.cfs_period_us e CPU.cfs_quota_us propriedade no cpulimit grupo.

Para este exemplo, 1000ms (milissegundos) ou 1000000us (microssegundos) deve ser definido como CPU.cfs_period_us propriedade e 100ms ou 100000us deve ser definido como CPU.cfs_quota_us propriedade.

Execute os seguintes comandos para definir essas propriedades para o cpulimit grupo:

$ sudo cgset -r cpu.cfs_period_us = 1000000 cpulimit
$ sudo cgset -r cpu.cfs_quota_us = 100000 cpulimit

Agora você pode executar o seguinte comando para verificar se todas as propriedades estão definidas corretamente:

$ sudo cgget -g cpu: cpulimit

NOTA: Aqui, cpulimit é o nome do CGROUP e CPU é o recurso que estou limitando.

Como você pode ver, CPU.cfs_period_us e CPU.cfs_quota_us estão configurados corretamente.

Agora, qualquer processo que você adicionar cpulimit CGROUP usará 1/10º (100000/1000000 = 1/10 = 0.1 = 10%) do total de ciclos de CPU.

Agora, para limitar a CPU de um processo, inicie o programa ou comando com cgexec do seguinte modo:

$ sudo cgexec -g cpu: cpulimit YOUR_COMMAND

NOTA: Aqui, YOUR_COMMAND pode ser qualquer comando Linux válido.

Para provar que realmente funciona, primeiro irei executar o seguinte comando sem CGROUPS e depois com CGROUPS e mostrar os resultados.

$ dd if = / dev / zero of = out bs = 1M

Como você pode ver, sem CGROUPS, o comando usa 90% da CPU total.

Então, executei o mesmo comando com CGROUPS da seguinte maneira:

$ sudo cgexec -g cpu: cpulimit dd if = / dev / zero of = out bs = 1M

Como você pode ver, o uso da CPU é de 10% no máximo. O processo não está usando mais do que isso.

Então é assim que você usa CGROUPS para limitar o uso da CPU de um processo no Linux. Obrigado por ler este artigo.

Referências:

[1] https: // acesso.chapéu vermelho.com / documentation / en-us / red_hat_enterprise_linux / 6 / html / resource_management_guide / sec-cpu

[2] https: // linux.morrer.net / man / 1 / nice

[3] https: // linux.morrer.net / man / 8 / renice

Como mostrar o contador de FPS em jogos Linux
Os jogos Linux tiveram um grande impulso quando a Valve anunciou o suporte Linux para o cliente Steam e seus jogos em 2012. Desde então, muitos jogos ...
Como baixar e jogar Sid Meier's Civilization VI no Linux
Introdução ao jogo Civilization 6 é uma versão moderna do conceito clássico introduzido na série de jogos Age of Empires. A ideia era bastante simples...
Como instalar e jogar Doom no Linux
Introdução ao Doom A série Doom teve origem nos anos 90 após o lançamento do Doom original. Foi um sucesso instantâneo e, a partir desse momento, a sé...