KernelLens: трассировка системных вызовов Linux с нагрузкой менее 1%
KernelLens — eBPF-трассировщик, который показывает системные вызовы, их длительность и ошибки. В отличие от strace, он не останавливает процесс дважды на каждом вызове, а запускает обработчики во встроенных точках ядра. Нагрузку strace автор оценивает примерно в 40%.
Фильтры по PID и списку вызовов работают в ядре, поэтому ненужные события не попадают в кольцевой буфер и пользовательскую программу. Переполнение буфера считают отдельно для каждого ядра процессора, а при высокой нагрузке отправляют только каждое N-е подходящее событие.
В статье на DEV Community разобраны код обработчиков, измерение задержки и чтение строк из памяти процесса. Полезная основа для собственной утилиты наблюдения за Linux-серверами.
Post #2983
744
