Способы профилирования систем с загрузочными образами различных видов
В образах, основанных на diskboot профилирование с использованием системного журанала включено по умолчанию. Функция профилирования в diskboot реализована с использованием библиотеки bprofiler. Если установить опцию -T, то вывод будет в системный журнал и на консоль во время загрузки системы. При установке опции -t и выбора режима 2
, будет выводиться время старта процессов и опции с которыми они запускаются, в режиме 1
имя и время старта процесса, а режим 0
отключает профилирование. Если не использовать опцию -t, то профилирование будет включено в режиме 1
(включение профилирования), так как данный режим используется по умолчанию.
Примеры:
Запуск diskboot с включенным профилированием, вывод в системный журнал и на консоль во время загрузки системы.
diskboot -t2 -T
Запуск diskboot с отключением опции профилирования.
diskboot -t0
Для профилирования образов, не использующих diskboot используется утилита btime, т.к. в них нет реализации библиотеки bprofiler. Системные скрипты такие как /etc/system/sysinit, /etc/rc.d/rc.sysinit и другие используют переменные окружения PROFILE_BOOT
и PROFILE_BOOT_PRINT
для профилирования с использованием утилиты btime. Эти переменные окружения выставляет diskboot.
Если планируется использовать системные скрипты в образах, не использующих diskboot, для включения профилирования для них, можно определить переменные PROFILE_BOOT
и PROFILE_BOOT_PRINT
в их начале.
Пример:
export PROFILE_BOOT=2 export PROFILE_BOOT_PRINT=1
Если необходимо профилировать пользовательские скрипты можно также использовать утилиту btime. Выводить сообщение с временной меткой в stdout и в системный журнал.
Пример:
#!/bin/sh btime -p -s "Starting slogger -s256" slogger -s256
Утилита bootlog используется для вывода сведений о загрузке системы. Далее приводится пример вывода утилиты bootlog с включенным профилированием во втором режиме.
[0.004 с.] Starting slogger -s256 [0.004 с.] Starting seedres [0.005 с.] Starting pci-bios [0.107 с.] Starting /proc/boot/io-usb -duhci -dohci -dehci -dxhci [2.318 с.] Starting /proc/boot/devc-con-hid [8.554 с.] Starting devb-ahci blk auto=partition dos exe=all qnx6 sync=optional cam quiet ...
Например, если проанализировать представленный вывод, то видно, что разница между запуском devc-con-hid и devb-ahci сильно отличается от остальных. Это логично, поскольку в этот промежуток появляется возможность для diskboot задать дополнительные параметры загрузки и включается ожидание для возможности нажатия клавиши пробел.
Как альтернативу утилиты bootlog, можно использовать системный журнал, где также есть временные метки старта процессов при загрузке, но они идут вместе с другими сообщениями, которые попадают в системный журнал.
May 29 13:46:18 5 1 1 Starting slogger -s256 May 29 13:46:18 5 1 1 Starting seedres May 29 13:46:18 5 1 1 Starting pci-bios May 29 13:46:18 5 1 1 Starting /proc/boot/io-usb -duhci -dohci -dehci -dxhci May 29 13:46:20 5 1 1 Starting /proc/boot/devc-con-hid May 29 13:46:26 5 1 1 Starting devb-ahci blk auto=partition dos exe=all qnx6 sync=optional cam quiet ...
У утилиты bootlog имеется ключ -b, с помощью которого можно получить примерный сценарий загрузки системы для файла построения. Это позволяет формировать загрузочные образы без использования diskboot, что повысит скорость загрузки системы.
slogger -s256 pci-bios -dbios-v2 mptable io-usb -duhci -dohci -dehci -dxhci io-hid -d ps2ser kbd:kbddev:vmmouse:mousedev -d usb /dev/io-usb/io-usb devc-con-hid -n4 devb-eide blk auto=partition dos exe=all qnx6 sync=optional cam quiet qnx6 zero,dzero qnx4 zero,dzero pipe mount -tqnx6 /dev/hd0t179 / /bin/sh /etc/system/sysinit
bootlog, btime, diskboot, enum-devices, bprofiler
Предыдущий раздел: Загрузочные образы