Большая тайна, большое и светлое волшебство происходит, когда добровольцы объединяются для творения чего-то всем нужного, и, хотя бы немножечко, вечного.

Почему-то от этого чаще солнце выглядывает из-за облаков и очень хочется жить.

Правила и обычаи

Алгоритм сжатия для модулей магос

Алгоритм сжатия для модулей магос

В процессе работы над pfs-utils поднялась тема по выбору оптимального алгоритма сжатия. Сейчас и в у нас и в сборках проекта pappyrus  используется xz. Но в pfs-utils по умолчанию используются оптимизации, которые позволяют добиться большего на пару процентов сжатия, при этом скорость сжатия уменьшается в 2,5- 4 раза. Считаю не правильный выбор, но не суть. Это натолкнуло на проведения тестов и других алгоритмов. И результаты весьма интересны и говорят о том,что магос можно немного ускорить.
Итак. Тест выглядит просто. Пережимаем модули магос нужным алгоритмом, загружаемся в чистом режиме и замеряем скорость копирования из модулей в /tmp/
time rsync -a /usr/bin /tmp
Модули пережимаются так:
mkdir module
xzm2dir module.xzm module
mksqushfs module module.lz4.xzm -comp lz4
Скорости сравниваем на том же железе, с тем же набором модулей  с разным сжатием. В теории разница по времени чтения между алгоритмами должна сильно зависеть от железа. Присоединяйтесь.
Возможные алгоритмы можно посмотреть в хелпе mksqushfs
Итог. Результаты тестов попрошу ilfat привести позже. Короткий вывод.
lz4 - скорость запаковки в десятки раз быстрее xz. Скорость чтения в 2-3 раза выше xz. И вдвое выше noxzm. При этом размер модулей растет относительно xz на 70%. Предлагаю использовать его для всех вариантов save2module. Предусмотреть вариант перепаковки всего магос, а также вынести в магос.ини или другой конфиг тип компрессии используемой по дефолту для сжатия утилитами магос.

MagOS-Чат http://chat.magos-linux.ru
MagOS-Загрузки http://files.magos-linux.ru/upload
MagOS-Торренты http://tracker.magos-linux.ru

betcher
Александр
магистр-волшебник
ranks
useravatar
Онлайн
2549 Сообщений
Мужчина 
Администратор отключил публичную отправку сообщений

Re: Алгоритм сжатия для модулей магос

betcher написал(а):

xzm2dir module.xzm module

А почему не unsquashfs -d module module.xzm ?

DdShurick
ученик волшебника
ranks
useravatar
Offline
71 Сообщений
Администратор отключил публичную отправку сообщений

Re: Алгоритм сжатия для модулей магос

Ну да, так даже лучше. Привычка smile

MagOS-Чат http://chat.magos-linux.ru
MagOS-Загрузки http://files.magos-linux.ru/upload
MagOS-Торренты http://tracker.magos-linux.ru

betcher
Александр
магистр-волшебник
ranks
useravatar
Онлайн
2549 Сообщений
Мужчина 
Администратор отключил публичную отправку сообщений

Re: Алгоритм сжатия для модулей магос

betcher написал(а):

магос можно немного ускорить.

Разобрал сохранёнку MagOS, наводит на некоторые размышления

Код:

# du -h mac|grep M

29.0M    mac/boot
6.5M    mac/etc/udev
6.6M    mac/etc
116.0K    mac/var/lib/NetworkManager
152.2M    mac/var/log/journal/de8f1f4bdda767c5df83000f56d13069
152.2M    mac/var/log/journal
152.3M    mac/var/log
152.7M    mac/var
188.4M    mac

Получается что 80% это журнал systemd. А он нужен? И зачем в сохранёнке /boot?

DdShurick
ученик волшебника
ranks
useravatar
Offline
71 Сообщений
Администратор отключил публичную отправку сообщений

Re: Алгоритм сжатия для модулей магос

Результаты своих тестов опишу позже, а пока выложу пережатую в lz4 базу МагОС от 28 января. Для чистоты эксперимента сжатие сделано с размером блока 512K, то есть с таким же как в утилитах МагОС по умолчанию, хотя это наверно больше на скорость сжатия влияет и на размер. MagOS-base-lz4.tar

ilfat
Ильфат
начинающий волшебник
ranks
useravatar
Онлайн
218 Сообщений
Мужчина 
Администратор отключил публичную отправку сообщений

Re: Алгоритм сжатия для модулей магос

DdShurick написал(а):

Получается что 80% это журнал systemd. А он нужен? И зачем в сохранёнке /boot?

Сохраненка это в xzm? Если так можно фильтровать, создаете файл /savelist
И пишете туда все, что вам нужно удалить
!/var/log
!/boot

И так далее.
Если без "!", то наоборот добавится к сохранениям.
Наверное нужно сделать дефолтный savelist, не первый раз уже об этом говорим, но все откладывается.

MagOS-Чат http://chat.magos-linux.ru
MagOS-Загрузки http://files.magos-linux.ru/upload
MagOS-Торренты http://tracker.magos-linux.ru

betcher
Александр
магистр-волшебник
ranks
useravatar
Онлайн
2549 Сообщений
Мужчина 
Администратор отключил публичную отправку сообщений

Re: Алгоритм сжатия для модулей магос

Вот мои результаты:
Железо AMD Athlon64x2  6000+ (3ГГц, 2 ядра), жесткий диск Samsung 500GB SATA2, ОЗУ 4ГБ DDR2.
Результат для XZ:

Код:

sudo time -p rsync -a /usr/bin/ /tmp/

real 12.46
user 1.64
sys 11.32

