jugru JUG.ru 2019 (30.05.2019)

Профилирование со сверхсветовой скоростью

img

Тема профилирования Java-приложений нынче изрядно изъезжена. Можно ли в ней найти хоть что-то новое?

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

Сергей расскажет о том, как пользоваться стандартным профилировщиком Linux’а, perf’ом, для профилирования самых настоящих приложений на Java и как выжать из perf’а максимум для того, чтобы получить профиль небывалой детализации.

Далее Сергей покажет, как использовать технологию Intel Processor Trace для получения ещё более подробного профиля. Чтобы использовать эту сугубо аппаратную технологию, нам придётся написать свой небольшой профилировщик, используя штатный механизм ядра Linux. Созданный профилировщик позволяет не только собирать очень-очень точный профиль, но и показывать, почему наш софт иногда работает медленнее.

На практике окажется, что разработчиков на каждом шаге подстерегают опасности. То, что «в среднем» работает быстро, иногда работает существенно медленнее! И такие подводные камни встречаются намного чаще, чем кажется. Более того, наши пользователи видят эти редкие случаи гораздо чаще, чем мы думаем. Но теперь у нас окажется средство, которое позволяет профилировать не только средний случай, но и эти редкие события. А если мы сможем получить профиль этого редкого события, то мы сможем и исправить его!