Профилируем черного лебедя с помощью Intel Processor Trace, или Что делать, если иногда код выполняется 20 мс вместо 2 мс

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

Комментарий Программного комитета:

Доклад-продолжение нашумевшего выступления на JPoint 2018 про профилирование с точностью до микросекунд. На этот раз Сергей расскажет, как использовать новейшие фичи процессоров Intel для сверхточного профилирования прямо из приложения.

В начале мы посмотрим, почему быстродействие совсем небольшого участка кода может напрямую влиять на успех приложения. Далее попробуем профилировать этот участок кода с помощью профилировщика perf. Мы научимся собирать нужный профиль, но ценой ощутимых накладных расходов.

Далее мы рассмотрим, как можно сделать небольшой профилировщик из подручных средств, используя интерфейс ядра ОС Linux. Созданный профилировщик будет использовать технологию Intel Processor Trace, которая позволяет восстановить трассу выполнения приложения. Мы пройдем через все шаги, необходимые для создания профилировщика: сбор и декодирование трассы, добавление информации о методах и аггрегация профиля. В итоге у нас получится небольшой профилировщик. Мы его применим для профилирования разбора JSON и посмотрим на результаты.

Затем мы увидим, что зачастую средних метрик для описания производительности кода недостаточно и необходимы метрики, которые описывают, насколько медленно иногда работает наш код. И оказывается, эти редкие замедления встречаются нашим пользователям намного чаще, чем мы думаем и чем бы нам хотелось.

Мы посмотрим, почему иногда наш код может работать медленнее среднего, и неожиданно увидим, что все профилировщики, которыми мы пользовались ранее, не очень помогают нам находить причины этих замедлений. На базе разработанного только что профилировщика мы сделаем инструмент, который позволит нам заглянуть в эти редкие замедления с небывалой точностью и понять, в чем же причина замедления. И только в самом конце мы узнаем, какая же связь черных лебедей и профилирования приложений на Java.


Скачать презентацию
Сергей Мельников
Сергей Мельников
Райффайзенбанк

Работает в Райффайзенбанке с 2016 года над высокочастотным торговым приложением. В основном занимается ускорением существующего и написанием нового low-latency кода на Java. До этого работал в Intel инженером по производительности компиляторов для языков C/C++/FORTRAN.

Прошлые выступления спикера