пятница, 10 апреля 2009 г.

Время загрузки компьютера

Периодически я читаю новости =) о том, как быстро загружается компьютер и соответственно смотрю на собственный ноутбук. Я уже не помню какое ПО и в каком объеме у меня стояло пол года назад, остались результаты измерения от bootchart.

По замерам в ноябре прошлого года у меня получалось время загрузки 43 секунды. Сегодня я произвел новый замер и был приятно удивлен 36 секундами =).

Первое, что бросилось в глаза, это время загрузки ядра сократилось с 15 до 7 секунд. Неплохая прибавка =). Думаю, что это следствие его постепенной оптимизации - убирание лишнего, переход на более новые ядра.

Разобрал меня интерес, что делает ядро целых 7 секунд? Его размер копеечный, по сравнению со скоростью передачи данных, процессор достаточно мощный =). Железо заранее известно. В итоге включил я в ядре опцию фиксации времени событий:

Kernel hacking --->
[*] Show timing information on printks


Перезагрузился и анализируя вывод dmesg увидел очень странную вещь:

[ 2.764571] Synaptics Touchpad, model: 1, fw: 6.2, id: 0x1a0b1, caps: 0xa04793/0x302000
[ 2.764699] serio: Synaptics pass-through port at isa0060/serio4/input0
[ 2.802530] input: SynPS/2 Synaptics TouchPad as /class/input/input5
[ 6.910911] input: PS/2 Generic Mouse as /class/input/input6

Получается, что определение моего touchpad-а занимает у ядра практически 4 с лишним секунды!

За работу touchpad-а на ноутбуке в ядре отвечает CONFIG_MOUSE_PS2. Лишаться touchpad-а я не захотел =), по этому попробовал пересобрать поддержку ps2 мышей модулем. И наступило чудо! Скорость загрузки ядра сократилась до 3 секунд, а общее время загрузки с 36 до 31 секунды.

Я в шоке! Всегда считал, что наиболее предпочтительным все устройства собирать в ядре и не заморачиваться модулями. В общем я был беспрецедентно посрамлен =).

Дальнейший анализ результатов bootchart дал еще несколько идей по сокращению времени загрузки. Основной тормоз - fsck.reiserfs. Для проверки, я отключил fsck.reiserfs (создал файл /fastboot) и получил время загрузки 27 секунд! Достаточно.

Главное, что я понял из этих экспериментов - идеала не достичь ни когда.

З.Ы. Для справки - hwclock при старте системы занимает 2 секунды =))).

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