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

Вопросы программного кода и архитектуры Linux

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 24 окт 2019, 21:27

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузка: восстановление и оптимизация

Непрочитанное сообщение Olej » 25 окт 2019, 01:33

Olej писал(а):
24 окт 2019, 21:27
Вот о разборках с такими случаями - эта тема.
Я за много лет с Linux в такие ситуации попадал неоднократно ... но некоторые ситуации забываются ... а потом опять повторяются.
Неприятности в этот раз начались с игрищ с разделом swap - Производительность диска:
Вот как выглядит тестирование для раздела swap:
- запись:
Но после такого тестирования:
- была порушена структура раздела swap,
- который хотя он и не используется, но он прописан в /etc/fstat
- и при загрузке он пытается монтироваться и не может в таком качестве...
- и эти разборки вызывают задержку в загрузке системы на 1.5-2 минуты.
Вот как этот ужас выглядел:

Код: Выделить всё

olej@ACER:~$ systemd-analyze blame
    1min 10.084s apt-daily-upgrade.service
         11.408s apt-daily.service
          3.302s NetworkManager-wait-online.service
          1.984s snapd.service
          1.739s mariadb.service
          1.733s upower.service
          1.494s udisks2.service
          1.315s ModemManager.service
           976ms apache2.service
           884ms accounts-daemon.service
           875ms ifupdown-pre.service
           809ms dev-sda2.device
...
В итоге, делаем переразметку раздела swap:

Код: Выделить всё

# mkswap /dev/sda3
...
Но после этого уплыл UUID этого раздела, и опять возникает ошибка (в 1 минуту) при монтировании из /etc/fstat.

Приходится переписать /etc/fstat:

Код: Выделить всё

olej@ACER:/etc$ cat /etc/fstab 
...
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda2 during installation
UUID=50f6834e-c11c-4d0d-9df2-2a0752b26d72 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
UUID=200C-8B31  /boot/efi       vfat    umask=0077      0       1
# /home was on /dev/sda4 during installation
UUID=bb1a4978-8827-44ef-9637-d833fd1241a8 /home           ext4    defaults        0       2
# swap was on /dev/sda3 during installation
#UUID=f44a7093-94cf-4bb2-92ba-9ca790d5e5f7 none            swap    sw              0       0
UUID=006cdd2f-58e7-4144-ab85-8e640cdbbc81 none            swap    sw              0       0
...
Вот в 2-х последних строках: предыдущий и текущий UUID.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузка: восстановление и оптимизация

Непрочитанное сообщение Olej » 25 окт 2019, 16:00

Olej писал(а):
25 окт 2019, 01:33
Вот в 2-х последних строках: предыдущий и текущий UUID.
Но с этого цирк только начался...
После нескольких установок и удалений, кажется это связано в таким Ubuntu-говном как snapd (см. Snap пакеты) загрузка происходит так:
- меню GRUB, всё ОК...
- начало загрузки (ядра?) на чёрном экране, курсор в левом верхнем углу, секунд 30-35...
- дальше, как привычно, текстовые сообщения загрузки системы...
- заканчивающийся графическим экраном логина lightdm
Выяснить откуда взялась 2-я позиция этого марлизонского балета - я выследить никак не могу.

И здесь как-раз возникает большая необходимость в анализе загрузки ... а заодно, по случаю, оптимизацияя загрузки под свои конкретные условия (например, приостановка сервисов которые не используются).

Об этом уже было писано, по случаю, здесь: Попытка сравнения линуксов в плане для дома/для семьи.
Но теперь это целенаправленная необходимость.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузка: восстановление и оптимизация

Непрочитанное сообщение Olej » 25 окт 2019, 16:11

Olej писал(а):
25 окт 2019, 16:00
- меню GRUB, всё ОК...
- начало загрузки (ядра?) на чёрном экране, курсор в левом верхнем углу, секунд 30-35...
- дальше, как привычно, текстовые сообщения загрузки системы...
- заканчивающийся графическим экраном логина lightdm
Выяснить откуда взялась 2-я позиция этого марлизонского балета - я выследить никак не могу.
При этом изначально, до разбирательства, это выглядело как-то так:

Код: Выделить всё

olej@ACER:~/2019_WORK/HISTORY/10/22$ systemd-analyze blame
          3.032s NetworkManager-wait-online.service
          1.885s upower.service
          1.367s snapd.service
          1.192s mariadb.service
           991ms ifupdown-pre.service
           886ms networking.service
           738ms snapd.seeded.service
           718ms dev-sda2.device
           712ms udisks2.service
           675ms vboxdrv.service
           640ms exim4.service
           553ms ModemManager.service
...
И критическая цепочка:

Код: Выделить всё

olej@ACER:~/2019_WORK/HISTORY/10/22$ systemd-analyze critical-chain
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.

graphical.target @4.896s
└─multi-user.target @4.896s
  └─teamviewerd.service @4.793s +102ms
    └─network-online.target @4.791s
      └─NetworkManager-wait-online.service @1.759s +3.032s
        └─NetworkManager.service @1.358s +382ms
          └─dbus.service @1.349s
            └─basic.target @1.338s
              └─sockets.target @1.338s
                └─snapd.socket @1.327s +11ms
                  └─sysinit.target @1.326s
                    └─haveged.service @1.326s
                      └─apparmor.service @1.155s +168ms
                        └─local-fs.target @1.150s
                          └─boot-efi.mount @1.139s +11ms
                            └─systemd-fsck@dev-disk-by\x2duuid-200C\x2d8B31.service @1.071s +65ms
                              └─dev-disk-by\x2duuid-200C\x2d8B31.device @927ms
Странно!
systemd видит времена загрузок, в итоге, порядка 4-5 сек., но не видит паузы в 30-35 сек. начала загрузки!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузка: восстановление и оптимизация

Непрочитанное сообщение Olej » 25 окт 2019, 16:22

Olej писал(а):
25 окт 2019, 16:00
... а заодно, по случаю, оптимизацияя загрузки под свои конкретные условия (например, приостановка сервисов которые не используются).
...
Но теперь это целенаправленная необходимость.
Думаю, что локальны Exim с его SMTP мне не нужен ... тем более, что он древний-дремучий + на него нарекают что он изрядно может жрать времени (на что и за что?):

Код: Выделить всё

olej@ACER:/etc/default$ systemctl status exim4
● exim4.service - LSB: exim Mail Transport Agent
   Loaded: loaded (/etc/init.d/exim4; generated)
   Active: active (running) since Thu 2019-10-24 11:55:20 EEST; 4h 30min ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 1 (limit: 4915)
   Memory: 5.1M
   CGroup: /system.slice/exim4.service
           └─1559 /usr/sbin/exim4 -bd -q30m
           
окт 24 11:55:20 ACER systemd[1]: Starting LSB: exim Mail Transport Agent...
окт 24 11:55:20 ACER exim4[1225]: Starting MTA: exim4.
окт 24 11:55:20 ACER systemd[1]: Started LSB: exim Mail Transport Agent.

olej@ACER:/etc/default$ systemctl stop exim4

olej@ACER:/etc/default$ systemctl status exim4
● exim4.service - LSB: exim Mail Transport Agent
   Loaded: loaded (/etc/init.d/exim4; generated)
   Active: inactive (dead) since Thu 2019-10-24 16:26:50 EEST; 3s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 10476 ExecStop=/etc/init.d/exim4 stop (code=exited, status=0/SUCCESS)

окт 24 11:55:20 ACER systemd[1]: Starting LSB: exim Mail Transport Agent...
окт 24 11:55:20 ACER exim4[1225]: Starting MTA: exim4.
окт 24 11:55:20 ACER systemd[1]: Started LSB: exim Mail Transport Agent.
окт 24 16:26:50 ACER systemd[1]: Stopping LSB: exim Mail Transport Agent...
окт 24 16:26:50 ACER exim4[10476]: Stopping MTA: exim4_listener.
окт 24 16:26:50 ACER systemd[1]: exim4.service: Succeeded.
окт 24 16:26:50 ACER systemd[1]: Stopped LSB: exim Mail Transport Agent.

