Научная статья на тему 'ДАЛЬНЕЙШАЯ РАЗРАБОТКА LINUX PERF GUI (HOTSPOT) ДЛЯ УЛУЧШЕНИЯ АНАЛИЗА ПРОИЗВОДИТЕЛЬНОСТИ'

ДАЛЬНЕЙШАЯ РАЗРАБОТКА LINUX PERF GUI (HOTSPOT) ДЛЯ УЛУЧШЕНИЯ АНАЛИЗА ПРОИЗВОДИТЕЛЬНОСТИ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
35
8
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРОГРАММНАЯ ИНЖЕНЕРИЯ / LINUX PERF GUI / HOTSPOT / ПРОИЗВОДИТЕЛЬНОСТЬ / ПРОФИЛИРОВЩИК

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Ляпидевский Александр Валерьевич, Саяпин Виталий Алексеевич, Кныш Дарья Владимировна

АО «Новосибирский институт программных систем» (НИПС) в нынешнем году отмечает свой Юбилей, Пятьдесят лет со дня основания этой организации. Данная статья посвящена этому Юбилею. Статья сообщает о наиболее важных и актуальных разработках НИПС. В частности, одна из таких разработок - Linux perf GUI (Hotspot). Дата последнего релиза: 03.11.2020. Технологии: средства разработки приложений. Разработчик: АО «Новосибирский институт программных систем» (НИПС). Основан в 1972 году как Новосибирский филиал Института точной механики и вычислительной техники. До 1992 года НИПС разрабатывал общесистемное программное обеспечение для суперЭВМ серии БЭСМ и Эльбрус. Многие сотрудники НИПС работали в Sun Microsystems с 1992 по 2004 год и с 2004 по 2016 год в Intel. В настоящее время АО «НИПС» находится под контролем Ростеха и АФК «Система».

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

FURTHER DEVELOPMENT OF LINUX PERF GUI (HOTSPOT) TO IMPROVE PERFORMANCE ANALYSIS

Novosibirsk Institute of Program Systems (NIPS) this year celebrates its Anniversary, Fifty years since thefounding of this organization. This article is dedicated to this Anniversary. The article reports on the most important andrelevant developments of the NIPS. In particular, one of such developments is Linux perf GUI (Hotspot). Last release date:03.11.2020. Technologies: application development tools. Developer: JSC "Novosibirsk Institute of Program Systems"(NIPS). It was founded in 1972 as the Novosibirsk branch of the Institute of Fine Mechanics and Computer Engineering.Until 1992, NIPS developed system-wide software for supercomputers of the BESM and Elbrus series. Many NIPSemployees worked at Sun Microsystems from 1992 to 2004 and from 2004 to 2016 at Intel. Currently, JSC NIPS is controlledby Rostec and AFK Sistema.

Текст научной работы на тему «ДАЛЬНЕЙШАЯ РАЗРАБОТКА LINUX PERF GUI (HOTSPOT) ДЛЯ УЛУЧШЕНИЯ АНАЛИЗА ПРОИЗВОДИТЕЛЬНОСТИ»

Дальнейшая разработка Linux Perf GUI (Hotspot) для улучшения анализа производительности

А.В. Ляпидевский, В.А. Саяпин, Д.В. Кныш

АО «Новосибирский институт программных систем», Новосибирск, Россия.

Аннотация: АО «Новосибирский институт программных систем» (НИПС) в нынешнем году отмечает свой Юбилей, Пятьдесят лет со дня основания этой организации. Данная статья посвящена этому Юбилею. Статья сообщает о наиболее важных и актуальных разработках НИПС. В частности, одна из таких разработок - Linux perf GUI (Hotspot). Дата последнего релиза: 03.11.2020. Технологии: средства разработки приложений. Разработчик: АО «Новосибирский институт программных систем» (НИПС). Основан в 1972 году как Новосибирский филиал Института точной механики и вычислительной техники. До 1992 года НИПС разрабатывал общесистемное программное обеспечение для суперЭВМ серии БЭСМ и Эльбрус. Многие сотрудники НИПС работали в Sun Microsystems с 1992 по 2004 год и с 2004 по 2016 год в Intel. В настоящее время АО «НИПС» находится под контролем Ростеха и АФК «Система».

