JVM-профайлер с чувством такта

День 1 /  / Зал 1  /  RU / Дичь

Все Java-профайлеры в той или иной степени лукавят, потому как средств JDK заведомо не хватает, чтобы точно узнать, на что тратятся такты процессора. Даже «честные» профайлеры, основанные на внутренних интерфейсах HotSpot JVM, не расскажут всей правды. Остаётся прибегнуть к аппаратным счётчикам и функциям ядра, но вот беда: они ничего не знают о Java-коде. Мы обсудим различные подходы к профилированию: JVM TI, AsyncGetCallTrace, perf_events и Flame Graphs; разберём принципы их работы, достоинства и ограничения, а также найдём способ взять лучшее от каждого из них. В завершение рассмотрим, как Одноклассники профилируют в продакшене весь стек от Java-кода до ядра Linux.

Андрей Паньгин
Одноклассники

Ведущий программист компании Одноклассники, специализирующийся на высоконагруженных бэкендах. Знает JVM как свои пять пальцев, поскольку ранее на протяжении нескольких лет разрабатывал виртуальную машину HotSpot в Sun Microsystems и Oracle. Любит ассемблер и низкоуровневое системное программирование. Автор проекта one-nio на GitHub — фреймворка для создания производительных серверных приложений на Java.

Вадим Цесько
Одноклассники

Вадим Цесько — ведущий разработчик в Платформе Одноклассников. Начал путь в IT/CS в 2004 с создания систем гидроакустики и исследовательских проектов по статическому анализу кода. Больше 5 лет разрабатывал высоконагруженные распределённые интернет сервисы в Яндекс.Вертикалях. Эпизодически читает лекции и доклады по распределённым и параллельным вычислениям и хранилищам данных. В свободное время изучает статьи, решает задачи на Project Euler, играет в PS4 с женой или программирует LEGO Mindstorms.

Наши контакты