LINUX.ORG.RU

zram — lz4, lzo или zstd?

 , , ,


1

1

Тем, кто использует zram. Какой алгоритм компрессии используете? И какой у вас выхлоп zramctl?

$ zramctl 
NAME       ALGORITHM DISKSIZE   DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram1 lzo-rle     590,7M 288,6M 51,7M 54,4M       2 [SWAP]
/dev/zram0 lzo-rle     590,7M 287,8M 51,7M 54,3M       2 [SWAP]
★★★★★

Использую zstd, так как где то нагуглил тесты и zstd оказалась лучшей в многопотоке для zram.

NAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd         31.4G   4K   66B    4K       8 [SWAP]
Jameson ★★★★★
()
Ответ на: комментарий от Jameson

Пока там пусто – не так интересно, сам понимаешь. Ну и с таким размером памяти не так просто начать заполнять своп, конечно.

Кстати, рекомендуют делать число свопов по числу ядер (кроме потоков внутри каждого) — ядро с ними работает как c raid0, типа того.

greenman ★★★★★
() автор топика
Ответ на: комментарий от greenman

Уже нет, смотри streams. Раньше zram был однопоточный, и действительно было нужно заводить по одному свапу на ядро. Сейчас не нужно, его научили и в многопоток, и в вытеснение сжатых страниц в физический свап при переполнении виртуального.

Jameson ★★★★★
()
Ответ на: комментарий от greenman

Тестировал, ощутимой разницы в скорости нет, мудрить тут уже нет никакого смысла. Это было актуально при работе с несколькими медленными устройствами на разных шинах. А у нас всё в памяти происходит и лимитирует компрессия, а не пропускная способность устройства или его интерфейса.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)
Ответ на: комментарий от Jameson

Видимо, так и есть. Все эти «разные» zram устройства всё равно работают через тот же самый CPU. Встречал упоминания, что такое может иметь смысл в случае NUMA архитектуры.

https://askubuntu.com/questions/1171950/why-is-ubuntu-configuring-multiple-zram-devices-for-swap

greenman ★★★★★
() автор топика
Последнее исправление: greenman (всего исправлений: 1)
Ответ на: комментарий от greenman

У меня NUMA кстати. Две головы по четыре «честных» ядра в каждой, без гипертреда, на каждой своя память. Ядро при выборе «правильного» шедулера и включённой поддержке NUMA само прекрасно разбирается как память распределить и потоки раскидать. Сначала тоже мудрил с numactl и ручным раскидыванием памяти и потоков по нодам, пока не убедился что в этом нет никакого смысла. Правда у меня самосборное ядро и выбран подходящий под мою архитектуру и процы шедулер, учитывающий особенности NUMA.

Jameson ★★★★★
()
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lz4          15.7G  5.5G  2.7G  2.8G       4 [SWAP]
aidaho ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.