Como Configurar CPU Governor em VPS Ubuntu para Web

10 min de leitura Otimização de Servidor
Como Configurar CPU Governor em VPS Ubuntu para Web

A performance de um servidor web não depende apenas da largura de banda ou do disco SSD. Um dos fatores mais críticos, mas frequentemente negligenciados, é o gerenciamento de energia da CPU. Em ambientes de Virtual Private Server (VPS) e servidores dedicados, a forma como o kernel do Linux gerencia os clocks dos processadores pode impactar diretamente na latência das requisições HTTP e na capacidade de resposta do servidor web.

O CPU Governor é o subsistema do kernel Linux responsável por ajustar dinamicamente a frequência da CPU. Por padrão, a maioria das distribuições Linux, incluindo o Ubuntu, vem configurada com governadores voltados para o equilíbrio entre performance e consumo de energia em desktops ou laptops. No entanto, servidores web exigem consistência e resposta imediata, características que muitas vezes entram em conflito com a economia de energia agressiva.

Neste tutorial, vamos explorar como verificar, alterar e otimizar o cpu governor no Ubuntu para garantir que seu servidor web opere com máxima eficiência. Vamos cobrir desde a instalação das ferramentas necessárias até a configuração persistente via systemd.

1. Entendendo os Governadores de CPU Disponíveis

Antes de aplicar qualquer configuração, é crucial entender as opções disponíveis no kernel Linux. O subsistema cpufreq oferece vários algoritmos (governors) que determinam como a frequência do processador é ajustada em resposta à carga de trabalho.

Os governadores mais comuns são:

  • performance: Mantém a CPU na frequência máxima possível o tempo todo. Minimiza a latência, pois não há overhead de mudança de clock. Ideal para servidores web que precisam responder rapidamente a picos de tráfego.
  • powersave: Mantém a CPU na frequência mínima ou ajusta para baixo quando ocioso. Economiza energia, mas introduz latência ao subir o clock sob demanda. Geralmente desaconselhado para servidores de produção crítica.
  • ondemand: Aumenta a frequência da CPU imediatamente quando há carga e a reduz quando ociosa. É o padrão na maioria das instalações Ubuntu. Oferece um bom equilíbrio, mas pode sofrer de "thrashing" (oscilação rápida de clock) em cargas variáveis.
  • conservative: Similar ao ondemand, mas aumenta e diminui a frequência de forma mais gradual. Pode ser útil em ambientes onde a latência extrema não é crítica, mas a estabilidade térmica sim.
  • schedutil: Utiliza o escalonador do kernel (CFS) para decidir a frequência da CPU. É considerado o governador moderno e preferido em kernels mais recentes (5.0+), pois interage melhor com as tarefas do sistema operacional.

Para servidores web, a escolha entre performance e schedutil é geralmente a mais debatida. Enquanto performance garante consistência absoluta, schedutil oferece eficiência moderna com baixa latência.

2. Verificando o Estado Atual da CPU

O primeiro passo para qualquer tunização é diagnosticar o cenário atual. Vamos verificar quais CPUs estão disponíveis e qual governador está sendo usado atualmente.

No Ubuntu, a ferramenta cpupower é a padrão para interagir com o subsistema de frequência. Se você estiver em um VPS, pode ser necessário instalar este pacote primeiro:

sudo apt update
sudo apt install linux-tools-generic linux-tools-$(uname -r)

Para listar todos os governadores suportados pelo seu hardware/kernel, execute:

cpupower frequency-info --governors

Para verificar o governador ativo e a frequência atual em cada núcleo:

cpupower frequency-info

O output mostrará uma linha como current policy: frequency should be within X MHz and Y MHz. The governor "ondemand" may decide.... Isso confirma qual algoritmo está no comando.

3. Alterando o CPU Governor Temporariamente

Para testar a influência do governador na performance do seu servidor web sem perder a configuração atual caso algo dê errado, podemos alterar o valor em tempo real. Esta mudança é volátil e será perdida ao reiniciar o servidor.

Definir todos os núcleos para o modo performance:

sudo cpupower frequency-set -g performance

Alternativamente, se preferir usar o schedutil:

sudo cpupower frequency-set -g schedutil

Você pode verificar a mudança imediatamente com:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

O comando deve retornar o nome do novo governador. Note que você deve repetir esse processo para cada CPU se quiser garantir a uniformidade, embora o comando cpupower acima geralmente aplique a mudança globalmente em sistemas modernos.

4. Tornando a Configuração Persistente

Após testar e decidir que deseja manter uma configuração específica (por exemplo, performance), você precisa torná-la persistente para que ela sobreviva a reinicializações do servidor. A maneira mais robusta no Ubuntu moderno é usar o systemd.

4.1. Criando o Serviço Systemd

Crie um arquivo de serviço personalizado para gerenciar a configuração da CPU. Vamos chamar este serviço de cpu-governor.service.

sudo nano /etc/systemd/system/cpu-governor.service

Insira o seguinte conteúdo no arquivo:

[Unit]
Description=Set CPU Frequency Governor to Performance
After=sysinit.target

[Service]
Type=oneshot
ExecStart=/usr/bin/cpupower frequency-set -g performance
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Neste script:

  • Type=oneshot: Indica que o serviço executa um comando e sai, mas permanece como "ativo" até ser parado explicitamente.
  • ExecStart: Define o comando que será executado na inicialização. Lembre-se de trocar performance se você preferir outro governador.
  • RemainAfterExit=yes: Permite que o serviço seja parado e iniciado sem executar o comando novamente, apenas alterando o estado lógico do systemd.

4.2. Ativando o Serviço

Salve o arquivo (Ctrl+O, Enter, Ctrl+X no nano) e ative o serviço:

sudo systemctl daemon-reload
sudo systemctl enable cpu-governor.service
sudo systemctl start cpu-governor.service

Agora, verifique se o serviço está ativo e correto:

systemctl status cpu-governor.service

Se tudo estiver em ordem, seu servidor web já estará configurado para usar o governador selecionado após cada boot.

5. Otimizações Adicionais com Tweakings de Kernel

Apenas mudar o governador pode não ser suficiente para maximizar a performance em cenários específicos de I/O ou rede. Vamos ajustar alguns parâmetros do kernel relacionados ao escalonamento e uso de CPU.

5.1. Desativar Intel P-State (se aplicável)

Em algumas configurações antigas, o driver intel_pstate entrava em conflito com o cpufreq padrão. No entanto, em kernels modernos, ele é geralmente preferível ao antigo acpi-cpufreq. Se você estiver usando hardware Intel recente, mantenha o padrão. Para verificar:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver

Se retornar intel_pstate, é provável que o schedutil seja a melhor escolha, pois ele foi projetado para trabalhar nativamente com esse driver.

5.2. Ajustando o EAS (Energy Aware Scheduling)

O EAS é um recurso do kernel que permite ao escalonador levar em conta o consumo de energia e a performance ao distribuir tarefas entre núcleos grandes e pequenos (em arquiteturas big.LITTLE ou modernas CPUs Intel/AMD). Para servidores web, muitas vezes desejamos forçar o uso dos núcleos de alta performance.

Você pode verificar se o EAS está habilitado lendo:

cat /sys/devices/system/cpu/sched_smt_power_semi

Não há um "tweak" universal aqui, mas entender que seu servidor está distribuindo cargas de trabalho pode ajudar a diagnosticar picos de latência. Se você notar que threads críticos estão sendo migrados para núcleos de baixa frequência, considerar o uso de cgroups ou taskset para fixar processos web (como Nginx ou Apache workers) em núcleos específicos pode ser uma estratégia avançada de tuning.

6. Testando a Performance Após a Configuração

Agora que o servidor está configurado, é hora de validar as melhorias. Use ferramentas de benchmarking padrão do mercado para medir a diferença.

6.1. Benchmark de CPU Simples

O sysbench é uma ferramenta leve e eficaz:

sudo apt install sysbench
sysbench cpu run

Anote o tempo total de execução e o número de eventos processados por segundo. Compare com os resultados anteriores (se você os tiver registrado).

6.2. Benchmark de Servidor Web

Se seu servidor web estiver rodando localmente, use o ab (Apache Bench) ou wrk para simular requisições:

sudo apt install apache2-utils
ab -n 1000 -c 100 http://localhost/

Observe a métrica Requests per second. Uma configuração de CPU adequada deve reduzir o tempo médio de resposta e aumentar a taxa de requisições, especialmente sob carga concorrente.

7. Considerações Finais sobre Custos e Recursos

É importante ressaltar que mudar para o governador performance aumenta o consumo de energia e, potencialmente, a geração de calor. Em ambientes de nuvem (VPS), isso geralmente não impacta sua conta diretamente, pois você paga pelo recurso alocado (vCPU/RAM) e não pelo watt consumido. No entanto, em servidores bare-metal ou dedicados, o aumento térmico pode exigir ventilação mais agressiva.

Além disso, em arquiteturas de virtualização, o hypervisor já gerencia a alocação de ciclos de CPU. Em alguns casos (como AWS EC2 ou Google Cloud), o "turbo boost" pode ser limitado ou não disponível para instâncias específicas. Sempre verifique a documentação do seu provedor de VPS sobre limitações de CPU.

O uso do governador schedutil tem ganhado popularidade como o novo padrão ouro para servidores Linux, oferecendo uma combinação inteligente entre resposta rápida e eficiência energética, aproveitando as melhorias modernas no escalonador do kernel. Para a maioria dos administradores que buscam um equilíbrio seguro sem microgerenciamento complexo, migrar de ondemand para schedutil é um ganho de performance gratuito.

Lembre-se: nenhuma configuração de software substitui hardware adequado. Se seu servidor web está constantemente sobrecarregado, o tuning de CPU é apenas uma solução paliativa. Avalie sempre a necessidade de escalar verticalmente (mais vCPUs) ou horizontalmente (load balancers) antes de depender excessivamente de otimizações de baixo nível.

A aplicação correta do cpu governor é um exercício simples de sysadmin que pode resultar em ganhos mensuráveis de latência e throughput. Siga os passos deste guia, monitore seu servidor com ferramentas como htop, glances ou netdata para observar as frequências em tempo real, e ajuste conforme a natureza específica da sua aplicação web.

Compartilhar: Link copiado!
Esse tutorial foi útil?

Comentários (0)

Seja o primeiro a comentar.

Deixe seu comentário

Seu comentário será analisado antes de ser publicado.

0/2000