Сокращение времени загрузки Fedora 17 c 15 до 3 секунд | ||
Разное > Тюнинг Изложенные в данной статье инструкции позволяют сократить до трёх секунд загрузку дистрибутива Fedora 17 с NetworkManager до экрана приглашения входа в систему от GDM. Указанная конфигурация опробована на ноутбуке Lenovo T420s (2x2x Intel Core i5-2540M CPU @ 2.60GHz) и SSD-накопителем Intel SSDSA2BW160G3L.
Используем простейшую конфигурацию разбиения диска с загрузочным и рабочим разделами с файловой системой 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 секунд. Начинаем оптимизацию. 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. 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". |
||
Комментарии | ||