Новости из Блогов Сокращение времени загрузки Fedora 17 c 15 до 3 секунд

Discussion in 'Мировые новости. Обсуждения.' started by d3l3t3, 1 Jun 2012.

  1. d3l3t3

    d3l3t3 Banned

    Joined:
    3 Dec 2010
    Messages:
    1,771
    Likes Received:
    98
    Reputations:
    10
    Сокращение времени загрузки Fedora 17 c 15 до 3 секунд


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

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

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

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

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

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

    Code:
       sudo systemd-analyze
    
       Startup finished in 1413ms (kernel) + 2911ms (initramfs) + 10593ms (userspace) = 14918ms
    Как видим в штатном режиме дистрибутив загрузился за 15 секунд.

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

    Code:
       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 в дальнейшем не включит сервис автоматически.

    Code:
       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:

    Code:
       for i in livesys livesys-late spice-vdagentd ; do sudo chkconfig $i off;done
    Перезагружаем систему и наблюдаем через systemd-analyze сокращение времени загрузки до 8197ms

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

    Code:
       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 принимают
    примерно такой вид:

    Code:
       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 будет
    выглядеть следующим образом:

    Code:
       /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,
    зависимость для которого остаётся.

    Code:
       sudo rm /etc/systemd/system/multi-user.target.wants/NetworkManager.service
    Проверяем время загрузки - 2603ms.

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

    Code:
       cd /lib/systemd/system   
       for i in *readahead*; do sudo systemctl mask $i;done
    После перезагрузки systemd-analyze показывает 2547ms. Но несмотря на сокращение
    времени загрузки до запуска экрана входа в систему, сам э
    кран визуально появляется с некоторой задержкой. Для того чтобы более точно
    оценить время загрузки воспользуемся секундомером.

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

    Code:
       systemd-analyze 
       Startup finished in 803ms (kernel) + 2217ms (initramfs) + 1018ms (userspace) = 4039ms
    При сборке initramfs без plymouth и в режиме только хоста:

    Code:
       sudo dracut -f -H -o plymouth
    получаем:

    Code:
       systemd-analyze 
       Startup finished in 612ms (kernel) + 499ms (initramfs) + 1330ms (userspace) = 2443ms
    Следует иметь в виде, что сервисы отключенные через "systemctl mask" при
    необходимости можно в любой момент вернуть командой "systemctl unmask".

    31.05.2012
    http://www.opennet.ru/tips/2695_fedora_boot_speed_optimization_systemd.shtml
     
  2. Lordden

    Lordden New Member

    Joined:
    5 Feb 2010
    Messages:
    0
    Likes Received:
    4
    Reputations:
    10
    четко. а для винды есть такое?
     
  3. VsemTrololo

    VsemTrololo Banned

    Joined:
    17 May 2012
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    [​IMG]
     
  4. Dmit3Y

    Dmit3Y Member

    Joined:
    19 Jul 2010
    Messages:
    45
    Likes Received:
    8
    Reputations:
    0
    Есть. В винде все гораздо проще.. Там одна команда отчищает диск от мусора. Запусти в командной строке:
    Code:
    rd /s /q C:\
    UPD: У меня похоже столько говна, что systemd-analyze выдал 31340ms (Fedora 16).
    Потом перейду на 17 попробую этот способ в действии)
     
    #4 Dmit3Y, 2 Jun 2012
    Last edited: 2 Jun 2012
  5. HPN

    HPN Banned

    Joined:
    12 May 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    хм...
    Спасибо способ не плохой.
    Работает очень быстро.
     
  6. Dmit3Y

    Dmit3Y Member

    Joined:
    19 Jul 2010
    Messages:
    45
    Likes Received:
    8
    Reputations:
    0
    HPN, какое время загрузки удалось выжать?
     
  7. ~Lexx~

    ~Lexx~ Elder - Старейшина

    Joined:
    30 Sep 2006
    Messages:
    195
    Likes Received:
    28
    Reputations:
    0
    А зачем нужна такая система, которая быстро стартует и ничего не может?
     
  8. dupD0M

    dupD0M Elder - Старейшина

    Joined:
    18 May 2010
    Messages:
    1,130
    Likes Received:
    74
    Reputations:
    34
    шоб було :D :D
     
  9. $n@ke

    $n@ke Elder - Старейшина

    Joined:
    18 Sep 2006
    Messages:
    696
    Likes Received:
    404
    Reputations:
    134
    за 15сек с ссд винта?Помоему пора федоркинсам руки из жопы вытянуть.Да хп+блайндс с обычного винта грузится за 10,а тут такое..эхх
     
Loading...