четверг, 14 февраля 2013 г.

какой компилятор использует алгоритм 2,5,6

В этом проекте есть одно жесткое ограничение: 75 мегабайт для чтения с диска 3 секунды передачи информации со скоростью 25 МБ/сек о

В графике использования диска и процессора, оба используются по максимуму практически все время загрузки: спасибо sReadAhead. Когда стартует X, ему не требуется время на чтение с диска, поскольку все данные уже есть в кеше ОЗУ. sReadAhead основан на Readahead от Fedora, но он модифицирован, чтобы использовать преимущество списка данных для чтения, полученного от ядра. sReadAhead уже должен быть опубликован на moblin.org, и патч для ядра будет выложен как только Arjan сделает его совместно с Ted Ts'o (разработчик файловой системы ext3) во время встречи Ted сделал некоторые предложения, как можно реорганизовать блоки на диске, чтобы увеличить скорость еще больше.

Упорядочивание задач помогает более эффективно использовать процессор. Например, X делает паузу в пол секунды ожидая получения информации о поддерживаемых видеорежимах. Это время использует HAL для своей загрузки (рис. 4)

Fedora использует Upstart как замену «init»- первой запускаемой программе в пространстве пользователя. Но команда Intel вернулась к оригинальному init. Порядок задач, которые выполняет init, был изменен для того, чтобы можно было делать 3 вещи одновременно: сначала процесс «sReadAhead» для чтения данных с диска и кеширования их в оперативной памяти, затем критический момент проверка файловой системы, затем D-Bus истема межпроцессного взаимодействия, затем X- графическая подсистема, затем рабочий стол. Ну, и третий набор программ для запуска Hardware Abstraction Layer (HAL), затем udev менеджер устройств «горячего подключения», затем сеть. Udev используется только для поддержки устройств, которые могут быть подключены позднее система использует традиционную /dev папку, таким образом, загрузка не зависит от udev.

Как они это сделали: readahead и init

Еще одним изменением ядра был маленький патч для поддержки readahead. Ядро терерь отслеживает, какую информацию необходимо читать во время загрузки, чтобы сделать ее сразу же доступной в пространстве пользователя (userspace) по окончанию своей загрузки. Все это вместе, делает возможным использование readahead, который является частью ранней загрузки.

Некоторая работа над ядром позволяет сделать параллельной загрузку некоторых подсистем. Например, модифицированное ядро запускает инициализацию Advanced Host Controller Interface (AHCI) для управления хранилищами в то же время, что и Universal Host Controller Interface (UHCI), для управления USB (рис. 3). «Наверное, мы смогли бы сократить время до половины секунды, но, доведя время до секунды, мы остановились,» сказал Arjan. Время загрузки ядра должно сократиться до полусекунды к релизу 2.6.28, благодаря новому патчу модуля поддержки AHCI, написанному им.

Ядро было пересобрано без initrd, который требует пол секунды «ни для чего». Все модули, которые необходимы встраиваем в ядро. Arjan по этому поводу сказал: «Есть набор модулей, который покроет нужды 95% лаптопов».Он предположил, что нужно просто сделать отдельный дистрибутив с ядром, использующим initrd для оставшихся 5%.

Первым шагом является план. Одну секунду на загрузку ядра со всеми модулями. «Ранняя загрузка (Early boot)» включая загрузочные скрипты и фоновые задания еще одна секунда. X Server еще одна секунда, и 2 секунды на программы рабочей среды.

Как они это сделали: Ядро

Оба дистрибутива используют сплеш скрины. И Arjan, и Auke согласились: «Мы ненавидим сплеш скрины. За то время, что тратится на то, чтобы вы их увидите, мы хотим, чтобы все уже было сделано». Время, которое разработчики дистрибутива тратят на сплеш скрины, намного больше, чем команда Intel потратила для того, чтобы грузится за такое время, что сплеш скрин просто не нужен.

Загрузка Ubuntu практически такая же на 2 секунды быстрее (рис. 2). Она тратит 12 секунд на modprobe, только для того, чтобы загрузить единственный модуль. Инструмент для загрузки проприетарных драйверов использует 2,5 секунды на системе, которой не нужны проприетарные драйверы. «Все платят за возможность использовать закрытые драйвера,» сказал Arjan. И, наконец, GDM Ubuntu занимает 2,5 секунды чистого процессорного времени, только для того, чтобы отобразить фоновую картинку.

Еще одним затратным процессом в Fedora является «setroubleshootd», полезный инструмент для поиска проблем с настройками Security Enhanced Linux (SELinux), он занимает целых пять секунд. Нет повода винить Fedora некоторые самостоятельные проекты используют непонятное количество времени/ресурсов для работы. Система X Window запускает собственный C препроцессор и компилятор при загрузке, только для того, чтобы составить собственные таблицы символов (keyboard mappings).

На этом железе Fedora загружается за 45 секунд от включения питания до экрана ввода пароля. Bootchart, инструмент, созданный Ziga Mahkovec, раскрывает нам подробности загрузки. На графике загрузки Fedora (рис 1.), видно, что в процессе загрузки системы есть некоторые времяпожирающие моменты. Она использует целую секунду для запуска loopback-интерфейсов на проверку, являются ли все сетевые интерфейсы loopbak-интерфейсами. 2 секунды требуются для запуска sendmail. «'Платят' все, несмотря на то, что возможности sendmail требуется далеко не каждому,» сказал Arjan, и предположил, что для домашнего использования -SMTP только для исходящей почты может использоваться ssmtp.

Как им это удалось? Arjan сказал, что все началось с правильной постановки задачи: «Заставить систему не 'загружаться быстрее', а заставить ее 'загружаться за пять секунд'.» Вместо того, чтобы экономить секунду здесь, секунду там, был установлен временной лимит на весь процесс загрузки, каждый этап загрузки должен быть сделан в пределах этого времени. И никакого мошенничества: «Завершение загрузки означает прекращение обращений к диску и нагрузки на процессор,» сказал Arjan. Меряется время не до загрузки рабочего стола, пока службы продолжают загружаться в фоновом режиме (хотя некоторые компании меряют время загрузки своей ОС именно до этого момента). Время загрузки не включает включение сети, но включает запуск NetworkManager. Система с традиционным жестким диском грузится дольше, но Arjan сообщил, что он запускал систему на ThinkPad и она загружалась менее, чем за 10 секунд

На Конференции «Сантехников» Линукс (Linux Plumbers Conference) Arjan van de Ven, разработчик решений для линукс из Intel, автор PowerTOP, и Auke Kok, разработчик из Intel'овского Open Source Technology Center, продемонстрировали систему на базе линукс, которая загружается всего 5 секунд. Аппаратной основой для этой системы служил Asus EEE PC, с SSD диском. Разработчики преодолели рубеж в «загрузку за 5 секунд» в двух вариантах: модифицированная Fedora и модифицированный Moblin. EEE PC грузился быстрее, чем проектор успечал распознать сигнал с видеовыхода устройства, поэтому им пришлось обойтись без него и попросту поднести ноутбук поближе к зрителям.

Полный перевод статьи, анонсированной в

Загрузка Linux за 5 секунд

17 октября 2008 в 14:59

Загрузка Linux за 5 секунд / Хабрахабр

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

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