<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>41080</bug_id>
          
          <creation_ts>2021-10-08 19:45:04 +0300</creation_ts>
          <short_desc>livecd-install очень медленный</short_desc>
          <delta_ts>2021-11-30 12:12:48 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>alterator-livecd</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Sheplyakov">asheplyakov</reporter>
          <assigned_to name="asheplyakov@altlinux.org">asheplyakov</assigned_to>
          <cc>antohami</cc>
    
    <cc>cas</cc>
    
    <cc>klark</cc>
    
    <cc>mike</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>203610</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2021-10-08 19:45:04 +0300</bug_when>
    <thetext>Распаковка образа, скопированного в память, на 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</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203646</commentid>
    <comment_count>1</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-10-10 13:13:49 +0300</bug_when>
    <thetext>Давайте попробуем перейти на unsquashfs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203716</commentid>
    <comment_count>2</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-10-12 16:26:17 +0300</bug_when>
    <thetext>Вижу, что Alexey Sheplyakov уже этим занимается:

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

Поэтому назначаю на него.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203727</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2021-10-12 18:10:28 +0300</bug_when>
    <thetext>#286902 TESTED #1 [test-only] sisyphus alterator-livecd.git=0.8.9-alt1

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

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

Ясно, что установке на &quot;настоящий&quot; (вращающийся) жёсткий диск числа будут несколько другие.
(Но именно в этом случае мучить диск многократными 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)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203754</commentid>
    <comment_count>4</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-10-13 12:32:23 +0300</bug_when>
    <thetext>Я попробовал в 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%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203805</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2021-10-14 16:10:23 +0300</bug_when>
    <thetext>(In reply to Антон Мидюков from comment #4)
&gt; Я попробовал в virtualbox с одним ядром и двумя ядрами процессора. С одним
&gt; ядром выигрыша практически нет, а с двумя почти в два раза (это на mate).
&gt; gnome3 x86_64, распаковался за 1 минуту 36 секунд против 4 минут, выигрыш по
&gt; времени 2,5 раза. Так что, чем больше ядер и чем больше squash, тем выигрыш
&gt; по времени будет больше.
&gt; 
&gt; Проверил также на Raspberry Pi 4 (установка на sd-карту). 4 с половиной
&gt; минуты устанавливался cinnamon. И это быстро! Без задания 10 минут
&gt; устанавливается.
&gt; 
&gt; По коду:
&gt; 
&gt; 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 &gt;= 2.5-alt1, alterator-browser-qt &gt;= 2.17.0, alterator-lookout &gt;= 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.

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

Сделал.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203806</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Sheplyakov">asheplyakov</who>
    <bug_when>2021-10-14 16:12:29 +0300</bug_when>
    <thetext>(In reply to Alexey Sheplyakov from comment #5)

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

#286902 BUILDING #3 [locked] [test-only] sisyphus alterator-livecd.git=0.8.9-alt1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203807</commentid>
    <comment_count>7</comment_count>
    <who name="Антон Мидюков">antohami</who>
    <bug_when>2021-10-14 16:34:04 +0300</bug_when>
    <thetext>(In reply to Alexey Sheplyakov from comment #5)
&gt; (In reply to Антон Мидюков from comment #4)
&gt; &gt; 
&gt; &gt; 1. Зависимость на losetup разве не добавляется автоматом?
&gt; 
&gt; Нет (http://git.altlinux.org/tasks/286902/build/200/aarch64/log):
&gt; 

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

Хорошо.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203810</commentid>
    <comment_count>8</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2021-10-14 19:35:40 +0300</bug_when>
    <thetext>alterator-livecd-0.8.9-alt1 -&gt; sisyphus:

 Fri Oct 08 2021 Alexey Sheplyakov &lt;asheplyakov@altlinux&gt; 0.8.9-alt1
 - Faster and more reliable installation (closes: #41080)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205475</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2021-11-30 12:12:48 +0300</bug_when>
    <thetext>Спасибо вам обоим :)

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

    </bug>

</bugzilla>