Сайт | Скачать | Видео | Wiki

Автор Тема: Алгоритмы сжатия/распаковки  (Прочитано 28888 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: алгоритмы сжатия/распаковки
« Ответ #15 : 22 Февраль 2019, 11:52:23 »
squashfs-tools-zstd-p-4.3-8_64-sf01.pfs

Жму папку 23мб
time mksquashfs 035-gtk2-1811-sf03.pfs  035-gtk2-1811-sf03.pfs .xz.pfs -b 512k -comp xz -Xbcj x86
real   0m6,954s

du 035-gtk2-1811-sf03.xz.pfs
4172   035-gtk2-1811-sf03.xz.pfs

time unsquashfs 035-gtk2-1811-sf03.xz.pfs
real   0m0,254s
--------------
time mksquashfs 035-gtk2-1811-sf03.pfs  035-gtk2-1811-sf03.pfs .xz.pfs -b 512k -comp zstd -Xcompression-level 22
real   0m7,876s

4564   035-gtk2-1811-sf03.pfs.zs.pfs

time unsquashfs 035-gtk2-1811-sf03.pfs.zs.pfs
real   0m0,067s

Т.е. при примерно одинаковом времени сжатия и размере pfs - zs в 3 раза быстрее распаковывается
Пакуем 1 раз. распаковка - постоянно
Получается надо переходить на zs....
« Последнее редактирование: 22 Февраль 2019, 11:54:07 от sfs »

Оффлайн RoDoN

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6282
  • Репутация: +141/-0
Re: алгоритмы сжатия/распаковки
« Ответ #16 : 22 Февраль 2019, 12:30:59 »
Получается надо переходить на zs....
Начиная с какой версии ядра это будет работать?
Lenovo G500 (i3-3110M, 8 Гб, Intel + Radeon HD 8570)
PRA 16.12 JWM, Runtu 22.04 x64 XFCE

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: алгоритмы сжатия/распаковки
« Ответ #17 : 22 Февраль 2019, 12:59:13 »
Тут все сильно зависит от железа. Сделать однозначный вывод в пользу какого-то алгоритма наверное не получится. У нас для тестов даже специальный скрипт есть - squashtest. Его, кстати, не сложно допилить до универсального, сейчас под магос заточен.
Так вот на разном железе лидируют разные алгоритмы, я думаю, что при всей "хорошести" zstd история повторится.
« Последнее редактирование: 22 Февраль 2019, 13:03:19 от betcher »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
  • Автор темы
Re: алгоритмы сжатия/распаковки
« Ответ #18 : 22 Февраль 2019, 13:06:12 »
https://github.com/facebook/zstd#the-case-for-small-data-compression
Чем меньше объем данных для сжатия, тем сложнее его сжать. Эта проблема является общей для всех алгоритмов сжатия, и причина в том, что алгоритмы сжатия учатся на прошлых данных тому, как сжимать будущие данные. Но в начале нового набора данных нет «прошлого», на которое можно было бы опираться.

Чтобы решить эту ситуацию, Zstd предлагает режим обучения...


Важно это или нет?

Важно это или нет?
Некоторые тесты отсюда https://github.com/facebook/zstd/releases/tag/v1.1.3
Цитата
live@prar-1811 /mnt/sda3/Soft/github_users_sample_set % zstd -b1 -r github
1# 9114 files       :   7484607 ->   2623874 (2.853),  72.1 MB/s , 211.5 MB/s
zstd -b1 -r github  6,47s user 0,14s system 95% cpu 6,955 total

live@prar-1811 /mnt/sda3/Soft/github_users_sample_set % zstd --train -r github
Trying 5 different sets of parameters                                         
k=1511                                                                         
d=8
f=20
steps=4
split=75
accel=1
Save dictionary of size 112640 into file dictionary

live@prar-1811 /mnt/sda3/Soft/github_users_sample_set % zstd -b1 -r github -D dictionary
1# 9114 files       :   7484607 ->    756421 (9.895), 239.9 MB/s , 628.4 MB/s
zstd -b1 -r github -D dictionary  8,04s user 0,12s system 99% cpu 8,192 total

Что это и о чем говорит, хз?
« Последнее редактирование: 23 Февраль 2019, 01:41:55 от krasnyh »

Оффлайн ilfat

  • Ветеран
  • *****
  • Сообщений: 438
  • Репутация: +11/-0
Re: алгоритмы сжатия/распаковки
« Ответ #19 : 22 Февраль 2019, 13:15:13 »
-comp zstd -Xcompression-level 22
А на дефолтной степени какой размер не смотрели? Скорее всего разницы не будет. И ещё бы разницу в упаковке и распаковке посмотреть между 15(дефолт) и 22.
при примерно одинаковом времени сжатия и размере
На отдельной папке у меня получилась разница с xz 11.5%, а на всём МагОС 19.6%.
Тут все сильно зависит от железа.
Да нет у нашего пользователя такого железа чтоб xz выигрывал. Если размер с разницей в 20% не критичен, то смело можно переходить.

Оффлайн ilfat

  • Ветеран
  • *****
  • Сообщений: 438
  • Репутация: +11/-0
Re: алгоритмы сжатия/распаковки
« Ответ #20 : 22 Февраль 2019, 13:23:07 »
крипт есть - squashtest. Его, кстати, не сложно допилить до универсального, сейчас под магос заточен.
Может на самом деле в pfs utils его?

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: алгоритмы сжатия/распаковки
« Ответ #21 : 22 Февраль 2019, 21:40:57 »
https://github.com/magos-linux/magos-linux/blob/master/make_MagOS/files/patches/rootfs/MagOS/usr/lib/magos/scripts/squashtest
Это сквоштест. Частично отвязал от магос, думаю можно проверить в PRA. Сам не смотрел еще.
Значит так. Это проверка не для самих алгоритмов, а для связки проц+носитель+ауфс+сквошфс+алгоритм.
То есть проверяем какой алгоритм с какими блоками и прочими параметрами лучше подойдет для конкретной машины и носителя с которого собираетесь грузить.
По этому запускать скрипт нужно так, чтоб текущая папка была на нужном носителе, и там должно быть достаточно места для модулей сделанных из указанных папок с каждым из указанных алгоритмов. Запускать под рутом.
Для магос заданы дефолтные папки, на которых идет проверка, вам надо будет задать свои. Примерно так.
squashtest lzo, gzip, xz, lz4 --dirs /opt /var
Алгоритмы разделяются запятой, папки пробелами. К алгоритму можно указать доп параметры например lz4 -Xhc -b 1M
Чем больше будет размер папок тем дольше будет думать и тем точнее результат. Но. Скрипт активно пишет в /tmp, чтоб минимизировать влияние чтения с диска по этому указанные папки должны туда войти :) Любые ваши действия за компом во время тестирования способны повлиять на результат, по этому выключаем браузеры, отходим подальше, накрываемся ветошью и не отсвечиваем :))

