JVM-профайлер, который смог (стать кроссплатформенным)

День 1 /  / Зал 3  /  RU /

В JetBrains пару лет назад добавили поддержку async-profiler для Mac и Linux. Начали им пользоваться и поняли, что нужен async-profiler, работающий на Windows. На Linux и Mac async-profiler использует механизм POSIX-сигналов и нативную раскрутку стеков. Команде нужно было разобраться, как конкретно работает AsyncGetCallTraces, сравнить его внутреннее устройство с JFR. А если окажется, что их устраивает работа AsyncGetCallTraces, то нужно научиться эмулировать механизм сигналов и раскручивать нативные стеки. Кроме этого нужно решить разные ОС-специфичные проблемы, которые возникнут по пути.

Доклад будет интересен людям, которым интересна нативная и низкоуровневая разработка и всякие приколы уровня ОС. Слушатели узнают, что на самом деле можно решить любую задачу, если выбрать достаточно низкий уровень абстракции.


Почему этот доклад в программе

Чем хорош спикер: Рассказчик - редкий специалист по Win32 API и Java

Чем хороша тема: Известный async-profiler теперь доступен и на Windows. Автор порта рассказывает о том, как сделан порт и на какие компромиссы и ухищрения пришлось пойти.

Кому будет полезно: Хотите узнать какой ценой дается run anywhere?

Почему здесь и сейчас: Deep dive по тонкостям windows и оособенностям Java

Спикер(ы)

Кирилл Тимофеев
JetBrains

Закончил кафедру КТ в ИТМО. Успел немного поработать в Яндексе. Последние три года работает в JetBrains над поддержкой инструментов профилирования в IntelliJ IDEA.

Приглашенные Эксперты

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

Главный инженер в компании «Одноклассники», специализирующийся на разработке высоконагруженных Java-серверов. Благодаря опыту работы в Oracle в команде HotSpot, знает JVM как свои пять пальцев и охотно делится экспертизой на конференциях. Автор проектов one-nio, async-profiler, а также лидер по ответам в категории #JVM на Stack Overflow.