ДЛЯ НАЧАЛА: ЖИВЫЕ

- Knoppix -
Линукс за пять минут
- Puppy Linux -
Хороший друг


ДЛЯ ДЕЛА: ПРОФИ

- Debian -
Он такой один
- Linux Mint -
С родинкой на щеке!
- CentOS -
Копейка рубль бережёт!
- Fedora -
По следам Red Hat
- Ubuntu Linux -
Мы одной крови!
- Mageia -
Красота и удобства
- openSUSE -
Настоящее немецкое качество
- Slackware -
Линукс из кубиков
- ALT Linux -
Что русскому хорошо





ДЛЯ ДЕЛА: РОЛЛЫ

- ArchLinux -
Гениальное - просто!
- PCLinuxOS -
Просто линукс
- Aptosid -
Почувствуй силу!


ДЛЯ ДЕЛА: СОБЕРИ САМ

- Gentoo -
Каждому своё
- LinuxFromScratch -
Линукс с нуля


ДЛЯ ДЕЛА: ЛЁГКИЕ

- DeLiCate -
Старость в радость!
- SLAX -
Тысяча и один модуль


ЗАЩИТА

- OpenWall -
Не стучите, закрыто!
- Kali -
Вам, хакеры!


ПРИЛОЖЕНИЯ

- Planet CCRMA -
Работа со звуком
- VegaStrike -
Каждому по планете!


ЭКСПЕРИМЕНТ

- коЛинуксы -
Не выходя из Виндоус
- GoboLinux -
Очевидно и вероятно
- ReactOS -
Освободите Виндоус!


РОДНЯ

- BSD-семейство -
На плечах гигантов
- OpenIndiana -
До звёзд рукой подать


АРХИВ (2003-2016)
ФОРУМ




НАШИ ПРОЕКТЫ

MATRIX GL
ПОЛЕЗНЫЕ СОВЕТЫ
ПИНГВИН В КАРМАНЕ
ЗАКЛАДКИ
СТАТЬИ
КОНТАКТЫ


ПОМОЧЬ






Личный архив ЕЗ

14.06.2009 Пять секунд, которые решают дело

Первые полосы сетевых компьютерных изданий в последние дни целиком посвящены выходу ядра Linux под номером 2.6.30. У руля проекта по-прежнему бессменный Линус Торвальдс — всё так же верный себе: changelog релиза, как и всегда, насчитывает десятки изменений и новшеств. Новая версия системы, как и три десятка её предшественниц, стала лишь очередной ступенькой на пути к 2.8, но, по мнению самого Линуса, всё же должна совершить маленькую революцию благодаря новой внутриядерной механике «засыпания» и возвращения от «сна». Кроме того, пресса в восторге от поддержки USB 3.0, которую уже сейчас можно добавить в ядро специальным патчем (Linux стала первой операционкой, поддерживающей новый стандарт), улучшенной обработки прерываний (Linux станет заметно «отзывчивей»). Среди прочих примечательных инноваций — вошедшие в код Ядра драйверы нескольких новых файловых систем: такой объём работ обычно под силу лишь корпорациям (оцените NILFS2, добавленную японским гигантом NTT), но бывают и исключения вроде POHMELFS — высокопроизводительной распределённой файловой системы, придуманной, как несложно догадаться, российским программистом (Евгений Поляков, не пропустите его комментарии!). Однако самое интересное кроется между строчек официального пресс-релиза. Если копнуть глубже, в отчёте о выходе 2.6.30 можно прочитать замечательную историю, которая хорошо иллюстрирует приятное свойство открытых исходников: личный интерес одного из пользователей способен принести пользу миллионам других. Связана эта история с проектом Moblin (мы писали о нём в прошлый раз, см. материал от 5 июня).

Впрочем, прежде чем погрузиться в ядерные дебри, предлагаю отвлечься и... перезагрузить компьютер :-) Строчки, бегущие по экрану, отражают этапы загрузки Ядра (если вы видите только красивую заставку, то сможете отыскать полный загрузочный лог-файл в папке /var/log). Одно за другим опрашиваются подключенные устройства, сканируются накопители, поднимаются сетевые интерфейсы, загружаются сервисы, иногда на лету даже компилируются необходимые компоненты! Если программная часть оптимизирована, а компьютер не страдает от нехватки памяти, медленного винчестера или недостатка вычислительной мощи, весь процесс загрузки отнимет пару десятков секунд — иначе может растянуться и на минуту с лишним. В любом случае не слишком приятное ожидание, верно? Как здорово было бы увидеть «рабочий стол» уже несколько секунд спустя после нажатия кнопки «Power»!

Аржан ван де Вен: пять секунд на всё!