Ключевые слова: программная инженерия, Linux Perf GUI, Hotspot, производительность, профилировщик.

Введение

В средах разработки программного и аппаратного обеспечения востребованы специализированные системы и инструменты для анализа и повышения производительности приложений.

Об организации АО «НИПС»

Предприятие основано в 1972 году как "Новосибирский филиал Института точной механики и вычислительной техники" для разработки основного системного

программного обеспечения для суперЭВМ «БЭСМ» и «Эльбрус». С 2018 года контрольный пакет акций принадлежит Госкорпорации «Ростех».

Сотни бывших сотрудников «НИПС» работали или продолжают работать в крупнейших IT корпорациях мира - Sun Microsystems, Intel, Oracle, Nvidia, EMC, Dell, Apple, Huawei, Samsung, Kaspersky Lab.

Основные компетенции:

• Разработка общесистемного и специального ПО, включая российские аппаратные платформы.

• Разработка компиляторов и других инструментов для разработчиков ПО.

• Разработка системных и математических библиотек.

• Разработка автоматизированных систем управления.

• Разработка прикладных информационных систем.

• Разработка систем распределенного реестра.

• Информационная безопасность.

Деятельность:

• НИОКР.

• Проектирование и разработка программного обеспечения.

• Аутсорсинг программного обеспечения.

• Технологии тестирования.

• Развертывание.

Ключевые клиенты, партнеры:

• Государственная корпорация «Ростех» и ее холдинги.

• Региональные органы исполнительной власти, государственные и коммерческие заказчики.

• Huawei.

• Новосибирский Центр Информационных Технологий "УНИПРО".

Значимые проекты.

• Разработка компиляторов. Тестирование компиляторов, виртуальных машин и системных библиотек.

• Разработка Федеральной дорожной карты «Системы распределенного реестра». Дорожные карты являются ключевыми документами национального проекта «Цифровая экономика России».

• Разработка компактной библиотеки для управляемого кода на базе Android libcore.

• Разработка программного решателя уравнений для систем параболических дифференциальных уравнений второго порядка для метода конечных объемов.

• Тестирование микропроцессоров (CPU, DSP).

• Сертификационное тестирование нового набора стандартов веб-разработки.

• Сертификационное тестирование языка программирования Dart.

• Анализатор безопасности Java.

• Пакет программ для моделирования процессов в электролизере.

Разработки для платформы «Эльбрус».

• Виртуальная машина Java для архитектуры процессоров Эльбрус.

• Внедрение виртуальной машины Java для платформы Эльбрус,

• Реализация языка JavaScript для платформы Эльбрус,

• Портирование виртуальной машины C# на платформу Эльбрус,

• Внедрение математических библиотек для платформы Эльбрус.

«Премис-платформа» — программная платформа для индивидуальных бизнес-решений. Внедрено в «Ростехе», в холдингах. Платформа включена в единый реестр программного обеспечения Российской Федерации.

«Комплексная система безопасности» -комплексная система безопасности для приборостроительного завода «Сигнал». Модуль распознавания лиц, система мониторинга и видеонаблюдения, интеграция с внутренней информационной системой предприятия.

«Восточный» - цифровой комплекс коммутации и распределения телевизионной информации для космодрома Восточный.

Патенты и сертификаты

5 патентов, 10 свидетельств на программы для ЭВМ. Патенты зарегистрированы в государственном реестре отечественного программного обеспечения Министерства связи и массовых коммуникаций Российской Федерации.

«Linux Perf GUI (Hotspot)» -

ИНСТРУМЕНТ АНАЛИЗА ПРОИЗВОДИТЕЛЬНОСТИ ПРИЛОЖЕНИЙ, КРОССПЛАТФОРМЕН-НЫЙ ПРОФАЙЛЕР С ДИЗАССЕМБЛЕРОМ С ОТКРЫТЫМ ИСХОДНЫМ КОДОМ.

