и решаю медлительность пережатием в более легкий для распаковки алгоритм, LZO или LZ4.
Когда в squash tools придет zstd еще можно будет подумать, так как по размеру он не сильно уступает xz, за то распаковка судя по тестам быстрее чем у lzo.
Я тут обратил внимание что у нас в PRA все алгоритмы сжатия/распаковки не используют многопоточность. Не знаю как с этим в Magos.
Для примера возьмем xz:
% du -h skype.tar
229M skype.tar
% xz -c skype.tar > skype.tar.xz && du -h skype.tar.xz
xz -c skype.tar > skype.tar.xz 140,95s user 0,55s system 99% cpu 2:22,50 total
71M skype.tar.xz
% xz -c -T 0 skype.tar > skype.tar.xz && du -h skype.tar.xz
xz -c -T 0 skype.tar > skype.tar.xz 134,52s user 0,86s system 349% cpu 38,694 total
71M skype.tar.xz
(У меня zsh, команда time по умолчанию)
P.s. Lz4 вроде использует многопоточность по умолчанию? Не нашел четкого ответа в сети.
Он не призван жать также хорошо как xz, скорее он призван при относительно хорошем сжатии быстро распаковывать.
% du -h skype_XZ.tar.xz && du -h skype_ZSTD.tar.xz
71M skype_XZ.tar.xz
76M skype_ZSTD.tar.xz
% xz -d -c -T 0 skype_XZ.tar.xz > skype_XZ.tar
xz -d -c -T 0 skype_XZ.tar.xz > skype_XZ.tar 6,21s user 0,41s system 99% cpu 6,653 total
% time zstdmt -d -c skype_ZSTD.tar.xz > skype_ZSTD.tar
skype_ZSTD.tar.xz : 239933440 bytes
zstdmt -d -c skype_ZSTD.tar.xz > skype_ZSTD.tar 0,80s user 0,24s system 97% cpu 1,061 total
Цифры конечно безумные у zstd. )
У вас в PRA какая версия squashfs-tools?
В репах Арча 4.3-8 и умеет zstd.
zstd
-Xcompression-level <compression-level>
<compression-level> should be 1 .. 22 (default 15)
Сжал /usr/share в xz и в zstd чисто посмотреть разницу:
# du -m usr_share.*
358 usr_share.xz.xzm
399 usr_share.zst.xzm
Время упаковки:
xz:
real 332,77
user 514,12
sys 43,80
zstd:
real 147,02
user 181,86
sys 11,30
Степени компрессии по умолчанию
Какие рекомендации? Модули сжатые с этим алгоритмом, а не с xz - лучше?
Ну это смотря для кого что лучше. Надо тестировать.
Вот ещё пожал в lzo для сравнения, который у меня на флешке работает наиболее быстро.
# du -m usr_share.lzo.xzm
464 usr_share.lzo.xzm
real 224,51
user 372,47
sys 36,36
Примерно так.
squashtest lzo, gzip, xz, lz4 --dirs /opt /var
live@pc:~$ squashtest lzo, gzip, xz, lz4 --dirs /opt /var
/usr/local/bin/squashtest: строка 2: /etc/initvars: Нет такого файла или каталога
(пра6408-1-de-ice+rox [gtk2, наверное НЕ-sistemd])
под рутом - тоже самое
Pentium(R) Dual-Core CPU E5200 @ 2.50GHz
Винт Seagate 160G ST3160811AS
write /memory/bundles/42-x-network.xzm zstd -b 512K 178M 45.11 sec
write /memory/bundles/42-x-network.xzm lzo -b 512K 203M 75.21 sec
write /memory/bundles/42-x-network.xzm lz4 -b 512K 260M 8.79 sec
write /memory/bundles/42-x-network.xzm lz4 -Xhc -b 512K 216M 20.00 sec
write /memory/bundles/43-x-multimedia.xzm zstd -b 512K 252M 67.69 sec
write /memory/bundles/43-x-multimedia.xzm lzo -b 512K 284M 102.16 sec
write /memory/bundles/43-x-multimedia.xzm lz4 -b 512K 345M 11.05 sec
write /memory/bundles/43-x-multimedia.xzm lz4 -Xhc -b 512K 298M 25.09 sec
write /memory/bundles/44-x-office.xzm zstd -b 512K 198M 48.39 sec
write /memory/bundles/44-x-office.xzm lzo -b 512K 227M 83.84 sec
write /memory/bundles/44-x-office.xzm lz4 -b 512K 280M 9.65 sec
write /memory/bundles/44-x-office.xzm lz4 -Xhc -b 512K 240M 22.14 sec
write /memory/bundles/45-x-java.xzm zstd -b 512K 50M 12.94 sec
write /memory/bundles/45-x-java.xzm lzo -b 512K 57M 17.77 sec
write /memory/bundles/45-x-java.xzm lz4 -b 512K 71M 3.23 sec
write /memory/bundles/45-x-java.xzm lz4 -Xhc -b 512K 60M 5.19 sec
==========================================================
read all zstd -b 512K 31.53 sec
read all lzo -b 512K 31.34 sec
read all lz4 -b 512K 32.29 sec
read all lz4 -Xhc -b 512K 30.96 sec
write all zstd -b 512K 174.13 sec
write all lzo -b 512K 278.98 sec
write all lz4 -b 512K 32.72 sec
write all lz4 -Xhc -b 512K 72.42 sec
==========================================================
Best read speed -- lz4 -Xhc -b 512K
Best write speed -- lz4 -b 512K
Best compression -- zstd -b 512K
==========================================================
Вот еще тестик. Тут уже столкнул лбами xz и zstd:
sudo squashtest xz -b 512K, zstd -b 512K --dirs /memory/bundles/43*
write /memory/bundles/43-x-multimedia.xzm xz -b 512K 214M 193.82 sec
write /memory/bundles/43-x-multimedia.xzm zstd -b 512K 252M 66.81 sec
==========================================================
read all xz -b 512K 60.02 sec
read all zstd -b 512K 11.38 sec
write all xz -b 512K 193.82 sec
write all zstd -b 512K 66.81 sec
==========================================================
Best read speed -- zstd -b 512K
Best write speed -- zstd -b 512K
Best compression -- xz -b 512K
==========================================================
Тяжелый xz все-таки.
запускать скрипт с тестируемого носителя.
пока запускал до этого: скопировал скрипт в /usr/local/bin (условия загрузки/рабоы системы как и "см. выше" )- результат (на закрытом браузере :)):
live@pc:~$ sudo squashtest lzo, gzip, xz, lz4 --dirs /opt /var
write /opt lzo 16M 7.36 sec
write /opt gzip 14M 5.37 sec
write /opt xz 12M 9.22 sec
write /opt lz4 19M 0.60 sec
write /var lzo 460K 0.85 sec
write /var gzip 360K 0.72 sec
write /var xz 300K 1.32 sec
write /var lz4 596K 0.52 sec
==========================================================
read all lzo 0.07 sec
read all gzip 0.06 sec
read all xz 0.06 sec
read all lz4 0.07 sec
write all lzo/usr/local/bin/squashtest: строка 87: bc: команда не найдена
sec
write all gzip/usr/local/bin/squashtest: строка 87: bc: команда не найдена
sec
write all xz/usr/local/bin/squashtest: строка 87: bc: команда не найдена
sec
write all lz4/usr/local/bin/squashtest: строка 87: bc: команда не найдена
sec
==========================================================
Best read speed -- gzip
Best write speed -- lz4
Best compression -- xz
==========================================================
- что-то не то: write all lz4/usr/local/bin/squashtest: строка 87: bc: команда не найдена
sec
[ Читать далее ]
Ох уж эти ваши спойлеры, кошмар Хромых. Ниче не вижу.
- что-то не то:
Цена легкости ПРА )) Установите bc. Пакманом.
Сравнил степени сжатия zstd, стандартный 15 и максимальный 22, на размер все-таки влияет, а вот скорость распаковки почти одинаковая:
sudo squashtest zstd -b 512K, zstd -Xcompression-level 22 -b 512K --dirs /memory/bundles/43*
write /memory/bundles/43-x-multimedia.xzm zstd -b 512K 252M 66.89 sec
write /memory/bundles/43-x-multimedia.xzmzstd -Xcompression-level 22 -b 512K 238M 169.57 sec
==========================================================
read all zstd -b 512K 11.88 sec
read allzstd -Xcompression-level 22 -b 512K 12.43 sec
write all zstd -b 512K 66.89 sec
write allzstd -Xcompression-level 22 -b 512K 169.57 sec
==========================================================
Best read speed -- zstd -b 512K
Best write speed -- zstd -b 512K
Best compression -- zstd -Xcompression-level 22 -b 512K
==========================================================
У меня какой-то нонсенс. Xz бьет zstd по всем параметрам. Конечно старенький HDD, но все же.
zstd -Xcompression-level 22
% sudo ./squashtest xz -Xbcj x86 -b 512k,zstd -Xcompression-level 22 -b 512k --dirs /opt /var
./squashtest: строка 2: /etc/initvars: Нет такого файла или каталога
write /opt xz -Xbcj x86 -b 512k 53M 35.09 sec
write /opt zstd -Xcompression-level 22 -b 512k 58M 20.81 sec
write /var xz -Xbcj x86 -b 512k 30M 47.37 sec
write /var zstd -Xcompression-level 22 -b 512k 30M 78.40 sec
==========================================================
read all xz -Xbcj x86 -b 512k 0.15 sec
read all zstd -Xcompression-level 22 -b 512k 0.16 sec
write all xz -Xbcj x86 -b 512k 82.46 sec
write all zstd -Xcompression-level 22 -b 512k 99.21 sec
==========================================================
Best read speed -- xz -Xbcj x86 -b 512k
Best write speed -- xz -Xbcj x86 -b 512k
Best compression -- xz -Xbcj x86 -b 512k
==========================================================
sudo ./squashtest xz -Xbcj x86 -b 512k,zstd -Xcompression-level 22 -b 512k 686,19s user 17,92s system 350% cpu 3:21,03 total
Параметры для теста брал те, которые проверял sfs http://forum.puppyrus.org/index.php?topic=21412.msg154208#msg154208
upd. zstd -Xcompression-level 18
% sudo ./squashtest xz -Xbcj x86 -b 512k,zstd -Xcompression-level 18 -b 512k --dirs /opt /var
./squashtest: строка 2: /etc/initvars: Нет такого файла или каталога
write /opt xz -Xbcj x86 -b 512k 53M 34.17 sec
write /optzstd -Xcompression-level 18 -b 512k 58M 16.19 sec
write /var xz -Xbcj x86 -b 512k 30M 47.34 sec
write /varzstd -Xcompression-level 18 -b 512k 32M 29.50 sec
==========================================================
read all xz -Xbcj x86 -b 512k 0.21 sec
read allzstd -Xcompression-level 18 -b 512k 0.14 sec
write all xz -Xbcj x86 -b 512k 81.51 sec
write allzstd -Xcompression-level 18 -b 512k 45.69 sec
==========================================================
Best read speed -- zstd -Xcompression-level 18 -b 512k
Best write speed -- zstd -Xcompression-level 18 -b 512k
Best compression -- xz -Xbcj x86 -b 512k
==========================================================
sudo ./squashtest xz -Xbcj x86 -b 512k,zstd -Xcompression-level 18 -b 512k 471,18s user 15,69s system 338% cpu 2:23,75 total
upd2. Еще небольшой тест. Из которого видно, что скорость чтения у xz и zstd на моем железе примерно одинаковые.
% sudo du -sh /mnt/live/memory/images/001-prar1811-kr1.pfs
613M /mnt/live/memory/images/001-prar1811-kr1.pfs
% sudo ./squashtest xz -Xbcj x86 -b 512k,zstd -Xcompression-level 18 -b 512k --dirs /mnt/live/memory/images/001-prar1811-kr1.pfs
./squashtest: строка 2: /etc/initvars: Нет такого файла или каталога
write/mnt/live/memory/images/001-prar1811-kr1.pfs xz -Xbcj x86 -b 512k 131M 120.36 sec
write/mnt/live/memory/images/001-prar1811-kr1.pfszstd -Xcompression-level 18 -b 512k 147M 49.01 sec
==========================================================
read all xz -Xbcj x86 -b 512k 0.21 sec
read allzstd -Xcompression-level 18 -b 512k 0.20 sec
write all xz -Xbcj x86 -b 512k 120.36 sec
write allzstd -Xcompression-level 18 -b 512k 49.01 sec
==========================================================
Best read speed -- zstd -Xcompression-level 18 -b 512k
Best write speed -- zstd -Xcompression-level 18 -b 512k
Best compression -- xz -Xbcj x86 -b 512k
==========================================================
sudo ./squashtest xz -Xbcj x86 -b 512k,zstd -Xcompression-level 18 -b 512k 648,75s user 26,42s system 343% cpu 3:16,51 total
А проц какой?
% inxi -Cxx
CPU: Quad core Intel Xeon E5450 (-MT-MCP-) arch: Penryn rev.10 cache: 6144 KB
flags: (lm nx sse sse2 sse3 sse4_1 ssse3 vmx) bmips: 23999
clock speeds: min/max: 1998/2997 MHz 1: 1997 MHz 2: 1999 MHz 3: 2764 MHz
4: 2511 MHz
подключил bc-1.07.1-2_6408-1.pfs (48К) - заработало:
Еще, чтобы проверить с zstd, подключить ftp://ftp.yandex.ru/puppyrus/puppyrus-a64/pfs-portable/squashfs-tools-zstd-p-4.3-8_64-sf01.pfs
Сам zstd тоже должен быть в системе:
% zstd -V
*** zstd command line interface 64-bits v1.3.7, by Yann Collet ***
upd. Уже zstd 1.3.8-1 https://www.archlinux.org/packages/core/x86_64/zstd/
Изменения в 1.3.8 https://github.com/facebook/zstd/releases/tag/v1.3.8
Почему бы не попробовать на нашем PRA6408-01
Распаковать iso на раздел. В menu.lst прописать:
title PRA64 OLS.
set d=pra64
set k=4.15.4-pf
kernel /%d%/vmlinuz-%k%_64 dir=%d% rw quiet load=mesa;theme-pop;-gtk2-;palemoon
initrd /%d%/initrd.xz
Добавить ftp://ftp.yandex.ru/puppyrus/puppyrus-a64/pfs-portable/squashfs-tools-zstd-p-4.3-8_64-sf01.pfs
И установить zstd (не знал, что он отсутствует :)):
sudo pacman2pfs zstd
Для правильной работы тестового скрипта squashtest, доустановить bc:
sudo pacman2pfs bc