Speed it up!
Поставил bootchart, чтобы посмотреть как быстро загружается система. В итоге все закончилось как обычно: просидел весь вечер, копаясь во внутренностях оси… @_@
Итак,
1. Default: 0:23
Неплохой результат, если не учитывать, что система свежая и в ней не установлено ничего ненужного. В убунте сколько было — не помню, старых бутчартов не сохранилось. По-моему, где-то в районе 25-28 сек. на относительно чистой системе. Хотя со временем скорость, конечно, упала — на глаз, примерно секунд до 40-45. Тут я вдруг вспомнил, что по дефолту в дебиане всевозможные системы оптимизации не установлены, и что их можно бы и поставить. Предполагаю, что ненужные сервисы уже отключены (либо их вообще нет), а всякие мелкие гайки (типа таймаута в грабе) закручены. Руководствовался я вот этим мануалом:
http://forums.debian.net/viewtopic.php?t=31275
2. Readahead: 0:21 (-2s)
В ходе загрузки процессор используется не слишком-то активно, а диск сильно загружен (см. диаграмму 1), что не есть хорошо. Readahead, как можно догадаться из названия, заранее загружает необходимые для загрузки файлы в память, и потом они берутся по мере надобности оттуда, а не с винчестера, что ускоряет загрузку. Вы можете увидеть эффект на диаграмме 2: сперва идет кеширование файлов (сильная загрузка винчестера), затем существенно возрастает нагрузка на процессор. В мануале говорится, что это помогает не всем, и иногда это может даже замедлить загрузку на пару секунд, а может и вообще не дать никакого результата. Мне же это дало 2 секунды.
3. Parallel starting: 0:17 (-4s)
Вместо последовательной загрузки сервисов можно включить параллельную, что позволит некоторым сервисам стартовать не дожидаясь друг друга. Говорят, это хорошо для двухъядерных процессоров, но и с одноядерным это явно пойдет на пользу. Обратите внимание, что сперва нужно использовать программу insserv: sudo update-bootsystem-insserv. Это переупорядочит скрипты, чтобы они могли стартовать параллельно, иначе толку не будет. Поскольку речь идет об init скриптах, тут нужно быть аккуратным, иначе могут быть проблемы. CONCURRENCY=shell сработал, но вывод вообщений при загрузке весь сбился и перепутался, поэтому пришлось включить CONCURRENCY=startpar, который у меня работает на 1 секунду дольше, чем shell. Итого еще 4 секунды.
В итоге имеем ускорение в 6 секунд. Возможно, не так уж и много, но в сравнении с общей скоростью загрузки — очень существенно, все-таки 17 секунд — имхо, довольно быстро. Я не ожидал такого результата. Жаль, что этим процесс загрузки не ограничивается: еще долго стартует гном после логина. Но способа ускорить и его я, увы, не знаю.
Включение dash вместо bash ничего не изменило. Некоторые другие штуки тоже не дали результатов:
Читать далее