20 pontos por xguru 2024-11-19 | 2 comentários | Compartilhar no WhatsApp
  • Ferramenta leve projetada para ajustar automaticamente e continuamente o desempenho do sistema usando os recursos de observabilidade do BPF (eBPF)

Problemas que busca resolver

  • Muitas opções de ajuste: o kernel Linux possui mais de 1600 parâmetros sysctl ajustáveis. Encontrar configurações adequadas para diferentes ambientes é complexo e difícil
  • Menor intervenção do administrador: em sistemas modernos de nuvem, é necessário gerenciamento automatizado em vez de ajuste manual. A maioria dos sistemas quase não recebe intervenção do administrador após a configuração inicial
  • Limitações de configurações estáticas: como o ambiente do sistema muda continuamente, ajustar com valores fixos pode ser ineficiente

Princípios centrais de design

  • Overhead mínimo: evita rastrear eventos de alta frequência e usa recursos de observabilidade apenas quando realmente necessário
  • Clareza na explicação das políticas: registra no syslog “o que” foi alterado e “por que”
  • Administrador em primeiro lugar: se o administrador definir um valor, a função de ajuste automático é desativada
  • Princípio sem configuração: ajusta automaticamente sem configurações adicionais. Evita números mágicos sempre que possível
  • Ajuste dinâmico: quando o uso de memória TCP aumenta, reduz o tamanho dos buffers para equilibrar o sistema

Conceitos principais

  • Tuner: cada tuner processa eventos gerados por programas BPF e gerencia os itens ajustáveis relacionados
  • Strategy: um tuner pode ter várias strategies, e cada uma escolhe a mais eficaz por meio de uma função de avaliação
  • Event: inclui ID do tuner, cenário, informações de namespace de rede etc., e o tuner executa ações apropriadas com base nessas informações

Arquitetura

  • bpftune funciona como um daemon e carrega e gerencia vários tuners em formato de plugin .so.
  • Cada tuner possui um ID exclusivo e processa eventos no BPF e no espaço do usuário.
  • O componente BPF inclui bpftune.bpf.h e usa variáveis compartilhadas e definições de mapas.

Lista de tuners suportados

  • TCP connection tuner: ajuste automático do algoritmo de controle de congestionamento
  • neighbour table tuner: expansão automática do tamanho da tabela de vizinhos
  • route table tuner: expansão automática do tamanho da tabela de rotas
  • sysctl tuner: desativa o tuner quando os valores sysctl ajustados entram em conflito com configurações manuais
  • TCP buffer tuner: ajuste automático do tamanho dos buffers TCP
  • net buffer tuner: ajuste automático de parâmetros centrais relacionados à rede
  • netns tuner: detecta adição e remoção de namespaces de rede

2 comentários

 
xguru 2024-11-19

Opiniões do Hacker News

  • Há preocupação de que diagnosticar e resolver problemas do sistema possa ficar mais difícil
  • O conceito de "loop de feedback" é importante para explicar a possibilidade de surgirem problemas
    • Não é um problema do kernel Linux, do BPF ou do próprio programa, mas da forma como ele funciona
    • Pode não haver risco, pode haver mecanismos de controle e, mesmo que surjam problemas, o sistema pode convergir para um estado estável
  • A teoria de controle parece ser um tanto subaplicada na engenharia de software
  • Gostaria de ouvir a opinião de quem usa essa ferramenta
    • Fico curioso se ela é eficaz e se o tempo gasto na configuração vale a pena
  • O bpftune foi projetado como uma ferramenta que não exige configuração
    • É bem-vinda uma ajuda automatizada que dispense aprender muitas configurações
  • Pode ser usado diretamente no CachyOS
    • Após a instalação, é possível acessá-lo em CachyOS Hello -> Apps/Tweaks
  • Há curiosidade sobre sua eficácia em ambientes multitenant, como clusters k8s compartilhados
    • Cada aplicação tem objetivos diferentes e se move entre nós ao longo do tempo
    • Ainda assim, provavelmente há semelhanças entre a maioria das aplicações
  • Há curiosidade se o ajuste do tamanho do buffer TCP realmente vale a pena
  • Existe a dúvida de que, se fosse fácil ajustar os parâmetros para os valores ideais, o kernel não deveria já ter feito isso desde o início?
  • É excelente ver a evolução do simples filtragem de pacotes para rastreamento e monitoramento
    • É uma ótima ferramenta que a maioria das pessoas deveria conhecer
    • Já a utilizo há alguns anos