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

Автор Тема: Initrd UIRD  (Прочитано 111919 раз)

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

Оффлайн stea.61

  • Пользователь
  • **
  • Сообщений: 45
  • Репутация: +6/-0
Re: Initrd UIRD
« Ответ #615 : 13 Март 2019, 20:34:24 »
Это опасненько.
Приветствую!!!
Не опасно. Тестов сделано немало  и на разном контенте.

А сегодня я перешел к, думаю, еще более оптимальному варианту.
   echo $mem_zram >/sys/block/zram1/mem_limit
   echo $(($mem_zram * 2)) >/sys/block/zram1/disksize

Поясню.
Если уж мы определяем в конфиге часть RAM под ramdisk, то и доступен для использования в этой функции должен быть именно такой объем.
И это задается именно параметром mem_limit, а не disksize.
А чтобы параметр disksize не ограничил объем используемой для оверлея RAM, его логично делать примерно вдвое большим (из опыта тестов).
А для безопасности - просто устанавливать mem_limit в 50%.
При этом реальный объем слоя для записи будет равен примерно 100% RAM. 
« Последнее редактирование: 13 Март 2019, 20:51:18 от stea.61 »

Оффлайн Ильфат

  • Ветеран
  • *****
  • Сообщений: 430
  • Репутация: +11/-0
Re: Initrd UIRD
« Ответ #616 : 13 Март 2019, 20:36:23 »
Исходников не видел (не искал) - просто взял готовые бинарники из состава пакета virtualbox, который и так есть практически в каждом, уважающем себя, дистрибутиве. )))
У нас, как в уважающем себя дистрибутиве, есть Виртуалбокс, но вот vdfuse я не нашел ))

Оффлайн stea.61

  • Пользователь
  • **
  • Сообщений: 45
  • Репутация: +6/-0
Re: Initrd UIRD
« Ответ #617 : 13 Март 2019, 20:41:54 »
но вот vdfuse я не нашел
Его и функцию монтирования почему-то исключили, начиная с версии 4.2. Причин не знаю.

Оффлайн stea.61

  • Пользователь
  • **
  • Сообщений: 45
  • Репутация: +6/-0
Re: Initrd UIRD
« Ответ #618 : 13 Март 2019, 20:47:28 »
Тормоза с qemu-nbd подтверждаю, но только с динамическими файлами.
На мой-то вгляд именно динамические и более интересны в реальном использовании.
C Windows опыт использования контейнерных систем у меня в общем-то немалый, в том числе и не в "личном хозяйстве". Очень удобно во многих аспектах.)
« Последнее редактирование: 13 Март 2019, 21:10:26 от stea.61 »

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 1750
  • Репутация: +21/-0
    • Беседка магос
Re: Initrd UIRD
« Ответ #619 : 13 Март 2019, 20:51:51 »
Если уж мы определяем в конфиге часть RAM под ramdisk, то и доступен для использования для этой цели должен быть именно такой объем.
И это задается именно параметром mem_limit, а не disksize.
А чтобы параметр disksize не ограничил объем используемой для оверлея RAM, его логично делать примерно вдвое большем (из опыта тестов).
А для безопасности - просто устанавливать его в 50%.
При этом реальный объем слоя для записи будет равен примерно 100% RAM. 
Звучит логично. На свежую голову еще прикину и навреное так и сделаю.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн stea.61

  • Пользователь
  • **
  • Сообщений: 45
  • Репутация: +6/-0
Re: Initrd UIRD
« Ответ #620 : 13 Март 2019, 21:05:24 »
Ильфат, здесь, в теме, я вчера выложил модифицированную версию тестового комплекта - изменил компановку файлов в UIRD по сравнению с начальной версией.
Чтобы не перегружать вспомогательными файлами сам UIRD, все они вынесены во внешний модуль /images/00-vdmount.xzm, который НЕ ГРУЗИТСЯ в составе UIRD, а только монтируется на стадии загрузки, если есть необходимость смонтировать вирт-диск в качествет источника.
« Последнее редактирование: 13 Март 2019, 21:09:15 от stea.61 »

Оффлайн Ильфат

  • Ветеран
  • *****
  • Сообщений: 430
  • Репутация: +11/-0
Re: Initrd UIRD
« Ответ #621 : 14 Март 2019, 00:59:20 »
А для безопасности - просто устанавливать mem_limit в 50%.
При этом реальный объем слоя для записи будет равен примерно 100% RAM.
Мы уже думали сделать примерно так же, только лимит сделать на 70% при тех же 100% дисксайз. 50 мне кажется маловато для лимита. Частенько будет упираться и будет ошибка ввода вывода. Тестировал на зрам свопе.
Ильфат, здесь, в теме, я вчера выложил модифицированную версию
Ок.

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 1750
  • Репутация: +21/-0
    • Беседка магос
Re: Initrd UIRD
« Ответ #622 : 14 Март 2019, 03:21:39 »
Не, всеже надо оставить как есть по дефолту. То что рамсайз это именно мемлимит это верно, а вот делать дисксайз больше мемлимита гипотетически опасно. Если вы будете забивать ченджез несжимаемыми данными в момент когда размер данных превысит лимит вы получите ошибку ввода/вывода при записи. А для системы это корень. Вероятность ошибки невелика, но тем не менее.  Надо подумать о параметрах для uird.zram видимо.
По ошибке с += посмотрю позже. Не думаю, что это там где вы указали, в этом кусочке только basecfg разбирается, все остальные параметры получает функция из livekitlib видимо там.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн stea.61

  • Пользователь
  • **
  • Сообщений: 45
  • Репутация: +6/-0
