вторник, 22 мая 2012 г.

Замеряем скорость загрузки Arch Linux с Bootchart

Изначально это был перевод статьи из Арчевики, но позже я наткнулся на баг, не позволяющий разместить статью, поэтому перевод был опубликован в блоге. Он изменён. Размещение в Арчевики уже не имеет смысла, так как даже англоязычная версия там помечена как устаревшая, на сколько я понял, в связи с тем, что bootchart у арчеводов никто не поддерживает.


  1. Введение
  2. Установка Bootchart
  3. Запуск Bootchart
  4. Настройка загрузчика
  5. Grub
  6. Grub 2
  7. Настройка rc.sysinit
  8. Редактирование /etc/rc.sysinit
  9. Остановка bootchartd после логина
  10. Генерация графика
  11. Решение проблем
  12. Пример графика загрузки

Введение

Bootchart это удобный инструмент используемый для профилирования результатов загрузки Linux, в основном используется при процессе ускорения загрузки. Он включает демон bootchartd и bootchart-render, который используется для генерирования графика с результатом.

Установка Bootchart

Установка bootchart производится с помощью пакетного менеджера. В Arch Linux пакет называется 'bootchart'.
pacman -S bootchart


Запуск Bootchart

Для использования bootchart вы можете воспользоваться одним из двух способов, как процессом init в вашем загрузчике или запустив его вручную из какого-либо скрипта инициализации (предпочтительно rc.sysinit). Но если вы запустите bootchartd вручную, то и останавливать его тоже нужно будет вручную. Будьте осторожны на этом шаге.

Настройка загрузчика

Главное - сделайте резервную копию загрузочной записи меню и добавьте в параметры загрузки 'init=/sbin/bootchartd'. Когда загрузчик запустится, bootchart остановится только при появлении приглашения входа.

Grub


Откройте /boot/grub/menu.lst и скопируйте/вставьте запись. Добавьте "init=/sbin/bootchartd" в строку с ядром. Как правило запись будет выглядеть примерно так:

# (1) Arch Linux Bootchart
title Arch Linux
root (hd0,0)
kernel /vmlinuz26 root=/dev/disk/by-uuid/d531ff5b-de65-499a-9942-d18682375163 ro vga=37C init=/sbin/bootchartd
initrd /kernel26.img

Grub 2


Проделайте те же операции с /boot/grub/grub.cfg, приведя его примерно к такому виду:

# (0) Arch Linux
menuentry "Arch Linux" {
set root=(hd0,1)
linux /boot/vmlinuz26 root=/dev/sda1 ro
initrd /boot/kernel26.img
}
# (1) Arch Linux with Bootchart
menuentry "Arch Linux with Bootchart" {
set root=(hd0,1)
linux /boot/vmlinuz26 root=/dev/sda1 ro init=/sbin/bootchartd
initrd /boot/kernel26.img
}

Теперь вы можете перезагрузиться и выбрать новую опцию с Bootchart.

Настройка rc.sysinit


Этот метод опасен (вы можете получить не загружаемую систему) - его стоит использовать только если первый не подходит. При использовании такого подхода вы не только должны будете остановить bootchartd вручную после загрузки (или он заполнит всё пространство жёсткого диска), но ещё он будет запускаться каждый раз при загрузке. А также любые изменения в /etc/rc.sysinit будут сбрасываться каждый раз при обновлении пакета initscripts. Положительная сторона состоит в том, что bootchart будет отображать, что происходит после логина.

Редактируем /etc/rc.sysinit


Теперь добавляем эту строку:
/sbin/bootchartd start

в /etc/rc.sysinit

Это делается примерно так: После строки
stat_busy "Configuring System Clock"

Написать эту:
/sbin/bootchartd start

Остановка bootchartd после логина


Введите команду от пользователя root:
/sbin/bootchartd stop

Или с помощью sudo, если он настроен:
sudo /sbin/bootchartd stop
Generating a chart

Генерация графика

Для генерации графика загрузки запустите в каталоге, котором есть право на запись:
bootchart-render

Будет сгенерировано изображение с графиком 'bootchart.png'. Для этого нужно иметь Java runtime (jre) в установленном виде.

Решение проблем.


Bootchart-render не может сгенерировать изображение и выдаёт сообщение вида:
/var/log/bootchart.tgz not found

Откройте /sbin/bootchartd (это простой скрипт) и добавьте в строку с dm свой вариант. К примеру, slim:
# The processes we have to wait for
local exit_proc="gdmgreeter gdm-binary kdm_greet kdm slim"

Bootchart-render не может сгенерировать изображение и выдаёт сообщение вида:
/usr/bin/bootchart-render: line 2: java: command not found

Установите community/jre и внесите /opt/jre/bin в список переменных PATH для пользователя от которого запускается bootchart-render.
В ~/.bash_profile это будет выглядеть примерно так:
PATH=$PATH:/usr/sbin:/sbin:$HOME/bin:/opt/java/jre/bin

Пример графика загрузки

Комментариев нет:

Отправить комментарий