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
| Piattaforma | Comando |
|---|
| Oracle Linux / Fedora | sudo dnf install bpftune |
| Dal codice sorgente | git clone https://github.com/oracle/bpftune && make && sudo make install |
| Servizio | sudo systemctl enable --now bpftune |
| Verifica | bpftune -h |
Esecuzione
| Comando | Descrizione |
|---|
sudo bpftune | Esegui in foreground |
sudo bpftune -d | Esegui come daemon |
sudo systemctl start bpftune | Avvia via systemd |
sudo bpftune -s | Mostra riepilogo dei tuner e stato attuale |
journalctl -u bpftune -f | Guarda le decisioni di tuning live |
Opzioni chiave
| Flag | Effetto |
|---|
-d | Modalità daemon |
-s | Output di riepilogo/stato |
-S | Sopprimere (dry-run) — registra cosa avrebbe cambiato |
-L | Modalità apprendimento / comportamento legacy |
-r | Rollback delle modifiche all”uscita |
-l LEVEL | Verbosità del log |
# Vedi cosa tunerebbe senza cambiare nulla
sudo bpftune -S -l debug
Cosa sintonizza
| Tuner | Regola |
|---|
| Buffer TCP | tcp_rmem / tcp_wmem sotto pressione di throughput |
| Congestione TCP | Selezione dell”algoritmo di controllo della congestione |
| Limiti di connessione | somaxconn, dimensioni del backlog quando le code scorrono |
| Tabella Neighbour | Dimensioni della tabella ARP/ND quando le voci vengono eliminate |
| Tabella rotte | Dimensionamento della cache delle route |
| Netns / sysctl | Equivalenti per namespace dove applicabile |
Come funziona il circuito di feedback
| Step | Dettaglio |
|---|
| Observe | I probe eBPF contano drop, overflow, event di pressione |
| Decide | Se una soglia viene raggiunta ripetutamente, il parametro è un collo di bottiglia |
| Adjust | Aumenta il limite in modo incrementale (mai illimitato) |
| Re-observe | Conferma che il sintomo sia scomparso |
| Back off | Se 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
| Scenario | Fit |
|---|
| Workload variabili/sconosciuti | Forte — si adatta al cambio del carico |
| Istanze cloud di diverse dimensioni | Forte — nessun tuning per istanza |
| Workload altamente ottimizzato e fisso | Debole — i tuoi valori manuali sono probabilmente migliori |
| Controllo del cambiamento rigoroso | Usa il dry-run -S, o salta |
bpftune vs Tuning manuale/profilo
| Aspetto | bpftune | TuneD | sysctl manuale |
|---|
| Modello | Continuo, basato su feedback | Profili statici | Valori una tantum |
| Si adatta al carico | Sì | No | No |
| Configurazione necessaria | Nessuna | Scegli un profilo | Piena competenza |
| Rispetta le impostazioni manuali | Sì (si ritira) | Sovrascrive | N/A |
Complementa TuneD (profili statici ampi) e strumenti diretti come cpupower; bpftune mira ai limiti specifici di rete/kernel.
Risorse