Анализирует производительность мобильных, веб- и настольных приложений для платформ Linux x86_64, ARMv7 и ARMv8. Для разработчиков программного обеспечения, профилировка - это способ отладки времени исполнения и анализа производительности приложений. Для компаний, производящих оборудование и его компоненты — процессоры, сопроцессоры, видеокарты — это инструмент настройки оборудования и приложений для него. Также профайлер может быть использован для кастомизации и оптимизации специального вычислительного оборудования.

Отладка работоспособности пользовательского приложения происходит по схеме:

Профилирование-формирование профиля и его визуализация

Ф

Анализ производительности

Ф

Оптимизация кода приложение

Linux Perf GUI (Hotspot) является профайлером, инструментом для анализа производительности приложений. Основная поддерживаемая платформа — Linux x86_64. Hotspot имеет функционал кросс-профилирования — когда профиль приложения записан на одной архитектуре, а его визуализация и анализ доступны на другой. Он также охватывает ARMv7, ARMv8 и в перспективе — E2K (российский микропроцессор с архитектурой VLIW) как целевую архитектуру. Hotspot собирает данные о запусках приложений, исходный код которых написан на любом языке, скомпилированном в Linux — C, C++, Java, FORTRAN.... Hotspot визуализирует собранные данные через графический пользовательский интерфейс в удобном для анализа виде - таблицы, графики, текст.

Профайлер был разработан со следующим набором требуемых характеристик: • Функциональность кросс-профилирования с генерацией и отображением

дизассемблированного кода для набора архитектур x86_64, ARMv7, ARMv8.

• Наличие графического интерфейса для визуализации данных для анализа, поддержка удобства использования.

За основу был взят опенсорсный проект https://github.com/KDAB/hotspot. Его функционал включает:

• Сбор данных, запись информации о производительности в файл установленного формата perf.data.

• Отображение этих данных в удобном для анализа представлении: сводная информация, цепочки вызовов функций с весами, Flame Graph, функции/методы с распределением событий, стоимость каждой функции.

Мы разработали новый компонент и функционал - Кроссплатформенный дизассемблер для набора архитектур x86_64, ARMv7, ARMv8. Он позволяет генерировать и просматривать дизассемблированный код для

выбранной функции/метода. Помимо текста самого дизассемблера реализован расчет и отображение распределения событий внутри функции и стоимости инструкций. Это увеличивает глубину анализа и позволяет вычислить самую горячую точку в исходном коде, требующую оптимизации, вплоть до строки в коде (инструкции на ассемблере).

Для работы с выводом Дизассемблера разработан богатый удобный UI — с раскраской синтаксиса ассемблера, поиском текста по заданному введенному шаблону, навигацией внутри кода Дизассемблера с переходами к вызываемым методам и адресам внутри метода, возможность переключать синтаксис ассемблера на Intel и AT&T, показывать/скрывать столбцы в его выводе. Мы также улучшили графический интерфейс настроек кросс-профилирования.

Вместе с инструкциями по загрузке и сборке он размещен на GitHub по адресу

https://github.com/NIPS-Team/NIPS-hotspot.

Разработанная новая функциональность была адаптирована и включена в исходные проекты с открытым исходным кодом компаний KDAB (проекты Hotspot и perfparser) и Qt (проект Qt Creator):

• Кроссплатформенный дизассемблер с распределением событий и стоимостью инструкций.

• Удобный интерфейс для настройки кросс-профилирования.

ОБЩИЕ СВОЙСТВА и РАЗЛИЧИЕ МЕЖДУ ПРОФИЛИРОВЩИКАМИ.

Профилировщики имеют некоторые общие свойства, такие как:

• Сбор информации о частоте и распределении событий в коде пользовательского приложения.

• Анализ горячих точек, потенциальных узких мест и распределения событий в функциях приложения.

Профилировщики различаются между собой по следующим характеристикам:

Глубина анализа — уровень детализации конкретной функции/метода или строки исходного кода/инструкции на ассемблере. Набор поддерживаемых платформ, архитектур, OS.

Поддерживаемые языки исходного кода для пользовательских приложений. Наличие графического пользовательского интерфейса.

Простота использования, удобство использования.

Кросс-профилирование — когда профиль приложения записан на одной архитектуре, а его визуализация и анализ доступны на другой.

• Встроенный дизассемблер.

