The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Сокращение времени загрузки Fedora ..."
Отправлено auto_tips, 31-Май-12 19:56 
Изложенные в данной статье инструкции позволяют сократить до трёх секунд загрузку дистрибутива Fedora 17 с NetworkManager до экрана приглашения входа в систему от GDM. Указанная конфигурация опробована на ноутбуке Lenovo T420s (2x2x Intel Core i5-2540M CPU @ 2.60GHz) и SSD-накопителем Intel SSDSA2BW160G3L.

1. Используем простейшую конфигурацию разбиения диска с загрузочным и рабочим разделами с файловой системой Ext4:

   sda1 ext4 /boot
   sda2 swap
   sda3 ext4 /

После установки дистрибутива потребуется как минимум две перезагрузки для достижения оптимального времени загрузки из-за необходимости адаптации к загрузочной последовательности механизма readahead (вначале readahead собирает информацию о загружаемых программах и библиотеках, после чего начнёт разом загружать компоненты в кэш страниц памяти).

Обновляем все пакеты, активируем prelink и устанавливаем пакет systemd-analyze:

   sudo yum update
   sudo /etc/cron.daily/prelink
   sudo yum install systemd-analyze


После перезагрузки выполняем:

   sudo systemd-analyze

   Startup finished in 1413ms (kernel) + 2911ms (initramfs) + 10593ms (userspace) = 14918ms

Как видим в штатном режиме дистрибутив загрузился за 15 секунд.

Начинаем оптимизацию.
Отключаем initramfs - так как в ядро встроена поддержка файловой системы ext4, поэтому для монтирования корневого раздела не требуется загрузка дополнительных модулей ядра. В параметрах загрузки явно указываем имя корневого раздела (без UUID) и тип ФС. Содержимое /etc/grub2.cfg должно выглядеть примерно так:

   linux /vmlinuz-3.3.7-1.fc17.x86_64 root=/dev/sda3 rootfstype=ext4 quiet libahci.ignore_sss=1 raid=noautodetect
   # initrd /initramfs-3.3.7-1.fc17.x86_64.img

Опции "raid=noautodetect" и "libahci.ignore_sss=1" позволяют ускорить время инициализации ядра из-за пропуска дополнительных проверок.

После перезагрузки systemd-analyze показывает сокращение времени до 14684ms. Продолжаем оптимизацию.

Так как на компьютере не используются  LVM, RAID и шифрование можно смело отключить все сервисы fedora-*storage*. Дополнительно можно отключить систему вывода заставки  plymouth, так как нам важнее скорость а не эстетическое наслаждение от ожидания завершения загрузки. Для отключения указанных сервисов следует использовать команду "systemctl mask", достоинство которой ещё и в том, что %post скрипт RPM в дальнейшем не включит сервис автоматически.

   cd /lib/systemd/system
   for i in fedora*storage* plymouth-*.* lvm2-monitor.* mdmonitor*.*; do sudo systemctl mask $i;done

Одновременно отключим лишние SysV-скрипты  livesys, livesys-late и spice-vdagentd:

   for i in livesys livesys-late spice-vdagentd ; do sudo chkconfig $i off;done

Перезагружаем систему и наблюдаем через systemd-analyze сокращение времени загрузки до 8197ms

Далее переходим к экстремальным действиям и отключаем все сервисы, кроме NetworkManager, поэтому важно запомнить что именно было отключено, так как в результате будет получена система без почты, межсетевого экрана, системы печати, утилит abrt,  avahi, некоторых точек монтирования, rsyslog, irqbalance и защиты selinux.

   cd /lib/systemd/system
   for i in abrt*.service auditd.service avahi-daemon.* bluetooth.* dev-hugepages.mount dev-mqueue.mount \
      fedora-configure.service fedora-loadmodules.service fedora-readonly.service ip6tables.service \
      iptables.service irqbalance.service mcelog.service rsyslog.service sendmail.service sm-client.service \
      sys-kernel-config.mount sys-kernel-debug.mount; do \
    sudo systemctl mask $i; \
   done

Для отключения selinux правим  файл /etc/selinux/config и добавляем настройку "selinux=0" в строку с параметрами ядра. Настройки /etc/grub2.cfg принимают примерно такой вид:

   linux /vmlinuz-3.3.7-1.fc17.x86_64 root=/dev/sda3 rootfstype=ext4 libahci.ignore_sss=1 raid=noautodetect selinux=0
   #  initrd /initramfs-3.3.7-1.fc17.x86_64.img


Перезагружаемся и наблюдаем по systemd-analyze сокращение загрузки до 2926ms.

Но идеи по оптимизации пока не исчерпаны. Попробует выжать ещё времени через манипуляции с монтированием разделов. Переводим раздел /boot в режим "монтирование по требованию" и создаём раздел /tmp с использованием  tmpfs для сокращения нагрузки на диск в процессе загрузки. В результате /etc/fstab будет выглядеть следующим образом:

   /dev/sda3  /                       ext4    defaults        1 1
   /dev/sda1  /boot                   ext4    noauto,comment=systemd.automount     1 2
   /dev/sda2  swap                    swap    defaults        0 0
   tmpfs      /tmp                    tmpfs   defaults        0 0

После перезагрузки systemd-analyze выдаёт 2769ms.

Так как NetworkManager запускается также при старте программы входа в систему, можно отключить приводящую к загрузке  NetworkManagers зависимость на уровне multi-user, так как он всё равно будет параллельно запущен при запуске gdm, зависимость для которого остаётся.

   sudo rm /etc/systemd/system/multi-user.target.wants/NetworkManager.service

Проверяем время загрузки - 2603ms.

Для проверки насколько readahead влияет на время загрузки  для эксперимента временно выключим readahead:

   cd /lib/systemd/system  
   for i in *readahead*; do sudo systemctl mask $i;done

После перезагрузки systemd-analyze показывает 2547ms. Но несмотря на сокращение времени загрузки до запуска экрана входа в систему, сам э
кран визуально появляется с некоторой задержкой. Для того чтобы более точно оценить время загрузки воспользуемся секундомером.

   sudo dracut -f

Время загрузки с readahead и возвращённым initramfs:

   systemd-analyze
   Startup finished in 803ms (kernel) + 2217ms (initramfs) + 1018ms (userspace) = 4039ms

При сборке initramfs без plymouth и в режиме только хоста:

   sudo dracut -f -H -o plymouth

получаем:

   systemd-analyze
   Startup finished in 612ms (kernel) + 499ms (initramfs) + 1330ms (userspace) = 2443ms

Следует иметь в виде,  что сервисы  отключенные через "systemctl mask" при необходимости  можно в любой момент вернуть командой "systemctl unmask".

URL: http://www.harald-hoyer.de/personal/blog/fedora-17-boot-opti...
Обсуждается: https://www.opennet.ru/tips/info/2695.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру