7 новых возможностей Intel® VTune Amplifier XE

от автора

VTune Amplifier XE давно известен пользователям своими возможностями глубокого анализа производительности ПО, как на уровне приложения, так и на микроархитектурном уровне.

Инструмент не стоит на месте и активно развивается, улучшаясь и обрастая новым функционалом. В этом посте приведён краткий обзор новых «фич», появившихся как в вышедшем в сентябре VTune Amplifier XE 2013, так и совсем недавно, в последующих обновлениях:

  • Анализ циклов
  • Текстовый поиск
  • Анализ энергоэффективности
  • EBS анализ со стеками
  • Профилировка Java приложений
  • API для пользовательских задач
  • Улучшения командного интерфейса

Анализ циклов

Как известно, оптимизация высокопроизводительных вычислений часто строится вокруг циклов – здесь и распараллеливание, и перераспределение данных для оптимального использования кэша, и векторизация. VTune Amplifier XE 2013 update 3 может определять, какие «горячие точки» на самом деле – «горячие циклы». Теперь пользователь может сконцентрироваться на их оптимизации, а не на поиске циклов по исходному коду, плюс оценить эффект от оптимизации каждого конкретного цикла от запуска к запуску.

Текстовый поиск

Результаты профилировки VTune Amplifier XE могут быть довольно объёмными, и бывает трудно сразу найти интересующую вас функцию/модуль/объект синхронизации и т.д.
Теперь пользователи наконец-то могут использовать простой текстовый поиск во всех основных окнах: bottom-up, top-down, source view, assembly view.

Анализ энергоэффективности

Энергоэффективность приложений приобретает всё большее значение. Ведь в растратах энергии повинна не только аппаратная часть, но и ПО. VTune Amplifier XE 2013 представил два новых типа анализа в этой области (пока доступы только для Linux).

Анализ CPU Frequency позволяет отследить изменение тактовой частоты во время исполнения программы на всех ядрах. Это даёт оценку активного энергопотребления, с тем, чтобы потом играть технологиями изменения частоты: Turbo Boost, SpeedStep и т.п.

Анализ CPU Sleep States даёт оценки пассивного энергопотребления – перехода по C-state-ам. Здесь отслеживаются “wake-up”-ы – “пробуждения”. Переход в более глубокий C-state и выход из него имеют затраты, поэтому если такое случается слишком часто, имеет смысл подумать об изменении ситуации. Анализ CPU Sleep States показывает частоту переходов по состояниям, статистику пребывания в разных состояниях, а главное объекты, вызывающие нежелательные «пробуждения» — например, таймеры:

EBS анализ со стеками

VTune Amplifier XE использует два основных подхода к профилированию. Первый основан на бинарной инструментации анализируемого процесса и называется «анализом пользовательского уровня». Второй подход (EBS анализ) работает не с процессом, а с модулем PMU в процессоре, что позволяет профилировать не только пользовательские приложения, но и операционную систему, и драйвера. Кроме того, так можно находить «микроархитектурные» проблемы софта.

До выхода 2013-й версии EBS анализ позволял найти функции и их код, но не стеки вызовов. Это было неудобно, если, например, «горячей точкой» оказывалась системная функция – найти ответственный за это пользовательский код было нелегко. С 2013-й версии анализы, основанные на EBS, предоставляют ещё и стеки вызовов. Теперь вы сможете проследить путь от системных вызовов и драйверов до вашего приложения, если оно к этому причастно.

Ещё одним приятным моментом является статистический подсчёт количества вызовов функций. Теперь можно не только увидеть суммарное время, потраченное на исполнение функции, но и оценить, каким образом оно формируется – часто, но по малу, или наоборот.

Профилировка Java приложений

Начиная с 2013-й версии VTune Amplifier XE поддерживает профилировку Java приложений. Это может быть особенно полезно для анализа «mixed» кода, совмещающего Java и вызовы «нативных» модулей (например, для выполнения тяжёлых вычислений). Кроме того, профилировщик позволяет обнаружить микроархитектурные проблемы в Java коде, например, неэффективное использование кэша. Более подробно читайте в этой статье (на английском).

API для пользовательских задач

Многие параллельные приложения строятся на «задачах» — небольших логических элементах работы, исполняющихся потоками. На задачах строится, например, библиотека Intel® Threading Building Blocks.

API, предоставляемый VTune Amplifier XE (__itt API) недавно пополнился средством разметки таких задач:

void do_foo(double seconds);  DWORD WINAPI work (void *pArg) { 	 __itt_task_begin (domain, __itt_null, __itt_null, UserSubTask); 	do_foo (1);		 	  	__itt_task_end (domain); 	return 0; }  int main() { 	int i = 0; 	HANDLE hThread [NUM_THREADS]; 	 	__itt_task_begin (domain, __itt_null, __itt_null, UserTask); 	do_foo (0.3); 	 	for (i = 0; i < NUM_THREADS; i++) 	{ 		hThread[i] = CreateThread ( NULL, 0, work, (void*)i, 0, 0 ); 	} 	WaitForMultipleObjects (NUM_THREADS, hThread, TRUE, INFINITE ); 	__itt_task_end (domain); 	 	return 0; }

Теперь пользовательские задачи можно отслеживать через grouping “Task Type / Function / Call Stack" и окно Tasks:

Подробно про task API читайте в этом посте.

Улучшения командного интерфейса

VTune Amplifier XE – это не только ценный мех красивый GUI, но и развитый командный интерфейс. Если вы просматриваете результаты профилировки в командной строке (или такой вывод используется в автоматизированном тестировании), вы могли заметить, что иногда не всё умещается в окно терминала и форматирование «съезжает». В 2013-й версии появился параметр report-width, ограничивающий ширину распечатываемых результатов, чтобы всё уместилось:

$ amplxe-cl -R hotspots -report-width=100 -r r004cc

Для любителей GNU gprof появился новый формат представления результатов, в формате gprof:

$ amplxe-cl -report gprof-cc -r r001hs

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

В последних обновлениях VTune Amplifier XE это стало делать проще – все параметры содержатся в командной строке. Просто нажимаете “Command line” в GUI и копируете сформированную строку на удалённую машину. Не нужно никаких дополнительных файлов.

Резюме

Все семь новых возможностей, описанные в посте, доступны в последней версии Intel® VTune Amplifier XE 2013 update 3 – качайте, пробуйте, наслаждайтесь. Триальную версию можно скачать с официального сайта.

ссылка на оригинал статьи http://habrahabr.ru/company/intel/blog/162521/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *