BPF: трассировка и не только
linux conf au 2017 - Hobart, Australia
0:00 / 0:00
BPF: трассировка и не только
40 626 просмотров · 9 лет назад
linux conf au 2017 - Hobart, Australia
5,54 тыс. подписчиков
40 626 просмотров · 9 лет назад
Брендан Грегг
http://linux.conf.au/schedule/present...
В серии Linux 4.x открывается мир новых возможностей благодаря улучшениям, включенным в Linux для Berkeley Packet Filter (BPF): виртуальной машины в ядре, которая может выполнять программы, определяемые пользовательским пространством. Она находит применение в аудите и обеспечении безопасности, улучшении работы сети (включая eXpress Data Path), а также в наблюдении за производительностью и устранении неполадок. За последние 12 месяцев было написано множество новых инструментов с открытым исходным кодом для анализа производительности, использующих BPF. Наконец-то в Linux появились возможности трассировки!
Для использования с трассировкой BPF предоставляет программируемые возможности существующим фреймворкам трассировки: kprobes, uprobes и tracepoints. В частности, BPF позволяет записывать и сравнивать временные метки пользовательских событий, что позволяет изучать задержку во многих новых местах: внутри ядра и приложений. Это также позволяет эффективно обобщать данные в ядре, в том числе в виде гистограмм. Благодаря этому были разработаны десятки новых инструментов мониторинга, включая измерение распределения задержек ввода-вывода файловой системы и задержек очереди выполнения, вывод подробной информации о вводе-выводе устройств хранения и повторных передачах TCP, исследование заблокированных трассировок стека и утечек памяти, и многое другое.
В этом докладе будет кратко изложен потенциал и варианты использования BPF, а затем основное внимание будет уделено его применению для улучшения трассировки Linux, особенно с использованием коллекции bcc с открытым исходным кодом. bcc включает в себя версии BPF старых классических инструментов, а также множество новых инструментов, включая execsnoop, opensnoop, funcccount, ext4slower и другие (многие из которых я разработал). Возможно, вы захотите разработать новые инструменты или использовать существующие инструменты для поиска больших и малых улучшений производительности, особенно при инструментировании областей, которые ранее были совершенно невидимы. Я также кратко расскажу о том, как мы планируем использовать эти новые возможности для улучшения системного анализа в Netflix.