← retour aux snippets

bpftrace: one-liners de latence pratiques

Mesurer des latences de syscalls ou fonctions user-space avec eBPF sans instrumentation lourde.

bash monitoring #bpftrace#ebpf#latency

objectif

Diagnostiquer des lenteurs ponctuelles en production avec un impact minimal.

code minimal

# latence des reads > 10ms
sudo bpftrace -e 'k:sys_enter_read { @start[tid]=nsecs; } k:sys_exit_read /@start[tid]/ { $d=(nsecs-@start[tid])/1e6; if($d>10){ printf("%d ms\n",$d); } delete(@start[tid]); }'

utilisation

# histogramme de latence de accept()
sudo bpftrace -e 'tracepoint:syscalls:sys_enter_accept { @ts[tid]=nsecs; } tracepoint:syscalls:sys_exit_accept /@ts[tid]/ { @h=((nsecs-@ts[tid])/1000000); @hist[@h] = count(); delete(@ts[tid]); }'

variante(s) utile(s)

# profil d'échantillonnage (offcpu) simple
sudo bpftrace -e 'profile:hz:49 { @[ustack] = count(); }' -p $(pgrep -xo app)

notes

  • nécessite kernel avec eBPF et bpftrace installé.
  • ne laissez pas tourner longtemps sur systèmes chargés.