Bug 41080

Summary: livecd-install очень медленный
Product: Sisyphus Reporter: Alexey Sheplyakov <asheplyakov>
Component: alterator-livecdAssignee: asheplyakov <asheplyakov>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: antohami, cas, klark, mike
Version: unstable   
Hardware: all   
OS: Linux   

Description Alexey Sheplyakov 2021-10-08 19:45:04 MSK
Распаковка образа, скопированного в память, на nvme диск занимает около 6 минут.

При этом ресурсов вполне достаточно:
1. Средняя скорость синхронной записи 4КБ блоками - 64 МБ/сек [1], за 6 минут можно *синхронно* записать ~ 24 ГБ данных (при установке записывается чуть менее 8ми).
2. Распаковка образа /image/live занимает ~ 23 секунды (измерено комадной time unsquashfs -d /mnt/destination/home/test /image/live)

[1] Измерена командой

dd if=/dev/zero of=/mnt/destination/test.img bs=4K conv=fsync oflag=direct count=$((1024*1024)) status=progress
Comment 1 Антон Мидюков 2021-10-10 13:13:49 MSK
Давайте попробуем перейти на unsquashfs.
Comment 2 Антон Мидюков 2021-10-12 16:26:17 MSK
Вижу, что Alexey Sheplyakov уже этим занимается:

[#286902] TESTED alterator-livecd.git=0.8.9-alt1

Поэтому назначаю на него.
Comment 3 Alexey Sheplyakov 2021-10-12 18:10:28 MSK
#286902 TESTED #1 [test-only] sisyphus alterator-livecd.git=0.8.9-alt1

Проверил на aarch64 (плата TF307 с процессором BE-M1000). Установка прошла успешно.
Распаковка squashfs происходит за ~ 30 секунд. Для распаковки задействуются все доступные
процессорные ядра.

Проверил на x86 виртуальной машине (6 виртуальных процессоров).
Установка прошла успешно. squashfs распаковывается "почти сразу", меньше 10 секунд.

Ясно, что установке на "настоящий" (вращающийся) жёсткий диск числа будут несколько другие.
(Но именно в этом случае мучить диск многократными du -h наиболее затратно).

Для проверки использовал образы

http://nightly.altlinux.org/sisyphus-aarch64/snapshots/20211006/regular-xfce-20211006-aarch64.iso (sha256 816c4c72cecf473184e0d00906213cb6a76cb2a43570875eeff4211ef2531b9d)

http://nightly.altlinux.org/sisyphus/snapshots/20211006/regular-xfce-20211006-x86_64.iso (sha256 6d1cee213b4c6428a086353f693b4e26945eaf76d5fd58d870138944dc5e6636)
Comment 4 Антон Мидюков 2021-10-13 12:32:23 MSK
Я попробовал в virtualbox с одним ядром и двумя ядрами процессора. С одним ядром выигрыша практически нет, а с двумя почти в два раза (это на mate). gnome3 x86_64, распаковался за 1 минуту 36 секунд против 4 минут, выигрыш по времени 2,5 раза. Так что, чем больше ядер и чем больше squash, тем выигрыш по времени будет больше.

Проверил также на Raspberry Pi 4 (установка на sd-карту). 4 с половиной минуты устанавливался cinnamon. И это быстро! Без задания 10 минут устанавливается.

По коду:

1. Зависимость на losetup разве не добавляется автоматом? Попробуйте убрать из спека
Requires: losetup
Прописывать стоит только зависимости с версиями и те зависимоси, которые не нашлись автоматически.

2. Если парсер процентов захватит последним значением не 100%, то 100% не будет никогда. Наблюдал 99% на RPi4. После успешного выполнения цикла стоит установить 100%.
Comment 5 Alexey Sheplyakov 2021-10-14 16:10:23 MSK
(In reply to Антон Мидюков from comment #4)
> Я попробовал в virtualbox с одним ядром и двумя ядрами процессора. С одним
> ядром выигрыша практически нет, а с двумя почти в два раза (это на mate).
> gnome3 x86_64, распаковался за 1 минуту 36 секунд против 4 минут, выигрыш по
> времени 2,5 раза. Так что, чем больше ядер и чем больше squash, тем выигрыш
> по времени будет больше.
> 
> Проверил также на Raspberry Pi 4 (установка на sd-карту). 4 с половиной
> минуты устанавливался cinnamon. И это быстро! Без задания 10 минут
> устанавливается.
> 
> По коду:
> 
> 1. Зависимость на losetup разве не добавляется автоматом?

Нет (http://git.altlinux.org/tasks/286902/build/200/aarch64/log):

[00:00:04] find-requires: running scripts (cpp,debuginfo,files,lib,pam,perl,pkgconfig,pkgconfiglib,python,python3,rpmlib,shebang,shell,static,symlinks,systemd-services)
[00:00:06] find-requires: FINDPACKAGE-COMMANDS: alterator-mailbox-send alterator-sh-functions alterator-wait chmod chroot egrep env install2-remount-functions message_loop mkdir mount mountpoint notify_error remount_chroot rm rmdir run-parts sed shell-config shell-error shell-var shell_config_set shell_var_is_yes sleep sort swapoff sync umount unsquashfs write_bool_param write_error write_string_param xargs
[00:00:06] Requires: squashfsprogs, libshell, alterator-l10n >= 2.5-alt1, alterator-browser-qt >= 2.17.0, alterator-lookout >= 2.4-alt1, installer-scripts-remount-stage2, util-linux, /bin/bash, /bin/sh, alterator, alterator-sh-functions, coreutils, findutils, grep, mount, sed, service, squashfs-tools, sysvinit-utils

Также автоматика не находит зависимость от util-linux (findmnt).
В приведенном логе зависимость от util-linux взялась из spec.

> 2. Если парсер процентов захватит последним значением не 100%, то 100% не
> будет никогда. Наблюдал 99% на RPi4. После успешного выполнения цикла стоит
> установить 100%.

Сделал.
Comment 6 Alexey Sheplyakov 2021-10-14 16:12:29 MSK
(In reply to Alexey Sheplyakov from comment #5)

> > 2. Если парсер процентов захватит последним значением не 100%, то 100% не
> > будет никогда. Наблюдал 99% на RPi4. После успешного выполнения цикла стоит
> > установить 100%.
> 
> Сделал.

#286902 BUILDING #3 [locked] [test-only] sisyphus alterator-livecd.git=0.8.9-alt1
Comment 7 Антон Мидюков 2021-10-14 16:34:04 MSK
(In reply to Alexey Sheplyakov from comment #5)
> (In reply to Антон Мидюков from comment #4)
> > 
> > 1. Зависимость на losetup разве не добавляется автоматом?
> 
> Нет (http://git.altlinux.org/tasks/286902/build/200/aarch64/log):
> 

Скорее всего, произошла оптимизация зависимостей. alterator-livecd зависит от пакета, который уже вытягивает losetup.
Как минимум, installer-scripts-remount-stage2 вытягивает по зависимостям и losetup, и util-linux. Мне всё же кажется, что ручное указание зависимостей излишне. Но не настаиваю.
 
> > 2. Если парсер процентов захватит последним значением не 100%, то 100% не
> > будет никогда. Наблюдал 99% на RPi4. После успешного выполнения цикла стоит
> > установить 100%.
> 
> Сделал.

Хорошо.
Comment 8 Repository Robot 2021-10-14 19:35:40 MSK
alterator-livecd-0.8.9-alt1 -> sisyphus:

 Fri Oct 08 2021 Alexey Sheplyakov <asheplyakov@altlinux> 0.8.9-alt1
 - Faster and more reliable installation (closes: #41080)
Comment 9 Michael Shigorin 2021-11-30 12:12:48 MSK
Спасибо вам обоим :)

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