Забегая вперёд скажу, что идея вполне осуществима, но для того, чтобы кто-то взялся за её реализацию всерьёз, нужна была и веская причина. Лишняя минута, потраченная на ожидание загрузки десктопа или ноутбука, в роли такой причины выступить не смогла. Однако когда Линукс начали переносить на портативные устройства, время загрузки превратилось в параметр критической важности. И в один прекрасный день, пару лет назад, была поставлена задача свести ожидание к минимуму. История не сохранила точной даты, но достоверно известно кому досталась задача: Аржану ван де Вену (Arjan van de Ven), линуксовому хакеру, работающему на корпорацию Intel. А год спустя, осенью 2008-го, Аржан с коллегами демонстрировали первые результаты — нетбуки Eee PC, работавшие под управлением модифицированной Fedora и альфа-версии интеловского дистрибутива Moblin, грузившиеся за пять секунд. Та презентация стала легендой: чтобы показать аудитории, как быстро происходит загрузка, разработчикам приходилось выносить нетбук на руках в зал — проектор попросту не успевал синхронизироваться и вывести картинку на большой экран!

Как удалось добиться такого результата? Вы сами только что видели, как много времени уходит на последовательную загрузку компонентов операционной системы. Распараллелим задачу! Пока Ядро ждёт ответа от первого устройства, пусть опрашивает второе и третье (а ведь винчестеры и DVD-приводы должны раскрутить диск, чтобы ответить — представьте, сколько времени тратится на пустое ожидание!). Пусть системные сервисы — когда это возможно — загружаются одновременно. Задействуем кэш в оперативной памяти: информацию, которая обязательно потребуется на более поздних этапах загрузки, нужно подгрузить заранее. По возможности избавим систему от необходимости сложных вычислений на этапе загрузки, все необходимые модули должны быть готовы к активации. Кроме того, ван де Вен был ограничен временным бюджетом: пять секунд — и ни секундой больше. Под это время подстраиваются сервисы, исходя из этого количества времени определяются максимальные объёмы считываемой с дисков информации. Итог — пять секунд на честный, без фоновой подгрузки сервисов а-ля виндоус, результат. Секунда на ядро, секунда на разного рода скрипты и сервисы, ещё секунда на X Window и две — на организацию рабочего стола.

Секунды асинхронной загрузки

Ван де Вен с коллегами трудились по заказу своего работодателя, их наработки использованы в дистрибутиве Moblin — свободном продукте, готовом к «употреблению» на нетбуках с процессорами семейства Intel Atom. Но, разумеется, результаты были включены и в состав основного линуксового ядра, вышеупоминавшейся версии 2.6.30. Благодаря этому уже через несколько месяцев каждый дистрибутив Linux, использующий свежее (2.6.30 или старше) ядро, сможет задействовать параллельную — или, правильнее, асинхронную — загрузку. А те из вас, кто в состоянии самостоятельно скомпилировать линуксовое ядро, может начать эксперименты прямо сейчас, интегрировав 2.6.30 в свой дистрибутив.

Моблиновская асинхронная загрузка сильно оптимизирована для устройств с твердотельными накопителями. Однако идеи, реализованные ван де Веном, универсальны — и в какой-то степени уже используются другими разработчиками в более известных проектах. Так, значительное внимание уделяют скорости загрузки системы разработчики Ubuntu Linux. В текущей версии, 9.04, оптимизация загрузочного алгоритма позволила сократить ожидание почти втрое, в 9.10 Karmic Koala этот показатель ещё улучшат, а в 10.04 (следующей весной) планируют довести до 10 секунд. Другой проект, успешно эксплуатирующий boot-параллельность, это всем известный Knoppix. Кноппикс — «живой» дистрибутив, вынужденный уметь определить и правильно задействовать огромный список «железа». Поэтому асинхронный подход даёт здесь особенно впечатляющие результаты: последняя, шестая ветка дистрибутива, основанная на параллельном загрузчике, сократила время старта в среднем наполовину, что на слабых машинах отливается в несколько минут экономии!

Разработчики Ubuntu не думают о секундах свысока

Ну а что же делать рядовому пользователю, далёкому от экспериментов с Ядром, пока асинхронная загрузка не стала стандартом? Рецептов масса и конкретные действия обычно зависят от того дистрибутива, который вы используете. К примеру, Fedora 11 способна выигрывать у конкурентов за счёт новой файловой системы, супербыстрой ext4. А в Gentoo и её родственниках можно включить экспериментальный параллельный загрузочный режим (не всегда гладкий, будьте осторожны!). Традиционная общая рекомендация — оптимизировать систему, отключив ненужные сервисы (вчитайтесь в вывод ps ax), отказавшись от тяжеловесных инструментов в пользу более «лёгких» и шустрых (да здравствует Openbox!). С помощью утилиты Bootchart постройте диаграмму загрузки и подвергните критическому анализу каждый этап. Да, и всегда помните, что перезагрузка — удел слабых ;-) В конце концов, это Линукс!

------------------------------------------------------------------------------------------------------------

Этот текст всегда доступен по адресу Knoppix.ru/140609.shtml


При частичной или полной перепечатке, переводе, переработке материалов сайта ссылка на Knoppix.ru обязательна.
(c) Knoppix.ru 2003 - 2016