Re: Initrd UIRD
« Ответ #623 : 14 Март 2019, 20:20:50 »
Привет.

Не, всеже надо оставить как есть по дефолту.
Ну, по сути получается, что при равенстве значений с disksize mem_limit и смысла-то не имеет.

делать дисксайз больше мемлимита гипотетически опасно. Если вы будете забивать ченджез несжимаемыми данными в момент когда размер данных превысит лимит вы получите ошибку ввода/вывода при записи
Согласен. Риск есть.
Система не останавливает операцию записи на диск по факту достижения лимита - rsync и сp, например, продолжают выполнять копирование, а cp даже никак не сообщает об ошибке операции.

Отмечу попутно, что мой "самопальный" вариант "zram.zstd" не имеет указанного недостатка - абсолютно адекватно и корректно ведет себя, ошибка ввода-вывода не возникает, так как переполнить его (при правильно выбранных параметрах) невозможно - система штатно контролирует наличие доступного для записи места и штатно останавливает операцию при невозможности выполнения.
Собственно, я и юзаю его, а не штатный zram.
« Последнее редактирование: 14 Март 2019, 20:23:29 от stea.61 »

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 1750
  • Репутация: +21/-0
    • Беседка магос
Re: Initrd UIRD
« Ответ #624 : 14 Март 2019, 20:57:19 »
Ну, по сути получается, что при равенстве значений с disksize mem_limit и смысла-то не имеет.
Имеет смысл. В сравнении с tmpfs имею ввиду.  В критической ситуации с несжимаемыми данными будет действительно приблизительно одинаково, зато в обычных условиях zram сэкономит озу.

Отмечу попутно, что мой "самопальный" вариант "zram.zstd" не имеет указанного недостатка
Вот тут мне не понятно чем zstd так принципиально отличается. Проблема в том, что ось видит дисксайз, а записать может только то что войдет в мемлимит.  При достижении мемлимита что произойдет?
« Последнее редактирование: 14 Март 2019, 21:09:12 от betcher »
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн stea.61

  • Пользователь
  • **
  • Сообщений: 45
  • Репутация: +6/-0
Re: Initrd UIRD
« Ответ #625 : 14 Март 2019, 21:50:01 »
Вот тут мне не понятно
Так я же говорю - "самопальный" вариант. )))
Это не zram, а его фунциональный аналог с использованием BTRFS и zstd.

if [ $(cmdline_parameter $UIRD_ZSTD) ]; then
   mem_zstd=$(expr $(grep MemTotal /proc/meminfo | awk ' { print $2 } ') \* ${RAMSIZE%%%} / 100)
   dd if=/dev/zero of="$MEMORY/ram.zstd" bs=1 count=1 seek=${mem_zstd}K >/dev/null 2>&1
   mkfs.btrfs -f "$MEMORY/ram.zstd" >/dev/null 2>&1
   losetup /dev/loop0 "$MEMORY/ram.zstd"
   mount -t btrfs -o discard,compress=zstd /dev/loop0 $CHANGES
fi

Разница в том, что в этом варианте ось видит и штатно контролирует диск и его занятое/cвободное пространство с уже сжатым контентом.
Проверено.
« Последнее редактирование: 14 Март 2019, 23:11:21 от stea.61 »

Оффлайн stea.61

  • Пользователь
  • **
  • Сообщений: 45
  • Репутация: +6/-0
Re: Initrd UIRD
« Ответ #626 : 14 Март 2019, 21:58:00 »
Имеет смысл. В сравнении с tmpfs имею ввиду.
А я имел в виду, что в таком случае не имеет смыла назначение параметра mem_limit - наполнение в любом случае не превысит disksize. )
« Последнее редактирование: 14 Март 2019, 22:49:12 от stea.61 »

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 1750
  • Репутация: +21/-0
    • Беседка магос
Re: Initrd UIRD
« Ответ #627 : 15 Март 2019, 09:03:38 »
Теперь понял. Это интересно. Надо думать как прикрутить аккуратно.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 1750
  • Репутация: +21/-0
    • Беседка магос
Re: Initrd UIRD
« Ответ #628 : 15 Март 2019, 11:03:10 »
А -o discard работает?
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн Ильфат

  • Ветеран
  • *****
  • Сообщений: 430
  • Репутация: +11/-0
Re: Initrd UIRD
« Ответ #629 : 15 Март 2019, 14:51:34 »
Разница в том, что в этом варианте ось видит и штатно контролирует диск и его занятое/cвободное пространство с уже сжатым контентом.
Да интересная штука. Получается как в zswap, задается фиксированный размер устройства в ОЗУ, а сколько туда войдет уже зависит от сжатия.
Надо оптимизировать создание файловой системы, так как, если не ошибаюсь, бтрфс по умолчанию создает ФС с дублированием метаданных, в ОЗУ от этого никакого смысла, надо отключать. Возмжно еще что-то можно оптимизировать.