Результат для LZ4:

Код:

sudo time -p rsync -a /usr/bin /tmp/

real 5.59
user 2.03
sys 3.52

Рузультат для модулей без сжатия:

Код:

sudo time -p rsync -a /usr/bin/ /tmp/

real 6.70
user 2.21
sys 3.33

Размеры такие:
xz модули 1346 мб
lz4 модули 2304 мб, +71% относительно xz
без сжатия 4656 мб, +238.5% относительно xz
На моем железе выбор очевиден я думаю smile
Также сделал замер на том же железе, только на МагОС с флешки Transcend 16GB, сама флешка usb 3.0, но тестировалась через usb 2.0. Тест тот же самый, для xz общее время выполнения составило 14,08 сек, для lz4 7,18 сек, для несжатых модулей 11,48 сек. То есть lz4 и здесь быстрее.

ilfat
Ильфат
начинающий волшебник
ranks
useravatar
Онлайн
218 Сообщений
Мужчина 
Администратор отключил публичную отправку сообщений

Re: Алгоритм сжатия для модулей магос

По результатом тестов на разных по производительности машинах можно сделать некоторые выводы.
Скорость чтения из модулей зависит от алгоритма сжатия, а также от соотношения производительности машины к скорости чтения с носителя. Наблюдалась разница в скорости чтения при смене алгоритма более чем в 2 раза. Тестировали только xz и lz4.
Нет идеального варианта абсолютно для всех машин.  Но можно выделить несколько простых правил. Для более точного определения удачного для вашей машины  алгоритма можно прогнать тесты которые я приведу в конце.
Итак. Разделим условно машины на медленные (атом - i3), средние (i3-i5), быстрые (i7). Аналогично носители медленные (usb2.0, CD), быстрые (встроенный винт, CCD)
1. Быстрый комп, любой носитель - однозначно xz
2.  Медленный комп, любой ноститель - однозначно lz4
Дальше сложнее smile
3. Средний комп, медленный носитель -  почти поровну
4. Средний комп, быстрый носитель - lz4
   Можно наверное сочинить скрипт который более точно подскажет алгоритм. Тем более их слегка больше чем два smile
   В тестах на запись, на любой машине с любым носителем однозначно впереди lz4, несмотря на то, что записать в итоге нужно на ~70% больше. Например разница в скорости в тесте на нетбуке при записи на встроенный винт  5сек для lz4 против 3мин5сек для xz. В других тестах меньше, но тоже весьма ощутима.

MagOS-Чат http://chat.magos-linux.ru
MagOS-Загрузки http://files.magos-linux.ru/upload
MagOS-Торренты http://tracker.magos-linux.ru

betcher
Александр
магистр-волшебник
ranks
useravatar
Онлайн
2549 Сообщений
Мужчина 
Администратор отключил публичную отправку сообщений

Re: Алгоритм сжатия для модулей магос

Методики по которым тестировали.
1. Грузим магос со стандартным набором модулей перепакованными с нужным алгоритмом, замеряем скорость копирования всех файлов из /usr/bin в /tmp
time rsync -a /usr/bin /tmp. Перепаковываем, перегружаем повторяем.
2. Создаем две папочки с одинаковым набором модулей но с разным алгоритмом сжатия.
time for a in /*.xzm ;do echo $a ;unsquashfs -d /tmp/$a $a ; rm -fr /tmp/$a  ;done
и аналогично для lz4
Вариант первый ближе к боевым условиям, то есть чтение выборочных файлов из разных модулей под aufs, вариант второй большая по объему выборка. Результаты более менее сходные.
Как тестировать запись. Тут дело в том, что отличается не только скорость кодирования, но и размер записываемых данных. По этому делаем так:
time ( mksquashfs /memory/bundles/46-2-libreoffice.xzm/ /путь/module.lz4 -comp lz4 && sync )
и аналогично для xz

З.Ы. Надеюсь ничего не попутал smile

MagOS-Чат http://chat.magos-linux.ru
MagOS-Загрузки http://files.magos-linux.ru/upload
MagOS-Торренты http://tracker.magos-linux.ru

betcher
Александр
магистр-волшебник
ranks
useravatar
Онлайн
2549 Сообщений
Мужчина 
Администратор отключил публичную отправку сообщений

Re: Алгоритм сжатия для модулей магос

Вот
Простенький тестер для сжатия squashfs. Нужно копировать скрипт на тот носитель с которого запускаете (или планируете запускать) магос и запускать оттуда.
Первый параметр это выборка чем больше тем точнее результат, но и дольше естественно.  Если не указать то будет 1. Выборка это просто количество папок из /memory/bundles которые используются для тестов. Остальные параметры это алгоритмы сжатия.
Примеры:
./squashtest lz4 - только lz4, проверить на одной папке
./squashtest 4 lz4  xz lzo gzip - 4 папки, три алгоритма
./squashtest 1 lz4_-Xhc lz4 xz xz_-Xbcj_x86 lzo gzip -можно указать доп параметры сжатия, в этом случае пробелы заменяются на нижнее подчеркивание.
Скорость сжатия и записи покажет для каждой папки и алгоритма, по чтению результат общий. Он в общем и интересен. Шлите сюда что за машина, носитель и результат тестов.
З.Ы. Пока под uird только, постепенно доделаю.

MagOS-Чат http://chat.magos-linux.ru
MagOS-Загрузки http://files.magos-linux.ru/upload
MagOS-Торренты http://tracker.magos-linux.ru

betcher
Александр
магистр-волшебник
ranks
useravatar
Онлайн
2549 Сообщений
Мужчина 
Администратор отключил публичную отправку сообщений

Авторизация