Сеть пестрит рекламными предложениями удлинить… сами знаете чего. Аналогичные предложения укоротить время загрузки Linux’а пока не заняли столь же достойного места на рекламных площадках. И потому каждый, рвущийся к рекордам на этом поле, действует в меру своего разумения.

Ветераны движения, использующие традиционную схему загрузки (InitV) действуют столь же традиционно хирургически. То есть просто отрезают ненужные части удаляют из неё ненужные сервисы. Как и все проверенные временем методы, это вызывет, может быть, не идеальный, но вполне реальный эффект. Правда, он требует внимательности, аккуратности и понимания сути своих действий. Иначе можно «спутать обрезанье с отрезаньем» и остаться без необходимых служб, а то и вообще получить неработоспособную систему.

Чтобы избавить пользователей от риска отрезать лишнее, разработчики предприняли меры по ускорению загрузки на системной уровне. Меры эти разделяются на мягко терапевтические и хирургические, более или менее радикальные.

Терапевтические меры применяются, насколько мне известно, только в одной системе — e4rat (Ext4 — Reducing Access Times). Они заключаются в перераспределении блоков в файловой системе Ext4 так, чтобы сократить минимизировать время доступа к данным на основе преварительной оценки участия блоков в процессе разгрузки. Разработчики приводят очень впечатляющие данные о чуть ли не трёхратном «укорочении» интересующего нас процесса (см. сайт проекта). Однако разработка этой системы пока находится в экспериментальной фазе, да и применима она к единственной файловой системе (впрочем, наиболее целесообразной для корня или раздела под /boot). К тому же она основана на минимизации перемещения головок диска традиционных HDD и потому не ясно, насколько вообще применима к SSD-накопителям, всё более частых в качестве носителей загружаемых операционок.

Умеренно-радикальное хирургическое решение применяется в системе upstrat. Он основан на задаче, некогда вызвавшей рыдания Василь Иваныча Чапаева — разделении одночлена, то есть последовательной загрузки стартовых сервисов, на многочлен — параллельную загрузку тех сервисов, которые могут стартовать независимо друг от друга. Достоинства и недостатки этого метода много обсуждались, поэтому на подробностях не задержусь. Отмечу только, что, начав было триумфальное шествие советской власти среди пользовательских дистрибутивов (например, Fedora), ныне upstrat применяется, кажется, только в прародительской Ubuntu и её прямых клонах (правда, весьма многочисленных, и местами даже популярных).

Полноты картины замечу, что, кроме upstrat существует ещё несколько схем «деления одночлена на многочлен», например, initng,но широкого распространения они не получили и применяются, насколько мне известно, только энтузиастами.

Ультра-радикальный хирургический метод ускорения загрузки используется в системном менеджере systemd — в нём одночлен делится на многочлен под самый корень. То есть параллельно запускаются даже зависящие друг от друга процессы — сначала создаются сокеты для их взаимодействия, а потом уже запускаются сами процессы. Это сочетается с методом интенсивной терапии — заменой стартовых shell-скриптов инициализации на инициализирующие Си-бинарники.

За развитием проекта лучше всего следить по периодическим победным реляциям Леннарта Поттеринга (август 2010, ноябрь 2010, апрель 2012, продолжение, вероятно, следует). Комплексный подход systemd даёт, по словам разработчиков, несравненное превосходство в скорости загрузки сейчас, а в будущем обещает ещё больше.

Теперь давайте посмотрим, насколько эти обещания выполняются.


К содержанию