Профилирование приложений .NET Core на Linux

Зал 3 | День 2 | 12:00 | RU | Хардкор. Сложный низкоуровневый доклад, требующий от слушателя знаний технологии.

В докладе будет рассказано о технологиях профилирования C# кода на на платформе .NET Core Linux: таких инструментах как Linux perf, LTTng, а также о разработанном нами профайлере для Visual Studio Tools for Tizen.

Как известно, компания Microsoft разрабатывает среду выполнения CoreCLR, обеспечивая поддержку разных архитектур и систем, включая Linux. Однако, в настоящее время, наиболее полная поддержка профилирования для .NET Core обеспечивается только для операционных систем семейства Windows. В то время как для других операционных систем существующая поддержка профилирования CoreCLR ограничена, ее реализация не полноценна. На Linux вы можете напрямую использовать perf и LTTng, либо собирать информацию об исполнении приложений с помощью скрипта perfcollect с последующим просмотром на Windows в утилите PerfView. Но такой подход неудобен для решения повседневных задач, а также ощущается нехватка инструментов для анализа собранных данных. Таким образом, важные параметры исполнения приложения, имеющие значение для анализа производительности и его оптимизации, могут быть недоступны для пользователя.

Разработанный нами инструмент, в свою очередь, является альтернативным решением и ориентирован на широкую аудиторию разработчиков. Профилирование приложений для Tizen и анализ результатов возможен непосредственно из IDE Microsoft Visual Studio 2015. Пользователь может получить информацию о «горячих» по времени работы и выделяемой памяти методах, о горячем пути (hot path), о нагрузке на CPU, о работе JIT и GC. При этом разработанная для взаимодействия с CoreCLR библиотека профилирования не имеет привязки к платформе Tizen и будет выложена в открытый доступ.

Мы продемонстрируем возможные сценарии профилирования приложений .NET Core на Linux, расскажем о различных инструментах, а также о подходах, которые мы использовали в своей реализации. Эта информация может быть интересна как тем, кто ищет готовые решения для профилирования кода, так и тем, кто хочет больше узнать о том, какие средства профилирования предоставляет среда выполнения .NET Core и как они могут быть использованы при реализации собственного инструментария.


Алексей Верещагин
Алексей Верещагин alexeyv_90

ЦПР РТСофт

В 2012-м окончил с отличием Московский государственный индустриальный университет (МГИУ), получив квалификацию математик-программист. Здесь же ещё до выпуска начал карьеру (разработка, преподавание, системное администрирование). Участвовал в разработке различных информационных и образовательных систем университета (в основном Ruby on Rails и C/C++), включая работу по автоматизации тестирования студенческих программ и генерации тестовых наборов по формальному описанию.

С 2015-го работает в компании РТСофт, занимаясь прикладным и системным программированием (в т.ч. embedded), преимущественно на C/C++. Участвует в разработке производительного программного обеспечения для проекта ITER (Международный экспериментальный термоядерный реактор).

В 2016 году получил предложение поучаствовать в разработке профайлера приложений CoreCLR для Linux ARM. Таким образом и состоялось первое знакомство с технологией .NET.


Все доклады