« Последнее редактирование: 22 Февраль 2019, 21:46:54 от betcher »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
  • Автор темы
Re: алгоритмы сжатия/распаковки
« Ответ #22 : 22 Февраль 2019, 22:06:54 »
Это сквоштест.
А с zstd он проверит? В скрипте нет упоминания.

Оффлайн ilfat

  • Ветеран
  • *****
  • Сообщений: 438
  • Репутация: +11/-0
Re: алгоритмы сжатия/распаковки
« Ответ #23 : 22 Февраль 2019, 22:08:58 »
Проверит, если поддерживает squashfs-tools.
Там ещё хелп есть, если что.

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
Re: алгоритмы сжатия/распаковки
« Ответ #24 : 22 Февраль 2019, 22:16:06 »
Примерно так.
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])
под рутом - тоже самое
« Последнее редактирование: 22 Февраль 2019, 22:21:13 от knn »
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн ilfat

  • Ветеран
  • *****
  • Сообщений: 438
  • Репутация: +11/-0
Re: алгоритмы сжатия/распаковки
« Ответ #25 : 22 Февраль 2019, 22:20:31 »
knn, а если просто создать его чтоб ошибки не было?

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
Re: алгоритмы сжатия/распаковки
« Ответ #26 : 22 Февраль 2019, 22:25:50 »
а если просто создать его чтоб ошибки не было?
создал файл(Не-каталог [не знаю как правильней]):
Код
live@pc:~$ sudo squashtest lzo, gzip, xz, lz4 --dirs /opt /var
write                                    /opt                      lzo            16M           5.25 sec
write                                    /opt                     gzip            14M           6.34 sec
write                                    /opt                       xz            12M           9.04 sec
write                                    /opt                      lz4            19M           0.58 sec

write                                    /var                      lzo           460K           0.85 sec
write                                    /var                     gzip           360K           0.73 sec
write                                    /var                       xz           300K           1.37 sec
write                                    /var                      lz4           596K           0.53 sec

==========================================================
read  all                           lzo           0.06 sec
read  all                          gzip           0.07 sec
read  all                            xz           0.07 sec
read  all                           lz4           0.06 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  -- lz4
Best write speed  -- lz4
Best compression  -- xz
==========================================================
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн ilfat

  • Ветеран
  • *****
  • Сообщений: 438
  • Репутация: +11/-0
Re: алгоритмы сжатия/распаковки
« Ответ #27 : 22 Февраль 2019, 22:26:09 »
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
==========================================================

Оффлайн ilfat

  • Ветеран
  • *****
  • Сообщений: 438
  • Репутация: +11/-0
Re: алгоритмы сжатия/распаковки
« Ответ #28 : 22 Февраль 2019, 22:29:13 »
Наверно еще size all в итоговый вывод добавить можно, чтоб наглядно видеть разницу в размерах. Можно даже в процентах относительно первого алгоритма.

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
  • Автор темы
Re: алгоритмы сжатия/распаковки
« Ответ #29 : 22 Февраль 2019, 22:29:16 »
Любые ваши действия за компом во время тестирования способны повлиять на результат, по этому выключаем браузеры, отходим подальше, накрываемся ветошью и не отсвечиваем :))
Забыл про это. )  У меня и музыка и браузер...