8.7.2 OProfile |
Предыдущая Содержание Следующая |
OProfile представляет собой инструмент профилирования для Linux. Он имеет возможность оценки производительности всей системы, включая ядро, совместно используемые библиотеки и приложения. Он также может быть использован в профилирования модулей ядра и обработчиках прерывания. Он незаметно работает в фоновом режиме собирая информацию при низких накладных расходов. В этом разделе мы обсудим использование OProfile в ядре Linux версии 2.6. Для этого вам необходимо пересобрать ядро с установленной опцией CONFIG_OPROFILE. Кроме того, необходима кросс-компиляция OProfile для вашей целевой платформы. Для настройки OProfile для вашей целевой платформы, пожалуйста, следуйте инструкциям кросс-компиляции в Разделе 8.2 и инструкциям по установке OProfile, доступным по адресу http://oprofile.sourceforge.net. Для записи различных событий, таких как циклы ЦП, промахи в кэше, сбросы TLB, и так далее, OProfile использует различные аппаратные счетчики производительности. В архитектурах, которые не имеют счётчиков производительности, для сбора данных OProfile использует прерывание часов реального времени. Если часы реального времени тоже не доступны, OProfile возвращается к прерыванию таймера. Вы также можете принудительно включить режим прерывания по таймеру, передав в командной строке загрузки ядра oprofile.timer = 1. Обратите также внимание, что различные события, такие как сброс TLB, промахи в кэше и тому подобное, обычно связаны со счётчиками производительности, не доступными в режиме работы по часам реального времени/прерыванию по таймеру. В этом разделе мы профилируем с помощью OProfile на ПК приложение видео-плеера, FFmpeg™ (http://ffmpeg.sourceforget.net). Идея этого примера в том, чтобы быстро ознакомить вас с OProfile. Для полноценного использования OProfile обратитесь к http://oprofile.sourceforge.net. Для профилирования FFmpeg выполняем описанные ниже шаги. Обратите внимание, что для выполнения команд OProfile вам необходимо иметь права суперпользователя.
1.Настройка OProfile: мы не хотим профилировать ядро. 2.Запуск профилировщика:
3.Запуск приложения:
4.Сбор данных: команду для сбора данных, а также вывод информации показывает Распечатка 8.10. Первый столбец вывода это общее количество измерений, сделанных в функции, а второй столбец показывает относительный процент от общего числа измерений для функции. Так как GLOBAL_POWER_EVENTS представляет процессорное время, мы можем говорить, что во время воспроизведения видео функция synth_filter использовала 28.8 процента от общего процессорного времени, в то время как функция mpeg_decode_mb использовала 16.5 процентов от общего процессорного времени. 5.Получение аннотированных исходных текстов: приложение должно быть скомпилировано с включённой отладкой. В этом примере аннотированные исходные файлы для всех измерений создаются в какталоге /usr/local/bin/ann. Аннотированные исходники для символов synth_filter и mpeg_decode_mb содержат mpegaudiodec.c и mpeg12.c, соответственно. Пример их содержимого показан в Распечатке 8.11. 6.Получение полного отчёта о производительности системы: 7.Выключение профилировщика: |
Предыдущая Содержание Следующая |