Páginas

▼

segunda-feira, 28 de setembro de 2026

Linux 7.4 e o Steal Governor: Como o Novo Driver da IBM Combate a Contenção de CPU em VMs Overcommitadas

 


O Linux 7.4 estreia o Steal Governor: entenda como esse novo driver combate a contenção de CPU em VMs overcommitadas e melhora o throughput do seu servidor.


Em ambientes de virtualização modernos, um dos maiores desafios operacionais é lidar com a contenção de CPU em servidores que executam mais vCPUs do que os núcleos físicos disponíveis. 

Esse cenário, conhecido como overcommit, é prática comum para maximizar a densidade de máquinas virtuais, mas pode degradar severamente o desempenho — especialmente em cargas de trabalho sensíveis à latência, como bancos de dados.

Com a chegada do Linux 7.4, um novo mecanismo promete atacar esse problema de forma inteligente: o Steal Governor. 

Desenvolvido por engenheiros da IBM liderados por Shrikanth Hegde, esse driver foi projetado para monitorar o tempo de steal — o tempo que uma vCPU passa esperando por recursos físicos de CPU — e ajustar dinamicamente o conjunto de CPUs preferenciais do sistema para reduzir a preempção.

Neste artigo, vou explorar em profundidade o que é o Steal Governor, como ele funciona, quais são os ganhos reais de desempenho documentados e o que isso significa para administradores de sistemas e engenheiros de infraestrutura. 

Se você gerencia ambientes virtualizados — seja em nuvem pública ou privada — este conteúdo é para você.


O Que É CPU Steal Time e Por Que Ele Importa?


Antes de mergulharmos no Steal Governor, é fundamental entender o conceito de steal time.

Quando uma máquina virtual é criada, ela recebe um número de vCPUs (CPUs virtuais). Do ponto de vista do sistema operacional convidado (guest), essas vCPUs parecem processadores reais e dedicados. No entanto, elas precisam ser executadas nos núcleos físicos do host. 

Se múltiplas VMs competem pelos mesmos recursos físicos, o hipervisor precisa alternar entre elas, retirando temporariamente uma vCPU da execução para dar lugar a outra.

O tempo que uma vCPU passa esperando — querendo executar, mas impedida pelo hipervisor — é o steal time. Em termos práticos, é o tempo de CPU que foi "roubado" da sua máquina virtual por outro workload.

Steal Governor


Produto Recomendado: 


Se você está começando a produzir vídeos com o Shotcut, um bom kit de iluminação faz toda a diferença na qualidade final. 

Recomendamos o Kit Completo Ring Light Com Tripé Dimmer Youtuber Selfie Pro, disponível na Amazon.com.br. Ideal para gravações de tutoriais, entrevistas e vídeos para as redes sociais.

Kit Completo Ring Light Com Tripé Dimmer Youtuber Selfie Pro -> https://link.amazon/B0fNAl01C

Eu ganho uma comissão quando você faz uma compra. 


Por Que o Steal Time É um Problema?


O steal time vai muito além da simples perda de tempo de CPU. Quando uma vCPU é preemptada enquanto mantém um lock (trava de sincronização), outras threads da mesma VM podem ficar girando indefinidamente esperando por um recurso que não será liberado até que aquela vCPU volte a executar. 

  • Atrasos no lock-holder: Os threads que esperam por uma vCPU preemptada que detém um lock crítico.
  • Disrupção de cache: a preempção força a invalidação de linhas de cache L1/L2/L3, aumentando a latência de memória.
  • Misses de TLB: a troca de contexto entre vCPUs invalida entradas da Translation Lookaside Buffer, exigindo novas traduções de endereços.

Esse fenômeno pode causar:

O resultado é contraintuitivo: dar mais vCPUs a uma VM pode torná-la mais lenta, não mais rápida. Esse é o clássico problema do noisy neighbor — o vizinho barulhento que consome recursos e prejudica todos ao redor.

Para administradores de sistemas, monitorar o steal time é relativamente simples. Ferramentas como top, vmstat e o arquivo /proc/stat expõem essa métrica diretamente. O desafio está em agir sobre ela de forma automatizada — e é exatamente aí que o Steal Governor entra.


Como Funciona o Steal Governor na Prática


O Steal Governor é um driver de virtualização (drivers/virt/steal_governor.c) que introduz um conceito chamado CPUs preferenciais (preferred CPUs). 

A ideia central é que, em vez de usar todas as vCPUs ativas o tempo todo, o kernel do convidado pode concentrar suas tarefas em um subconjunto menor de vCPUs quando detecta alta contenção.


O Mecanismo de Feedback

O funcionamento é baseado em um loop de feedback com três componentes principais:

  • Coleta periódica: o Steal Governor soma o steal time de todas as vCPUs a cada 1.000 milissegundos (1 segundo).
  • Limiares (thresholds): dois valores padrão determinam as ações:
  • Limiar alto (5%): se o steal time ultrapassar 5%, o governor remove uma CPU do conjunto preferencial.
  • Limiar baixo (2%): se o steal time cair para 2% ou menos, o governor adiciona uma CPU de volta ao conjunto.
  • Ação do scheduler: o escalonador do kernel passa a evitar colocar tarefas em CPUs que não estão no conjunto preferencial. Durante cada tick do scheduler, se a CPU atual não for preferencial, a tarefa em execução é migrada para uma CPU do conjunto preferencial. O balanceamento de load também evita mover as tarefas para as CPUs não preferenciais.


O Comportamento em Resumo


Essa abordagem é deliberadamente conservadora e gradual. O objetivo não é reagir de forma abrupta, mas sim modular a demanda da VM para que ela coexista de forma mais harmoniosa com as demais cargas no host.

Ganhos de Desempenho Documentados


Os desenvolvedores do Steal Governor conduziram benchmarks em servidores PowerPC para validar a eficácia do mecanismo. Os resultados são expressivos:


Esses números, publicados na série de patches v14  o Steal Governor pode trazer melhorias substanciais para os workloads que sofrem com preempção de vCPU (  vCPU preemption) .

É importante notar que os ganhos são mais pronunciados em cargas com seções críticas protegidas por locks, como os bancos de dados OLTP/OLAP e aplicações transacionais. 

Para cargas puramente intensivas em CPU, pode haver uma leve regressão, já que o governor reduz a quantidade de CPUs disponíveis para execução paralela.


O Que Muda para Administradores de Sistemas?


Se você gerencia ambientes virtualizados, o Steal Governor representa uma mudança de paradigma importante: a VM passa a ter consciência da contenção e a se autorregular.


Requisitos de Configuração


Para habilitar o Steal Governor, é necessário compilar o kernel com as seguintes opções:
  • CONFIG_PREFERRED_CPU=y (habilitado automaticamente pelo driver)

O driver é estritamente destinado a convidados (guests), sendo bloqueado no Xen dom0. Recomenda-se compilar como módulo (=m) para maior flexibilidade de carregamento.



Perguntas Frequentes (FAQ)


1. O Steal Governor já está disponível no Linux estável?

Ainda não. O código foi integrado ao branch sched/core do repositório tip do kernel no final de setembro de 2026 e está previsto para o merge window do Linux 7.4, que abre em outubro. Até o momento, o recurso não faz parte de nenhuma versão estável do kernel.

2. O Steal Governor funciona em qualquer hipervisor?

O driver é projetado para ambientes paravirtualizados onde o steal time é exposto ao convidado. Isso inclui KVM, Xen (exceto dom0) e outros hipervisores que implementam a interface de steal time. O driver foi originalmente desenvolvido para servidores POWER da IBM, mas o escopo foi expandido para beneficiar também arquiteturas x86_64.

3. Preciso desabilitar o overcommit para usar o Steal Governor?

Não. O Steal Governor foi projetado justamente para tornar o overcommit mais seguro e eficiente. Em vez de exigir que você reduza manualmente o número de vCPUs, o mecanismo permite que a VM se adapte automaticamente à contenção, reduzindo sua demanda quando necessário e restaurando-a quando a pressão diminui.



Checklist Rápido: Como Se Preparar para o Steal Governor


Copie e cole este checklist para garantir que seu ambiente está pronto:


☐ Verificar a versão do kernel em uso (uname -r).

☐ Confirmar se o hipervisor expõe steal time ao convidado.

☐ Monitorar steal time atual com top, vmstat ou /proc/stat

☐ Planejar upgrade para Linux 7.4 quando disponível.

☐ Compilar kernel com CONFIG_STEAL_GOVERNOR=m (recomendado).

☐ Testar em ambiente de homologação antes de produção.

☐ Documentar limiares (high_threshold, low_threshold) em runbook.

☐ Comparar métricas de throughput antes e depois da ativação.


Conclusão: O Futuro da Virtualização Inteligente


O Steal Governor representa um avanço significativo na forma como o Linux lida com a contenção de CPU em ambientes virtualizados. 

Em vez de depender exclusivamente de ajustes manuais e monitoramento constante, o kernel passa a ter um mecanismo autônomo e adaptativo para mitigar os efeitos do overcommit e do problema do noisy neighbor.

Para os administradores de sistemas, isso significa menos firefighting e mais tempo dedicado a otimizações estratégicas. Para provedores de nuvem, representa a possibilidade de oferecer densidades mais altas sem sacrificar o desempenho dos clientes. 

Para os desenvolvedores de aplicações, é a garantia de que os seus workloads  sensíveis à latência terão um ambiente mais previsível.

O Linux 7.4 está previsto para o merge window de outubro de 2026, e o Steal Governor já está garantido no branch sched/core. A recomendação é clara: comece a planejar seus testes agora.


Nenhum comentário:

Postar um comentário