• Скорость работы.

Известные профилировщики - Perf, Intel VTune, NVIDIA nvprof.

Характеристики Linux Perf GUI (Hotspot)

Система разрабатывалась по заказу крупной международной высокотехнологичной компании и так определялись многие требования к ней. Следующий рисунок отвечает на основные вопросы к системе:

• Какие потребности удовлетворяет графический интерфейс Linux Perf?

• Какие возможности она предоставляет?

• Какой набор определяющих характеристик она имеет?

Linux Perf GUI (Hotspot)

Инструмент анализа производительности для специфического набора архитектур

Кросс-платформенный. Кросс- профилировка. Кросс-дизассемблер.

Визуализатор и работа с выводом дизассемблированного кода в удобном графическом интерфейсе

для набора архитектур

Встроенный дизассемблер.

Генерация и отображение дизассемблированного кода для набора архитектур -

х86_64, дкму7, дкму8

Углубленный анализ производительности

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

вплоть до инструкций в дизассемблированном коде

Визуализация данных.

Удобный многофункциональный графический интерфейс. Поддержка юзабилити.

Оригинальный функционал Linux Perf GUI framework.

Проект с открытым исходным кодом https://github.com/KDAB/hotspot.

Hotspot предоставляет графический интерфейс для записи и рендеринга perf.data. Собственный perf.data Parser — компонент, отвечающий за парсинг perf.data, исходный код которого ответвлен от open source проекта perfparser компании Qt (подпроект Qt Creator).

RECORDER: Сбор данных. Запись perf.data. Явный вызов perf record

Parser: Разбор perf.data. Формирование внутреннего представления

Visualizer

Дизассемблер. Новый программный компонент, разработанный АО «НИПС»

Отсутствует в исходном открытом исходном коде. Дизассемблер отвечает за генерацию и

отображение дизассемблированного кода, полученного в результате перевода машинного кода на язык ассемблера. Функции дизассемблера, способствующие анализу и оптимизации работы приложения:

Находит «горячие» участки, узкие места, распределение и стоимость событий внутри функций пользовательского приложения,

Визуализирует информацию в виде текста и таблиц. Данные о производительности отображаются с точностью до строки в коде или инструкции в ассемблере.

Кроссплатформенность

- работает с несколькими аппаратными платформами и операционными системами: ARMv7, ARMv8, х86 64.

Просмотр

дизассемблированного кода.

Много-функциональный, удобный GUI. Поддержка Юзабилити.

Иллюстрация работы дизассемблера: Вычисленные «горячие» участки

