Нижегородский государственный университет им.Н.И.Лобачевского.

ЛАБОРАТОРИЯ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ

Факультет вычислительной математики и кибернетики

Лаборатория ITLabИсследованияПроекты 2003-2009 гг.Учебно-исследовательские проектыVisual Performance System Switch to English version  
Новости
О Лаборатории
Обучение
Исследования
Проекты 2011 г.
Проекты 2010 г.
Проекты 2003-2009 гг.
Образовательные комплексы
Семинар Лаборатории
Мероприятия
Вакансии Интел
Сотрудничество
Разработчики сайта
О нас пишут
Летняя школа 2011
Видео лекции
Клуб У.М.Н.И.К.
Имя:
Пароль:
запомнить:
Забыли пароль? Регистрация

Программная система анализа эффективности приложений Visual Performance System

рис.2.

Общая характеристика системы

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

Система VPS позволяет анализировать эффективность приложений под управлением операционных систем семейства Windows NT на процессорах следующих микроархитектур:

  • NetBurst (Pentium 4, Pentium D)
  • Intel Core (Core Solo, Core Duo, Core 2 Duo, Core 2 Quad)

Работа системы на других архитектурах семейства х86 в данный момент не поддерхивается. VPS реализует два способа сбора информации о работе приложения:

  • Фоновый мониторинг работы приложения. В этом режиме осуществляется опрос счетчиков через указанный промежуток времени. Он не требует наличия исходных кодов тестируемого приложения. Минимальное время опроса, доступное системе, составляет 1 миллисекунду.
  • Сбор по програмным меткам. Чтобы задействовать этот режим, необходимо в коде программы расставлять специальные метки в точках, в которых в которых необходимо выполнить опрос счетчиков. Метки реализованы как взовы специальной функции. Данный режим позволяет осуществлять измерения участков длительностью более 10000 тактов с погрешностью измерения менее 10%. для считывания значений счетчиков система VPS может использовать либо инструкцию rdpmc, либо привилегированную rdmsr. Первый способ используется по умолчанию, поскольку не требует перехода в режим ядра, в результате чего затраты меньше в 5-10 раз. Необходимоть второго способа обуславливается его универсальностью и возможностью работать с большим числом регистров, кроме того, ранними архитектурами (до семейства Р6)  поддерживается только он.

рис.1.

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 на примере алгоритма сортировки подсчётом .

Коллектив

  • Сысоев Александр Владимирович (ННГУ), руководитель проекта
  • Сиднев Алексей (ННГУ, ИТЛаб), лидер разработчиков
  • Камаев Андрей (ННГУ, ИТЛаб), исследователь
  • Горшков Антон (ННГУ, ИТЛаб), исследователь
  • Сморкалов Александр (ННГУ, ИТЛаб), исследователь
  • Колпакова Марина (ННГУ, ИТЛаб), исследователь
  • Антипин Иван (ННГУ), исследователь

Публикации

  1. Камаев А.М., Сиднев А.А., Сысоев А.В. Об одном подходе к оптимизации приложений // Высокопроизводительные параллельные вычисления на кластерных системах. Труды конференции. Казань: Изд. КГТУ. 2008. С. 39-42.
  2. Бусырев М.А., Горшков А.В., Камаев А.М., Сиднев А.А., Сморкалов А.М., Сысоев А.В. Эффективная работа с модельно-зависимыми регистрами процессора в операционных системах семейства MS Windows NT // Технологии Microsoft в теории и практике программирования. Материалы конференции. Нижний Новгород: Изд-во Нижегородского госуниверситета. 2008. С. 45–49.
  3. Камаев А.М., Сиднев А.А., Сысоев А.В. Об одном подходе к анализу эффективности приложений // Труды 50-й научной конференции МФТИ «Современные проблемы фундаментальных и прикладных наук»: Часть I. Радиотехника и кибернетика. М.: МФТИ. 2007. С. 91–93.
  4. Александров В.Н., Камаев А.М., Сиднев А.А., Сысоев А.В. Система анализа эффективности приложений Visual Performance System. XII Нижегородская сессия молодых ученых. Математические науки. 2007.

Новости

14.11.2015
16.10.2015
16.10.2015
14.10.2015
20.09.2015

© ITLab, Нижний Новгород,  2009