Turbinando o 9p: patches melhoram em 40% a compilação em máquinas virtuais linux

Builds velozes: patches para o 9p reduzem o tempo de compilação em VMs linux em até 40%!

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 das consultas inúteis: o cache de "dentries negativos" permite que o sistema lembre que um arquivo não existe, evitando viagens redundantes ao servidor host durante a busca por cabeçalhos.
  • Resolução de links instantânea: novos patches habilitam o cache de links simbólicos (symlinks) no cache de página do linux, eliminando atrasos em builds que dependem de estruturas de pastas complexas.
  • Ganhos reais de performance: testes mostram uma redução total de 37% no tempo de compilação, tornando o 9p competitivo com o virtiofs em fluxos de trabalho de desenvolvimento.
  • Nova opção de montagem: a introdução do ndentrytimeout dá aos administradores controle granular sobre por quanto tempo as informações de arquivos inexistentes devem permanecer na memória.
  • Melhoria para o desenvolvedor: as otimizações focam especialmente no modo cache=loose, o favorito para ambientes de desenvolvimento isolados e montagens de apenas leitura.

Uma série de patches proposta por Remi Pommarel promete resolver um dos gargalos mais frustrantes para desenvolvedores que utilizam máquinas virtuais (VMs) com o sistema de arquivos 9p (Plan 9 Filesystem Protocol): a lentidão extrema em operações de compilação.

O 9p é amplamente utilizado (por exemplo, no QEMU/KVM) para compartilhar pastas do sistema hospedeiro (host) com o sistema convidado (guest). No entanto, quem já tentou compilar um projeto grande dentro de uma VM acessando o código via 9p sabe que a performance pode ser sofrível.

O problema: excesso de viagens de rede

O culpado pela lentidão não é a transferência de dados em si, mas a latência causada por milhares de pequenas operações repetitivas. Durante uma compilação, o compilador (como o GCC) faz duas coisas obsessivamente:

  1. Procura por arquivos de cabeçalho (.h) em vários diretórios, gerando muitos erros de “arquivo não encontrado” (lookup negativo).
  2. Lê links simbólicos (symlinks) repetidamente para resolver caminhos.

No 9p padrão (mesmo com a opção cache=loose), cada uma dessas verificações dispara uma viagem de ida e volta (RPC) ao servidor no host. Isso soma minutos de espera em um build complexo.

A solução: cache inteligente

Os novos patches introduzem otimizações específicas para esses cenários:

  1. Cache de dentries negativos: Agora, quando o sistema descobre que um arquivo não existe, ele memoriza essa informação. Isso evita perguntar ao servidor novamente sobre o mesmo arquivo inexistente. Uma nova opção de montagem, ndentrytimeout (ou ndentrytmo), permite definir por quanto tempo essa informação é lembrada.
  2. Cache de symlinks: O resultado da leitura de links simbólicos passa a ser armazenado no cache de página do Linux. Assim, acessos subsequentes ao mesmo link são resolvidos instantaneamente na memória da VM, sem consultar o host.

Resultados impressionantes

Nos testes realizados pelo autor, compilando o hostapd, o tempo de build caiu de 2m18s para 1m26s — uma melhoria de 37%. Outro desenvolvedor, Christian Schoenebeck, reportou ganhos médios de 40%, chegando a 60% em alguns casos.

Com essas mudanças, o 9p se torna competitivo com o virtiofs, a alternativa moderna (mas às vezes mais complexa de configurar) para compartilhamento de arquivos em virtualização.

Status e disponibilidade

Os patches estão na versão 2 (v2) e receberam feedback positivo e testes da comunidade. A expectativa é que sejam integrados em uma versão futura do kernel Linux (possivelmente após a 6.20), trazendo alívio imediato para desenvolvedores que dependem de ambientes virtualizados leves.

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.