Salta ai contenuti

bpftune - Foglio di aiuto per l'ottimizzazione automatica del kernel con eBPF

bpftune - Foglio di aiuto per l’ottimizzazione automatica del kernel con eBPF

bpftune (di Oracle) è un daemon leggero che ottimizza automaticamente i parametri del kernel Linux utilizzando eBPF. Piuttosto che richiedere a un amministratore di indovinare i valori di sysctl, osserva il comportamento effettivo del sistema tramite probe eBPF — pressione del buffer TCP, saturazione della tabella di connessione, reclaim della memoria — e regola continuamente i parametri rilevanti al cambio del carico. Il suo principio guida è essere invisibile: overhead quasi nullo, nessuna configurazione richiesta e deliberatamente si ritira da qualsiasi parametro impostato manualmente da un amministratore.

L”ottimizzazione automatica cambia il comportamento del kernel su un sistema live. Provalo su host non critici e osserva i log prima del rollout ampio.

Requisiti

  • Kernel Linux con supporto BPF e BTF (5.15+ consigliato)
  • Privilegi root (carica programmi eBPF, scrive sysctls)

Installazione

PiattaformaComando
Oracle Linux / Fedorasudo dnf install bpftune
Dal codice sorgentegit clone https://github.com/oracle/bpftune && make && sudo make install
Serviziosudo systemctl enable --now bpftune
Verificabpftune -h

Esecuzione

ComandoDescrizione
sudo bpftuneEsegui in foreground
sudo bpftune -dEsegui come daemon
sudo systemctl start bpftuneAvvia via systemd
sudo bpftune -sMostra riepilogo dei tuner e stato attuale
journalctl -u bpftune -fGuarda le decisioni di tuning live

Opzioni chiave

FlagEffetto
-dModalità daemon
-sOutput di riepilogo/stato
-SSopprimere (dry-run) — registra cosa avrebbe cambiato
-LModalità apprendimento / comportamento legacy
-rRollback delle modifiche all”uscita
-l LEVELVerbosità del log
# Vedi cosa tunerebbe senza cambiare nulla
sudo bpftune -S -l debug

Cosa sintonizza

TunerRegola
Buffer TCPtcp_rmem / tcp_wmem sotto pressione di throughput
Congestione TCPSelezione dell”algoritmo di controllo della congestione
Limiti di connessionesomaxconn, dimensioni del backlog quando le code scorrono
Tabella NeighbourDimensioni della tabella ARP/ND quando le voci vengono eliminate
Tabella rotteDimensionamento della cache delle route
Netns / sysctlEquivalenti per namespace dove applicabile

Come funziona il circuito di feedback

StepDettaglio
ObserveI probe eBPF contano drop, overflow, event di pressione
DecideSe una soglia viene raggiunta ripetutamente, il parametro è un collo di bottiglia
AdjustAumenta il limite in modo incrementale (mai illimitato)
Re-observeConferma che il sintomo sia scomparso
Back offSe un amministratore ha impostato il valore manualmente, non toccarlo

Questo ciclo “osserva, spinge, verifica” è il motivo per cui può girare continuamente senza oscillare.

Verifica dell”effetto

# Cosa ha cambiato bpftune?
sudo bpftune -s

# Conferma un sysctl che ha segnalato di aver regolato
sysctl net.ipv4.tcp_rmem net.core.somaxconn

# Correla con il sintomo che stava correggendo
ss -s                      # statistiche socket/coda
netstat -s | grep -i drop  # drop che hanno attivato il tuning

Quando usarlo

ScenarioFit
Workload variabili/sconosciutiForte — si adatta al cambio del carico
Istanze cloud di diverse dimensioniForte — nessun tuning per istanza
Workload altamente ottimizzato e fissoDebole — i tuoi valori manuali sono probabilmente migliori
Controllo del cambiamento rigorosoUsa il dry-run -S, o salta

bpftune vs Tuning manuale/profilo

AspettobpftuneTuneDsysctl manuale
ModelloContinuo, basato su feedbackProfili staticiValori una tantum
Si adatta al caricoNoNo
Configurazione necessariaNessunaScegli un profiloPiena competenza
Rispetta le impostazioni manualiSì (si ritira)SovrascriveN/A

Complementa TuneD (profili statici ampi) e strumenti diretti come cpupower; bpftune mira ai limiti specifici di rete/kernel.

Risorse