Код: Выделить всё

olej@ACER:/etc/default$ systemctl is-enabled exim4
exim4.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install is-enabled exim4
enabled

olej@ACER:/etc/default$ sudo systemctl disable exim4
exim4.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable exim4

olej@ACER:/etc/default$ systemctl is-enabled exim4
exim4.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install is-enabled exim4
disabled

olej@ACER:/etc/default$ sudo systemctl mask exim4
Created symlink /etc/systemd/system/exim4.service → /dev/null.
olej@ACER:/etc/default$ systemctl is-enabled exim4
masked

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузка: восстановление и оптимизация

Непрочитанное сообщение Olej » 25 окт 2019, 16:27

Olej писал(а):
25 окт 2019, 16:11
Странно!
systemd видит времена загрузок, в итоге, порядка 4-5 сек., но не видит паузы в 30-35 сек. начала загрузки!
После некоторых удалений картина загрузки видится так:

Код: Выделить всё

olej@ACER:~$ systemd-analyze blame
          2.795s NetworkManager-wait-online.service
          1.804s upower.service
           766ms dev-sda2.device
           727ms udisks2.service
           650ms ModemManager.service
           574ms apache2.service
           568ms vboxdrv.service
           560ms accounts-daemon.service
           467ms gpm.service
           463ms systemd-logind.service
           414ms lm-sensors.service
           403ms rsyslog.service
           400ms zramswap.service
           394ms nscd.service
           390ms NetworkManager.service
           390ms wpa_supplicant.service
           387ms systemd-journald.service
           382ms zram-setup@zram0.service
...
И вот так:

Код: Выделить всё

olej@ACER:~$ systemd-analyze 
Startup finished in 8.045s (firmware) + 6.023s (loader) + 35.323s (kernel) + 4.622s (userspace) = 54.013s 
graphical.target reached after 4.608s in userspace
И тут вылазит несоответствие: запуск служб (blame) в сумме занимает несколько секунд.
Но что тогда во 2-м выводе: 35.323s (kernel) ???
Откуда это?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузка: восстановление и оптимизация

Непрочитанное сообщение Olej » 25 окт 2019, 16:29

Olej писал(а):
25 окт 2019, 16:27
После некоторых удалений картина загрузки видится так:
Ещё из инструментов анализа (берём на заметку):

Код: Выделить всё

olej@ACER:~/2019_WORK/HISTORY/10/24$ systemd-analyze plot > g1.svf

Код: Выделить всё

olej@ACER:~/2019_WORK/HISTORY/10/24$ file g1.svf
g1.svf: SVG Scalable Vector Graphics image
Потом в браузере (Firefox) раскладка загрузки составных компонент ядра выглядит так:
g2.png
(в Opera у меня этот файл векторной графики не открылся ... нужен какой-то плагин?)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузка: восстановление и оптимизация

Непрочитанное сообщение Olej » 25 окт 2019, 17:14

Olej писал(а):
25 окт 2019, 16:27
И тут вылазит несоответствие: запуск служб (blame) в сумме занимает несколько секунд.
Но что тогда во 2-м выводе: 35.323s (kernel) ???
Откуда это?
Предполагая, что это происходит до начала загрузки ядра, грешу на initramfs, а конкретно:

Код: Выделить всё

olej@ACER:/etc/initramfs-tools/conf.d$ ls /boot/initrd.img-`uname -r`
/boot/initrd.img-4.19.0-6-amd64

Про сборку минимального загрузочного образа (и его оптимизацию) написано много и подробно в теме initramfs.
Чтоб не мудрить и не рисковать (я сейчас ничего по существу не меняю), собрать можно косвенно, по зависимостям:

Код: Выделить всё

