Распаковка образа, скопированного в память, на 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
Давайте попробуем перейти на unsquashfs.
Вижу, что Alexey Sheplyakov уже этим занимается: [#286902] TESTED alterator-livecd.git=0.8.9-alt1 Поэтому назначаю на него.
#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)
Я попробовал в 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%.
(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%. Сделал.
(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
(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%. > > Сделал. Хорошо.
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)
Спасибо вам обоим :) Было опробовано несколько реализаций и подходов, но насколько помню -- не учли многоядерность тогда.