Стартирайте Linux за 5 секунди

На този хардуер Fedora се зарежда за 45 секунди от включване до екрана за парола. Bootchart, инструмент, създаден от Ziga Mahkovec, ни разкрива подробностите за зареждането. В графиката за зареждане на Fedora (Фигура 1.) можете да видите, че има някои отнемащи време моменти по време на процеса на зареждане на системата. Той използва цяла секунда, за да стартира loopback интерфейси - за да провери дали всички мрежови интерфейси са loopback интерфейси. За стартиране на sendmail са необходими 2 секунди. „Всеки плаща, въпреки че не всеки има нужда от възможности за sendmail“, каза Арджан и предложи за домашна употреба – SMTP само за изходяща поща – да може да се използва ssmtp.

linux
Фиг. 1

Друг скъп процес във Fedora е "setroubleshootd", полезен инструмент за отстраняване на проблеми с настройките на Security Enhanced Linux (SELinux), който отнема цели пет секунди. Няма причина да обвиняваме Fedora - някои независими проекти използват неразбираемо количество време / ресурси за работа. X Window System изпълнява свой собствен C препроцесор и компилатор при стартиране, само за да генерира свои собствени таблици със символи (клавиатурни съпоставки).

linux
Фиг. 2

Стартирането на Ubuntu е почти същото - 2 секунди по-бързо (Фигура 2). Тя прекарва 12 секунди на modprobe само за да зареди един модул. Инструментът за изтегляне на собственически драйвери използва 2,5 секунди - на система, която не се нуждае от собствени драйвери. „Всеки плаща, за да може да използва собствени драйвери“, каза Арджан. И накрая, GDM Ubuntu отнема 2,5 секунди чисто процесорно време само за показване на фоновото изображение.

И двете дистрибуции използват начални екрани. И Арджан, и Ауке се съгласиха: „Мразим пръсканетоекранни снимки. Във времето, което ви е необходимо да ги видите, искаме всичко да е готово вече.“ Времето, което разработчиците на дистрибуция прекарват на начални екрани, е много повече, отколкото е отнело на екипа на Intel за зареждане за такова време, че начален екран просто не е необходим.

Как го направиха: Core

Първата стъпка е план. Една секунда за зареждане на ядрото с всички модули. „Ранното зареждане“, включително скриптове за зареждане и фонови задачи, е още една секунда. X Server - още една секунда и 2 секунди за настолни програми.

Ядрото беше преустроено без initrd, което отнема половин секунда "за нищо". Всички необходими модули са вградени в ядрото. Арджан каза по този повод: „Има набор от модули, които ще покрият нуждите на 95% от лаптопите.“ Той предложи просто да направите отделна дистрибуция с ядро, използващо initrd за останалите 5%. Някаква работа по ядрото позволява някои подсистеми да се зареждат паралелно. Например, модифицираното ядро ​​изпълнява инициализация на Advanced Host Controller Interface (AHCI) за управление на съхранението едновременно с Universal Host Controller Interface (UHCI) за USB управление (Фигура 3). „Вероятно бихме могли да намалим времето до половин секунда, но като намалихме времето до секунда, спряхме“, каза Арджан. Времето за зареждане на ядрото трябва да бъде намалено до половин секунда от версията 2.6.28, благодарение на нов пач за модул за поддръжка на AHCI, написан от него. Фиг. 3

Как го направиха: readahead и init

Fedora използва Upstart като заместител на "init", първата стартирана програма за потребителско пространство. Но екипът на Intel се върна към първоначалния init. Редът на задачите, които init изпълнява, е променен, за да ви позволи да правите 3 нещаедновременно: първо процесът “sReadAhead” за четене на данни от диска и кеширането им в RAM, след това критичният момент - проверка на файловата система, след това системата за междупроцесна комуникация D-Bus, след това подсистемата X-graphics, след това работния плот. Е, и третият набор от програми за стартиране на Hardware Abstraction Layer (HAL), след това udev - мениджър на устройства с горещо включване, след това мрежата. Udev се използва само за поддръжка на устройства, които могат да бъдат свързани по-късно - системата използва традиционната папка /dev, така че зареждането е независимо от udev.

Арджан завърши с думите: „Не спирайте до „направете изтеглянията по-бързи“. Това е грешна задача. Правилното нещо, което трябва да направите, е „направете зареждането бързо“. И не карайте всички потребители да чакат, защото някой има нужда от някакъв модул или sendmail на своя лаптоп. Направете така, че потребителите да плащат само за това, което действително използват. Разработчиците на дистрибуции не трябва да правят отделни дистрибуции initrd и non-initrd", каза той по-късно, „Ядрото трябва да се опита да стартира без initrd и да го използва само ако не може да види /sbin/init (както може да се случи, ако няма модул за монтиране на главната файлова система)." PowerTOP предизвика вълна от енергоспестяващи промени във всички области на софтуера на Linux. Фиг. 5

Конференцията приключи в петък (разговорът беше във вторник) и председателят на конференцията Кайл МакМартин съобщи, че Fedora и Ubuntu са коригирали някои неразумни забавяния в процеса на зареждане, което предизвика буря от аплодисменти и възгласи.

И тук можете да получите грант за тестов период на Yandex.Cloud. Необходимо е само да въведете "Habr" в полето "секретна парола".