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 – качайте, пробуйте, наслаждайтесь. Триальную версию можно скачать с официального сайта.
Автор: krogozh