XFS desacorrentado: como o novo patch do kernel Linux libera o processador para tarefas críticas

Performance sem amarras: novo patch do XFS otimiza o isolamento de CPU no Linux

Escrito por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...
  • Fim da prisão por núcleo: o desenvolvedor Marco Crivellari (SUSE) propôs a migração das filas de trabalho do xfs para o modelo unbound, permitindo que tarefas de manutenção de disco flutuem entre núcleos.
  • Foco em alto desempenho: a mudança é vital para sistemas que utilizam isolamento de cpu, garantindo que tarefas burocráticas do sistema de arquivos não interfiram em núcleos reservados para aplicações críticas.
  • Correção de herança: o patch reverte um comportamento padrão automático que prendia processos a cpus específicas mesmo quando não havia necessidade técnica para isso.
  • Eficiência mantida: o subsistema de workqueues do kernel continuará respeitando a localidade de cache através de escopos de afinidade, unindo flexibilidade com velocidade.
  • Impacto no armazenamento: áreas sensíveis como a limpeza de inodes, gravação de logs e sincronização de dados (xfs-sync) tornam-se mais resilientes e menos invasivas ao hardware.

Marco Crivellari, desenvolvedor da SUSE, enviou um patch estratégico para o subsistema XFS do kernel linux. A proposta altera a forma como diversas filas de trabalho (workqueues) do sistema de arquivos são gerenciadas pelo processador, migrando do modelo “preso ao núcleo” (WQ_PERCPU) para um modelo “desvinculado” (WQ_UNBOUND).

Essa mudança foca diretamente na eficiência de sistemas que utilizam isolamento de CPU, permitindo que o kernel tenha mais flexibilidade para mover tarefas pesadas de entrada e saída (I/O) para núcleos que não estejam reservados para aplicações críticas.

Para o iniciante: o que são filas de trabalho e por que a mudança importa?

Imagine que o sistema de arquivos XFS é uma grande transportadora. Para funcionar, ela precisa de vários funcionários fazendo tarefas diferentes, como conferir notas fiscais (limpeza de inodes) ou carregar caminhões (gravação de logs).

No modelo antigo (WQ_PERCPU), cada funcionário era obrigado a ficar em uma mesa específica (um núcleo do processador). Se aquela mesa estivesse muito ocupada ou se o dono da empresa quisesse deixar aquela mesa livre para uma emergência, o funcionário não podia se mexer.

Com a mudança para o modelo desvinculado (WQ_UNBOUND), esses funcionários agora podem levar seu trabalho para qualquer mesa disponível na empresa. Isso é excelente para computadores de alto desempenho onde certos núcleos de processamento são “isolados” para rodar apenas uma tarefa ultra-importante (como um jogo ou um banco de dados) sem serem interrompidos pelas tarefas burocráticas do sistema de arquivos.

Detalhes técnicos: trocando o “preso ao núcleo” pelo “desvinculado”

A necessidade deste patch surgiu após uma refatoração recente no kernel (commit 69635d7f4b344), que adicionou automaticamente a flag WQ_PERCPU a usuários da função alloc_workqueue() que não especificavam explicitamente o comportamento desvinculado.

O problema é que as filas de trabalho do XFS afetadas — que cuidam de buffers (xfs-buf), conversões de extensões não escritas (xfs-conv), coleta de lixo de inodes (xfs-inodegc) e sincronização (xfs-sync) — não dependem de dados específicos de cada CPU para funcionar corretamente.

Ao marcar essas filas como WQ_UNBOUND, o XFS ganha duas vantagens principais:

  1. Isolamento de CPU: tarefas de manutenção do disco podem ser movidas para fora de núcleos isolados pelo administrador.
  2. Localidade de cache: embora sejam “desvinculadas”, o subsistema de filas de trabalho do kernel ainda tenta manter a afinidade de cache por padrão, garantindo que o desempenho não caia devido à movimentação de dados entre núcleos distantes.

Curiosidades e bastidores da discussão

Marco Crivellari observou que a atribuição de WQ_PERCPU feita anteriormente foi mais uma consequência da automação do que uma decisão de design para o XFS. Ao analisar o código, ele identificou que manter as tarefas presas a um único núcleo era desnecessário e até prejudicial em cenários modernos de computação de nuvem e tempo real, onde o isolamento de hardware é uma prática comum.

Um ponto relevante é que a mudança não exige que o desenvolvedor reescreva a lógica de cada tarefa, mas apenas mude a forma como o kernel enxerga a prioridade e a mobilidade desses processos através das flags WQ_HIGHPRI e WQ_UNBOUND.

Status de lançamento e disponibilidade

O patch foi enviado para a lista de discussão oficial em 18 de fevereiro de 2026.

  • Status atual: em fase de revisão pelos mantenedores do XFS e do subsistema de workqueues.
  • Previsão: se aprovado sem objeções, o código deve ser integrado à árvore xfs-next e aparecer oficialmente no kernel linux 7.1 ou 7.2.
  • Impacto para o usuário: usuários de servidores de alta performance e sistemas industriais que utilizam a diretiva isolcpus notarão um sistema mais estável e com menos latência em núcleos reservados.

Compartilhe este artigo
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre GNU/Linux, Software Livre e Código Aberto, dedica-se a descomplicar o universo tecnológico para entusiastas e profissionais. Seu foco é em notícias, tutoriais e análises aprofundadas, promovendo o conhecimento e a liberdade digital no Brasil.