Программная система анализа эффективности приложений Visual Performance System
Общая характеристика системы
В основе работы системы лежит механизм мониторинга
производительности, позволяющий при помощи реализованных на аппаратном уровне
регистров-счетчиков измерять эффективность выполнения програмного кода. Этот
механизм позваляет наблюдать за определенными параметрами процессора. Его
основой является набор специальных регистров MSR (Model Specific Register -
модельно зависимый регистр). Эти регистры не используются в вычислениях и
предназначены только для наблюдения за колличественными показателями работы
процессора(число промахов кеш-памяти, число неправильно предсказанных ветлений,
число выполненных инструкций с плавающей точкой и т.д.).
Система VPS позволяет анализировать эффективность приложений под управлением
операционных систем семейства Windows NT на процессорах следующих
микроархитектур:
Работа системы на других архитектурах семейства х86 в данный момент не
поддерхивается. VPS реализует два способа сбора информации о работе
приложения:
Фоновый мониторинг работы приложения. В этом режиме осуществляется опрос
счетчиков через указанный промежуток времени. Он не требует наличия
исходных кодов тестируемого приложения. Минимальное время опроса,
доступное системе, составляет 1 миллисекунду.
Сбор по програмным меткам. Чтобы задействовать этот
режим, необходимо в коде программы расставлять специальные метки в точках, в
которых в которых необходимо выполнить опрос счетчиков. Метки реализованы как
взовы специальной функции. Данный режим позволяет осуществлять измерения
участков длительностью более 10000 тактов с погрешностью измерения менее 10%.
для считывания значений счетчиков система VPS может использовать либо
инструкцию rdpmc, либо привилегированную rdmsr. Первый способ используется по
умолчанию, поскольку не требует перехода в режим ядра, в результате чего
затраты меньше в 5-10 раз. Необходимоть второго способа обуславливается его
универсальностью и возможностью работать с большим числом регистров, кроме
того, ранними архитектурами (до семейства Р6) поддерживается только
он.
Pис. 1. Метки реализованы как вызовы специальной функции.
В состав системы VPS входят:
драйвер режима ядра, реализующий низкоуровневую
поддержку механизма мониторинга производительности
статическая библиотека поддержки меток
приложение для запуска механизма монитора
графические утелиты для создания конфигурации системы
и отображения результатов измерений
вспомогательные утилиты
Работа механизма мониторинга требует только предварительной установки
драйвера. Для работы с графическими утилитами необходимы Microsoft .NET
Framework 3.5.
Система VPS предназначена для помощи программисту в
анализе эффективности приложений и принятии решения о направлении
оптимизации.
Основным критерием эффективности приложения является время выполнения им
вычислительно тяжелых операций (обработка запроса к базе данных, преобразование
документа из одного формата в другой, перевод с языка на язык и прочее). Наряду
с временем существует множество дополнительных показателей эффективности, таких
как число промахов кэш-памяти, число неверно предсказанных ветвлений и др. На
основе этих дополнительных показателей можно выполнять более адекватный анализ и
находить причины низкой эффективности приложения.
Система VPS позволяет выполнять мониторинг следующих показателей
эффективности:
Общий показатель эффективности IPC (instructions per
cycle, количество выполненных инструкций процессора за такт).
Специализированный показатель эффективности (например,
количество выполненных инструкций с плавающей точкой за такт).
Эффективность использования кеша L2 (количество
кеш-промахов по отношению к общему числу обращений к данным, расположенным в
кеш-памяти).
Эффективность кеша L1. С помощью этого показателя
выполняется подсчёт количества тактов, в течение которых выполнялась передача
данных из кеш-памяти 2-го уровня в процессор.
Эффективность TLB (data translation lookaside buffer,
буфер ассоциативной трансляции) – количество промахов TLB кеша данных за такт.
Такой промах возникает всякий раз, когда для операнда выполняемой инструкции в
TLB кеше данных нет страницы, на которой расположен этот операнд. Данный
показатель может быть подсчитан отдельно для инструкций чтения и инструкций
записи.
Эффективность программного кеширования (эффективность
использования группы инструкций prefetch). Инструкция считается выполненной
эффективно, если она вызвала кеш-промах, т.е. загружаемых данных не было в
кеш-памяти на момент выполнения этой инструкции (в противном случае данные
находятся в кеш-памяти и при выполнении инструкции программной загрузки данных
в кеш-память не выполняется каких-либо действий).
Эффективность предсказания ветвлений. Отношение не правильно предсказанных
ветвлений к общему количеству выполненных инструкций ветвления.
Система VPS предполагает следующий подход к процессу
оптимизации:
создать активность, указав интересующие показатели эффективности и
параметры;
собрать статистику о работе приложения;
в случае недостаточной эффективности приложения изучить собранную
статистику и принять решение о дальнейших действиях:
перейти к шагу 2 и создать активность с другим набором параметров, в
случае если собранной статистики недостаточно;
внести изменения в программный код исследуемого приложения и провести
новые тесты (перейти к шагу 2 или 3).
Система VPS позволяет программисту проводить анализ показателей времени
выполнения и принимать решение о направлении оптимизации кода. Система
предоставляет возможность сравнивать различные реализации алгоритмов не только
по агрегированному показателю времени работы, но и по более детальным метрикам,
показывающим, насколько эффективно используются ресурсы
системы.
Пример использования
Продемонстрируем возможности
системы VPS на примере алгоритма сортировки
подсчётом
.
Коллектив
Сысоев Александр Владимирович (ННГУ),
руководитель проекта
Камаев А.М., Сиднев А.А., Сысоев А.В. Об одном подходе
к оптимизации приложений // Высокопроизводительные параллельные вычисления на
кластерных системах. Труды конференции. Казань: Изд. КГТУ. 2008. С. 39-42.
Бусырев М.А., Горшков А.В., Камаев А.М., Сиднев А.А.,
Сморкалов А.М., Сысоев А.В. Эффективная работа с модельно-зависимыми
регистрами процессора в операционных системах семейства MS Windows NT //
Технологии Microsoft в теории и практике программирования. Материалы
конференции. Нижний Новгород: Изд-во Нижегородского госуниверситета. 2008. С.
45–49.
Камаев А.М., Сиднев А.А., Сысоев А.В. Об одном
подходе к анализу эффективности приложений // Труды 50-й научной конференции
МФТИ «Современные проблемы фундаментальных и прикладных наук»: Часть
I. Радиотехника и кибернетика. М.: МФТИ. 2007. С.
91–93.
Александров В.Н., Камаев А.М., Сиднев А.А., Сысоев А.В. Система анализа
эффективности приложений Visual Performance System. XII Нижегородская сессия
молодых ученых. Математические науки. 2007.