TopOoam (Um Graph C«*w/OlM «МИ«рЫ|г

of I

п - __ ....

Шг ifi ! IF -;= ;

ЗГС. ввн :Е 3:

п ~ —""" „и'Г*

1—и. --1, м11| , - I,,, ,

. 'it А» *t V К_№ Л* ff*1*

"ovo п ■«!: ■ 1 iiiiiiiiinii шашшп! ■I Ii «Ulli;....."Kl 1

„.„,.,, .........................

Два подхода к генерации дизассемблера: objdump и perf annotate, с возможностью их переключения через UI.

Варианты настроек Linux Perf GUI для анализа данных, собранных на машине с другой архитектурой:

Linux Perf GUI был портирован на платформу «Эльбрус» (доступно по запросу):

География open source проектов команды Linux Perf GUI АО «НИПС»

Владелец: https://github.com/NIPS-Team/NIPS-hotspot

Участник (коммиттер): https://github. com/KDAB/hotspot https://github. com/KDAB/perfparser https://code. qt. io/cgit/qt-creator/perfparser. git (git://code. qt. io/qt-creator/perfparser.git)

программного обеспечения Github (KDAB) и подчиняется всем его правилам.

• Разработка и продвижение точки доступа регулируется двумя лицензиями: GPL v2+, коммерческая лицензия KDAB.

• Миграция к GPL v3 + планируется.

Преимущества решения LINUX PERF GUI (HOTSPOT) по сравнению с perf:

Лицензия

LINUX PERF GUI развивается под эгидой международного фонда открытого

Профилирование и визуализация результатов происходят в централизованном пользовательском интерфейсе. Для perf каждое действие — сбор данных, отображение цепочек вызовов, дизассемблер с распределением и стоимостью

событий — требует формирования и запуска специальной команды с правильно подобранным набором опций. Возможность расширения функционала кросс-профилирования поддержкой других архитектур, в том числе отечественных. Возможность работать централизованно со всем спектром

Результаты

Командой LINUX PERF GUI в организации АО «НИПС»

• Разработан новый компонент и новый функционал Linux Perf GUI (Hotspot) -Кроссплатформенный дизассемблер с распределением и стоимостью событий для инструкций (кросс-профилирование с генерацией дизассемблера для набора архитектур

• Улучшенный пользовательский интерфейс для настроек кросс-профилирования.

• Базовый функционал Linux Perf GUI (Hotspot), перенесенный на платформу Эльбрус.

• Стал одним из ключевых участников открытых исходных проектов KDAB и Qt.

• Начаты исследования в области применения технологий и методов машинного обучения для анализа производительности и оптимизации кода.

Возможности развития LINUX PERF GUI:

• Сравнительный анализ различных версий кода

• Анализатор выбранных частей приложения

Выделенные части пользовательского приложения (группы): доступ к различным уровням памяти, операции с плавающей запятой, ввод-вывод, взаимодействие CPU/GPU, загрузка сетевых потоков и другие. Подразумевает разделение на группы и узнавание их. Распознавание можно организовать вокруг группы семантически связанных системных вызовов POSIX. Учитывается имеющаяся информация о событиях и их смысловых связях.

• Автоматизированный анализ производительности для оптимальной генерации кода

Для автоматического расчета некоторых эвристик и результатов анализа, используемых компилятором. Например, поиск и прогнозирование наиболее вероятных весов инструкций для их генерации в наиболее подходящем порядке, чтобы свести к минимуму промахи переходов.

Планы

• Новые функции дисассеблера

Отображение исходного кода выбранной функции пользовательского приложения, соответствующего выводу дизассемблера - при наличии исходников. С возможностью их вывода совместно или по отдельности. Разработка включающих весов для дизассемблера.

• Поддержка других OS, архитектур.

Поддержка других операционных систем, в том числе отечественных.

• Применение методов машинного обучения к анализу производительности и оптимизации кода.

Как работать с графическим интерфейсом Linux Perf?

• Необходимо загрузить исходники из репозитория GitHub https://github.com/NIPS-Team/NIPS-hotspot.

• Согласно прилагаемой инструкции https://github.com/NIPS-Team/NIPS-hotspot#readme следует установить дополнительные компоненты, такие как objdump, и собрать систему.

Сайты разработчика: http://nips.ru/products

http://nips.ru,

Добро пожаловать к нам, если вы ищете инструмент с набором представленных функций и преимуществ. А также желающих внести свой вклад в его дальнейшее развитие.

Александр Валерьевич

Ляпидевский - Кандидат экономических наук,

генеральный директор Новосибирского института программных систем, автор около 100 научных статей. Область научных интересов и компетенций - программные системы и инструменты, инновационные технологии. E-mail: nips@nips.ru Россия, Новосибирск, 630090, просп. Ак. Лаврентьева 6/1. НИПС.

Виталий Алексеевич Саяпин,

директор по исследованиям и разработкам АО «НИПС»,

E-mail: v.sayapin@nips.ru Россия, Новосибирск, 630090, просп. Ак. Лаврентьева 6/1. НИПС.

Дарья Владимировна Кныш,

ведущий разработчик и Статья поступила 22.04.2022.

технический руководитель проекта Linux Perf GUI АО "НИПС".

E-mail: d.knysh@nips.ru Россия, Новосибирск, 630090, просп. Ак. Лаврентьева 6/1. НИПС.

Further Development of Linux Perf GUI (Hotspot) to Improve

Performance Analysis

A.V. Liapidevskiy, V.A. Sayapin, D.V. Knysh JSC "Novosibirsk Institute of Program Systems", Novosibirsk, Russia

Abstract: Novosibirsk Institute of Program Systems (NIPS) this year celebrates its Anniversary, Fifty years since the founding of this organization. This article is dedicated to this Anniversary. The article reports on the most important and relevant developments of the NIPS. In particular, one of such developments is Linux perf GUI (Hotspot). Last release date: 03.11.2020. Technologies: application development tools. Developer: JSC "Novosibirsk Institute of Program Systems" (NIPS). It was founded in 1972 as the Novosibirsk branch of the Institute of Fine Mechanics and Computer Engineering. Until 1992, NIPS developed system-wide software for supercomputers of the BESM and Elbrus series. Many NIPS employees worked at Sun Microsystems from 1992 to 2004 and from 2004 to 2016 at Intel. Currently, JSC NIPS is controlled by Rostec and AFK Sistema.

Key words: software engineering, Linux Perf GUI, Hotspot, performance, profiler.

Alexander Liapidevskiy, General Director of NIPS, PhD in Economics, the author of about 100 scientific articles. Area of scientific interests and competences -software systems and tools, innovative technologies. E-mail: nips@nips.ru Russia, Novosibirsk, 630090, prosp. Ak. Lavrentieva 6/1. NIPS.

Vitaly Sayapin, Research and Development Director, NIPS. E-mail: v.sayapin@nips.ru Russia, Novosibirsk, 630090, prosp. Ak. Lavrentieva 6/1. NIPS.

Daria Knysh, lead developer and technical project manager Linux Perf GUI NIPS. E-mail: d.knysh@nips.ru Russia, Novosibirsk, 630090, prosp. Ak. Lavrentieva 6/1. NIPS.

The paper has been received on 22/04/2022.

ПРИЛОЖЕНИЕ

Сведения из открытой печати о РАЗРАБОТКЕ 2020: Linux perf GUI (Hotspot) с дизассемблером

16 октября 2020 года концерн «Автоматика» Госкорпорации Ростех сообщил о модернизации кроссплатформенной программы-профилировщика Linux perf GUI (Hotspot). Бесплатный продукт с открытым исходным кодом предназначен для тестирования производительности программного обеспечения. Решение позволит повышать производительность программного обеспечения для процессоров Intel и мобильных процессоров ARM. Программа Linux perf GUI (Hotspot) относится к кроссплатформенным профилировщикам, которые могут работать с несколькими программными платформами и операционными

системами. Linux perf GUI (Hotspot) поддерживает такие программные платформы, как ARMv7, ARMv8 и x86_64.

Основными задачами Linux Perf GUI (Hotspot) являются поиск «горячих участков», потенциально «узких мест» и распределение событий в функциях приложения анализируемых программ. Профилировщик имеет пользовательский интерфейс, куда выводится информация в табличном, текстовом и других форматах. Данные об анализируемых программах выдаются с высокой степенью детализации. Важное преимущество обновленного профилировщика - дизассемблер - транслятор, преобразующий машинный код в язык программирования низкого уровня, что важно при анализе исходных программ.

В рамках доработки был сформирован богатый пользовательский интерфейс, позволяющий разработчикам эффективно проводить анализ производительности с точностью до строки в коде (инструкций в ассемблере). Эта функциональность делает продукт востребованным в кругах разработчиков программного обеспечения.

«Новосибирский институт программных систем, входящий в Концерн «Автоматика», обладает компетенциями по проектированию и разработке сложных программных систем. Данная программа предназначена для решения проектных задач государственных и коммерческих компаний, а также команд-разработчиков ПО, которым требуется профилировщик с определенным набором характеристик, таких как кроссплатформенность и

наличие дизассемблера - транслятора, преобразующего машинный код в язык программирования низкого уровня. Также Концерн «Автоматика» ведет работы по дальнейшему развитию Linux perf GUI (Hotspot) на базе отечественной архитектуры «Эльбрус». Планируется дальнейшее расширение функционала профилировщика. Продукт будет представлять интерес для широкого круга производителей программного обеспечения», - комментирует генеральный директор Концерна «Автоматика» Владимир Кабанов.

Источник:

https://www.tadviser.ru/index.php/%D0%9F%D1%80% D0%BE%D0%B4%D1%83%D0%BA%D1%82:Linux perf GUI (Hotspot)

i Надоели баннеры? Вы всегда можете отключить рекламу.