olej@ACER:~/2019_WORK/HISTORY/10/25$ sudo apt-get reinstall firmware-misc-nonfree
[sudo] пароль для olej: 
Попробуйте ещё раз.
[sudo] пароль для olej: 
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Обновлено 0 пакетов, установлено 0 новых пакетов, переустановлено 1 пакетов, для удаления отмечено 0 пакетов, и 1 пакетов не обновлено.
Необходимо скачать 3 338 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 0 B.
Пол:1 http://deb.debian.org/debian buster/non-free amd64 firmware-misc-nonfree all 20190114-2 [3 338 kB]
Получено 3 338 kB за 1с (2 238 kB/s)                   
(Чтение базы данных … на данный момент установлен 414251 файл и каталог.)
Подготовка к распаковке …/firmware-misc-nonfree_20190114-2_all.deb …
Распаковывается firmware-misc-nonfree (20190114-2) на замену (20190114-2) …
Настраивается пакет firmware-misc-nonfree (20190114-2) …
update-initramfs: deferring update (trigger activated)
Обрабатываются триггеры для initramfs-tools (0.133+deb10u1) …
update-initramfs: Generating /boot/initrd.img-4.19.0-6-amd64
W: initramfs-tools configuration sets RESUME=UUID=006cdd2f-58e7-4144-ab85-8e640cdbbc81
W: but no matching swap device is available.
I: The initramfs will attempt to resume from /dev/sda3
I: (UUID=b1d3f04a-5f8b-4f87-8b1e-330670f0c6b3)
I: Set the RESUME variable to override this.
И здесь сюрприз: упоминаемый UUID=006cdd2f-58e7-4144-ab85-8e640cdbbc81 - это старый, изменённый swap раздел.
И он действительно упоминается в конфигурациях:

Код: Выделить всё

olej@ACER:/etc/initramfs-tools/conf.d$ cat /etc/initramfs-tools/conf.d/resume 
RESUME=UUID=006cdd2f-58e7-4144-ab85-8e640cdbbc81
По дате-времени вижу, что initramfs пересобран:

Код: Выделить всё

olej@ACER:/etc/initramfs-tools/conf.d$ ls -l /boot/initrd.img-`uname -r`
-rw-r--r-- 1 root root 27176261 окт 25 16:51 /boot/initrd.img-4.19.0-6-amd64

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузка: восстановление и оптимизация

Непрочитанное сообщение Olej » 25 окт 2019, 17:22

Olej писал(а):
25 окт 2019, 17:14
По дате-времени вижу, что initramfs пересобран:
Перезагрузка!
Вот теперь вся загрузка (это SSD) идёт "по честному" в считанные секунды от включения до полного разворачивания Cinnamon (автологин):

Код: Выделить всё

olej@ACER:~$ systemd-analyze
Startup finished in 4.779s (firmware) + 2.495s (loader) + 3.483s (kernel) + 4.731s (userspace) = 15.489s 
graphical.target reached after 4.721s in userspace
15.5 секунд из которых запуск графического DE!
Это куда приятнее, чем 1.5-2 минуты. :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: загрузка: восстановление и оптимизация

Непрочитанное сообщение Olej » 25 окт 2019, 17:39

Правим:
Olej писал(а):
25 окт 2019, 17:14

Код: Выделить всё

olej@ACER:~$ cat /etc/initramfs-tools/conf.d/resume
RESUME=UUID=b1d3f04a-5f8b-4f87-8b1e-330670f0c6b3
Характерно и важно...
Что в каталоге /etc/initramfs-tools/conf.d нельзя хранить старые переименованные версии файла resume (например resume.1), потому что, он похоже подхватывает все файлы, найденные в каталоге:

Код: Выделить всё

