Когда производительность приложения падает под нагрузкой, когда возникают непонятные лаги, или когда глубокие системные вызовы ведут себя непредсказуемо, как разработчики могут заглянуть под капот работающей системы без перезагрузки и перекомпиляции ядра? Ответ для современных Linux-систем лежит в использовании технологий на базе eBPF.
Почему именно bpftrace?
Давайте отложим историю экосистемы eBPF и сосредоточимся на практической стороне. bpftrace
в экосистеме eBPF — это аналогия awk
для трассировки ядра. Инструмент позволяет создавать мощные скрипты для трассировки событий ядра практически в реальном времени без чрезмерных накладных расходов.
Классические инструменты вроде strace
или perf
имеют ограничения:
strace
существенно замедляет систему при интенсивном использованииperf
даёт данные в агрегированном виде, не подходит для детального исследования конкретных системных вызовов