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

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

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 31536
  • Репутация: +208/-0
    • PuppyRus-A
Re: алгоритмы сжатия/распаковки
« Ответ #90 : 12 Сентябрь 2021, 09:20:08 »
ZSTD v1.4.10 из pf-kernel.
Эта версия в pf ядре начиная с версии 5.11-pf6, т.е. у нас давно такая
В очередной раз убеждаюсь : не разбираешься в свежих фичах ядра - компили свежий pf - там все есть

Для дистров надо просто обновить . Ок - потихоньку обновлю

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 31536
  • Репутация: +208/-0
    • PuppyRus-A
Re: алгоритмы сжатия/распаковки
« Ответ #91 : 16 Октябрь 2021, 08:22:48 »
перепаковываю в lzo  ( если не забываю ), разница ощутима без замеров, но не так чтоб прям машину подменили
Подобное замечал только на твбоксах (4 arm ядра по 1,8ггц). Там перепаковал в zstd. Тоже на ощущениях. Получается- связано с частотой проца
На x86_64 CPU~Dual core Intel Celeron G540 (-MCP-) speed/max~2442/2500 MHz проблемы не ощущаю
Тестов для аргументации не придумал. Хотя можно попробовать замерять загрузку системы или первый запуск тяжелой проги (при втором и более уже прокэшируется)
Никто так не тестировал?

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 2857
  • Репутация: +33/-0
    • MagOS linux
Re: Алгоритмы сжатия/распаковки
« Ответ #92 : 16 Октябрь 2021, 08:37:16 »
В магос есть скрипт для тестов алгоритма сжатия. Сравнивает скорость чтения файлов. Попробуйте себе модифицировать.
https://github.com/magos-linux/magos-linux/blob/master/make_MagOS/files/patches/rootfs/MagOS/usr/lib/magos/scripts/squashtest
« Последнее редактирование: 16 Октябрь 2021, 08:42:22 от betcher »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 31536
  • Репутация: +208/-0
    • PuppyRus-A
Re: Алгоритмы сжатия/распаковки
« Ответ #93 : 16 Октябрь 2021, 09:33:50 »
скрипт для тестов алгоритма сжатия
Думаю - это не совсем то. Какой алгоритм быстрее и так понятно. Но при реальной работе происходит кэширование и загрузка в память. Поэтому алгоритм сжатия реально повлияет только на скорость первой загрузки проги

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 2857
  • Репутация: +33/-0
    • MagOS linux
Re: Алгоритмы сжатия/распаковки
« Ответ #94 : 16 Октябрь 2021, 14:08:30 »
В том и дело что не понятно. Потому, что зависеть будет от скорости чтения с носителя и скорости распаковки, то есть в итоге алгоритм в идеале подбирается под железо.
Влияет естественно только на первый запуск, пока не прокэшировалось, а значит и на скорость запуска ОС тоже.

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 4189
  • Репутация: +121/-1
  • Автор темы
Re: Алгоритмы сжатия/распаковки
« Ответ #95 : 16 Октябрь 2021, 14:43:58 »
Влияет естественно только на первый запуск, пока не прокэшировалось
Когда-то давно, обсуждалось сравнение больших монолитов MagOS и маленьких модулей PRA (не могу найти это обсуждение). И в ответ, от разрабов MagOS, была высказана мысль, что размер ничего не решает, т.к. в этом самом огромном монолите распаковываются/читаются на лету только нужные данные.

И значит, в моем понимании, скорость чтения (определенная алгоритмом сжатия/распаковки) влияет не только на первый запуск, ведь обращение будет к разным данным в разный период времени, т.е. постоянное частое обращение к монолиту, а значит и постоянная частичная распаковка на лету и чтение. И значит быстрый алгоритм скажется не только в случае описанном в цитате сверху.


Надеюсь я смог правильно донести, то что читал на страницах здешних обсуждений и свое понимание.

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 4189
  • Репутация: +121/-1
  • Автор темы
Re: Алгоритмы сжатия/распаковки
« Ответ #96 : 16 Октябрь 2021, 20:08:51 »
В дополнение к посту, ссылка на Бенчмарк, https://forum.puppyrus.org/index.php?topic=23501.msg179719#msg179719

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 31536
  • Репутация: +208/-0
    • PuppyRus-A
Re: Алгоритмы сжатия/распаковки
« Ответ #97 : 17 Октябрь 2021, 08:40:32 »
Влияет естественно только на первый запуск, пока не прокэшировалось, а значит и на скорость запуска ОС тоже.
Да. Т.к. запуск ОС = певвый запуск некоторого кол-ва прог
размер ничего не решает
Если не использовать copy2ram, который что-то даст только на совсем мертвых носителях.
Ну и кроме того в раздутом , универсальном софте  куча дополнительных зависимостей, которые могут запускать демонов и загружать в память  не нужные юзеру либы раздувается ресурсоемкость. В том числе и скорость чтения, т.к. прочитать надо больше. Поэтому оптимизация софта перекомпиляцией - один из главных методов получения "маленькой и быстрой" ОС.

скорость чтения (определенная алгоритмом сжатия/распаковки) влияет не только на первый запуск, ведь обращение будет к разным данным в разный период времени, т.е. постоянное частое обращение к монолиту
Когда в модуле одна прога - при старте она вместе со всеми нужными ей либами загружается в память и далее , как правило работает со своим профилем и конфигами, т.е. из своего модуля больше ничего не читает. Кстати - профиль (например браузера) будет быстрее работать в памяти. Т.е. сохраненка на медленном носителе - зло. В армбиан даже специально закостылили скрипт переноса профиля браузера в tmpfs и обратно (при выключении)
Поэтому в память есть смысл загружать только базу , в которой куча либ, используемых прочим софтом, который многократно загружается - выгружается
Я так понимаю работу фругала
« Последнее редактирование: 17 Октябрь 2021, 08:42:30 от sfs »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 4189
  • Репутация: +121/-1
  • Автор темы
Re: Алгоритмы сжатия/распаковки
« Ответ #98 : 18 Октябрь 2021, 23:50:13 »
Жму папку 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....
Взял модуль 01-drivers.xzm (317M) из MagOS, как самый большой из возможных во всех сборках. :)
Монтировал и сжимал (mksquashfs) в /tmp с алгоритмами xz (-b 512k -Xbcj x86), zstd (-b 512K -X 22; -b 1M -X 22), а так же дефолтным mkdwarfs.

Понятно, что xz дал те же 317M, zstd - около 350M (-b 512k) и 334M (-b 1M). Mkdwarfs - 266M.


Теперь распаковка с unsquashfs и dwarfsextract для dwarfs.
Для xz - 10 c
zstd (-b 1M) - 7 c
zstd (-b 512k) - 1,722 c
dwarfs - 1,965 c


Резюме. Лучшие значения у squashfs с zstd (-b 512k), но размер 350M против 317M у xz. Dwarfs же, при размере 266M, распаковывает за 1,965 c, но процесс сжатия растянут во времени в силу длительного процесса сканирования.


upd.
длительного процесса сканирования
Нормально, если обеспечить достойную скорость чтения:
1,193,331,977  99%  538.59MB/s
« Последнее редактирование: Вчера в 04:30:56 от krasnyh »