olej@ACER:~/2019_WORK/HISTORY/10/28$ sudo apt reinstall firmware-linux-free firmware-misc-nonfree firmware-realtek
[sudo] пароль для olej: 
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Обновлено 0 пакетов, установлено 0 новых пакетов, переустановлено 3 пакетов, для удаления отмечено 0 пакетов, и 64 пакетов не обновлено.
Необходимо скачать 3 862 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 0 B.
Пол:1 http://deb.debian.org/debian buster/main amd64 firmware-linux-free all 3.4 [19,2 kB]
Пол:2 http://deb.debian.org/debian buster/non-free amd64 firmware-misc-nonfree all 20190114-2 [3 338 kB]
Пол:3 http://deb.debian.org/debian buster/non-free amd64 firmware-realtek all 20190114-2 [505 kB]
Получено 3 862 kB за 2с (2 431 kB/s)                   
(Чтение базы данных … на данный момент установлено 414442 файла и каталога.)
Подготовка к распаковке …/firmware-linux-free_3.4_all.deb …
Распаковывается firmware-linux-free (3.4) на замену (3.4) …
Подготовка к распаковке …/firmware-misc-nonfree_20190114-2_all.deb …
Распаковывается firmware-misc-nonfree (20190114-2) на замену (20190114-2) …
Подготовка к распаковке …/firmware-realtek_20190114-2_all.deb …
Распаковывается firmware-realtek (20190114-2) на замену (20190114-2) …
Настраивается пакет firmware-linux-free (3.4) …
update-initramfs: deferring update (trigger activated)
Настраивается пакет firmware-misc-nonfree (20190114-2) …
update-initramfs: deferring update (trigger activated)
Настраивается пакет firmware-realtek (20190114-2) …
update-initramfs: deferring update (trigger activated)
Обрабатываются триггеры для initramfs-tools (0.133+deb10u1) …
update-initramfs: Generating /boot/initrd.img-4.19.0-6-amd64
W: initramfs-tools configuration sets RESUME=UUID=006cdd2f-58e7-4144-ab85-8e640cdbbc81
W: but no matching swap device is available.
I: The initramfs will attempt to resume from /dev/sda3
I: (UUID=b1d3f04a-5f8b-4f87-8b1e-330670f0c6b3)
I: Set the RESUME variable to override this.

olej@ACER:~/2019_WORK/HISTORY/10/28$ ls -l /boot/init*-`uname -r`*
-rw-r--r-- 1 root root 27175905 окт 30 13:19 /boot/initrd.img-4.19.0-6-amd64

И только, всего лишь, после того как удалить "лишние" файлы оттуда:

Код: Выделить всё

olej@ACER:~/2019_WORK/HISTORY/10/28$ sudo apt reinstall firmware-linux-free firmware-misc-nonfree firmware-realtek
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Обновлено 0 пакетов, установлено 0 новых пакетов, переустановлено 3 пакетов, для удаления отмечено 0 пакетов, и 64 пакетов не обновлено.
Необходимо скачать 3 862 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 0 B.
Пол:1 http://deb.debian.org/debian buster/main amd64 firmware-linux-free all 3.4 [19,2 kB]
Пол:2 http://deb.debian.org/debian buster/non-free amd64 firmware-misc-nonfree all 20190114-2 [3 338 kB]
Пол:3 http://deb.debian.org/debian buster/non-free amd64 firmware-realtek all 20190114-2 [505 kB]
Получено 3 862 kB за 1с (2 831 kB/s)                   
(Чтение базы данных … на данный момент установлено 414442 файла и каталога.)
Подготовка к распаковке …/firmware-linux-free_3.4_all.deb …
Распаковывается firmware-linux-free (3.4) на замену (3.4) …
Подготовка к распаковке …/firmware-misc-nonfree_20190114-2_all.deb …
Распаковывается firmware-misc-nonfree (20190114-2) на замену (20190114-2) …
Подготовка к распаковке …/firmware-realtek_20190114-2_all.deb …
Распаковывается firmware-realtek (20190114-2) на замену (20190114-2) …
Настраивается пакет firmware-linux-free (3.4) …
update-initramfs: deferring update (trigger activated)
Настраивается пакет firmware-misc-nonfree (20190114-2) …
update-initramfs: deferring update (trigger activated)
Настраивается пакет firmware-realtek (20190114-2) …
update-initramfs: deferring update (trigger activated)
Обрабатываются триггеры для initramfs-tools (0.133+deb10u1) …
update-initramfs: Generating /boot/initrd.img-4.19.0-6-amd64

olej@ACER:~/2019_WORK/HISTORY/10/28$ ls -l /boot/initrd.img-4.19.0-6-amd64
-rw-r--r-- 1 root root 27175980 окт 30 13:34 /boot/initrd.img-4.19.0-6-amd64
Обращаем внимание, что размер файла поменялся!

Ответить

Вернуться в «Linux изнутри»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя