Программирование

Брендан Грегг. BPF. Профессиональная оценка производительности

BPF. Профессиональная оценка производительности

Инструменты оценки производительности на основе BPF дают беспрецедентную возможность анализа систем и приложений. Вы сможете улучшить производительность, устранить проблемы в коде, повысить безопасность и сократить расходы. Книга «BPF: профессиональная оценка производительности» — ваш незаменимый гайд по применению этих инструментов. Брендан Грегг — эксперт и пионер проекта BPF — представляет более 150 готовых инструментов анализа и отладки, рекомендации по их применению, а также пошаговые инструкции по разработке ваших собственных инструментов. Вы узнаете, как анализировать процессоры, память, дисковый ввод/вывод, файловую систему, сети, языки программирования, приложения, контейнеры, гипервизоры, безопасность и ядро. Вы сможете выработать глубокое понимание того, как улучшить буквально любую Linux-систему или приложение. Иногда программисты говорят, что они «стряпают патч» («cook a patch»), а не «реализуют» (implement). Я начал увлекаться программированием еще в школе. Чтобы получить хороший код, программист должен выбрать лучшие «ингредиенты». Разные языки программирования предлагают множество разных строительных блоков — «ингредиентов», но когда дело доходит до программирования ядра Linux, то кроме самого ядра у вас ничего нет. В ядре Linux уже был похожий механизм, известный как BPF (Berkeley Packet Filter — пакетный фильтр Беркли), поддерживавший минимальный набор команд, которые можно использовать для фильтрации пакетов перед передачей их приложениям, таким как tcpdump.

Существует множество языков программирования, компиляторов и сред выполнения для них. У каждого языка есть свои особенности, по которым можно отследить запуск программ, написанных на нем. Глава 12 объясняет такие различия и помогает реализовать трассировку программ, написанных на любом языке. Начнем с описания способов реализации разных языков программирования, а затем исследуем возможности трассировки, используя в качестве примеров несколько языков: язык C будет представлять компилируемые языки, Java — языки с JIT-компиляцией, а язык командной оболочки bash — интерпретируемые языки. На примере каждого из них я расскажу, как искать имена функций (символы), аргументы функций, а также как получать и исследовать трассировки стека. В конце главы я также затрону вопросы трассировки программ на других языках: JavaScript (Node.js), C++ и Golang. Неважно, с каким языком вы работаете. Прочтя эту главу, вы научитесь его инструментировать, а также узнаете проблемы и их решения, которые встречались в других языках.

Издательство: Питер
Год: 2024
Страниц: 880
Язык: русский
Формат: pdf

 

Скачать книгу (12,2 МБ):

brij 02/12/23 Просмотров: 763
0