The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

8.7.2 OProfile

8.7.2 OProfile

Предыдущая  Содержание  Следующая V*D*V

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: мы не хотим профилировать ядро.
 
# opcontrol --no-vmlinux
 

2.Запуск профилировщика:
 
# opcontrol –start
Using default event: GLOBAL_POWER_EVENTS:100000:1:1:1
Using 2.6+ OProfile kernel interface.
Using log file /var/lib/oprofile/oprofiled.log
Daemon started.
Profiler running.

 

3.Запуск приложения:
 
# cd /usr/local/bin
# ./ffplay_g /data/movies/matrix.mpeg &

 

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.Получение полного отчёта о производительности системы:
 
# opreport --long-filenames
CPU: P4 / Xeon with 2 hyper-threads, speed 2993.82 MHz
(estimated)
Counted GLOBAL_POWER_EVENTS events (time during which
processor is not stopped) with a unit mask of 0x01
(count cycles when processor is active) count 100000
GLOBAL_POWER_E...|
samples|       %|
------------------
223651 73.9875 /no-vmlinux
22727   7.5185 /lib/tls/libc.so.6
15134   5.0066 /usr/bin/local/ffplay_g
7329    2.4246 /usr/bin/nmblookup
      ...
      ...
 

7.Выключение профилировщика:
 
# opcontrol --shutdown
 

Предыдущая  Содержание  Следующая