- 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:
- Isolamento de CPU: tarefas de manutenção do disco podem ser movidas para fora de núcleos isolados pelo administrador.
- 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-nexte 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
isolcpusnotarão um sistema mais estável e com menos latência em núcleos reservados.
