В связи с тем, что цены на оперативную память выходят из-под контроля, возможно, стоит напомнить пользователям Linux включить ZRAM, чтобы получить лучшую производительность без обновления памяти или сэкономить на следующем одноплатном компьютере, выбрав плату с подходящим объемом памяти.
Об этой теме уже было написано, когда ZRAM был включен на ODROID-XU4Q в 2018 году с использованием zram-config, и то же самое было сделано на ноутбуке с Ubuntu в то время. В последние дни Firefox стал часто завершаться сбоем из-за нехватки памяти в системе с 16 ГБ ОЗУ, а релиз Linux 7.0 напомнил о ZRAM, поскольку в нем были некоторые связанные изменения. Поэтому было решено проверить текущую конфигурацию подкачки на ноутбуке с Ubuntu 24.04:
jaufranc@CNX-LAPTOP-5:~$ zramctl
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lzo-rle 7.6G 6.6G 2.1G 2.1G [SWAP]
jaufranc@CNX-LAPTOP-5:~$ swapon
NAME TYPE SIZE USED PRIO
/swapfile file 8G 5.6G -2
/dev/zram0 partition 7.6G 7.3G 5
jaufranc@CNX-LAPTOP-5:~$ free -mh
total used free shared buff/cache available
Mem: 15Gi 9.6Gi 4.3Gi 2.4Gi 3.4Gi 5.7Gi
Swap: 15Gi 12Gi 2.7Gi
lzo не выглядит современным алгоритмом сжатия, и, кажется, ранее на других системах использовалось сжатие Zstandard . Однако утилита zram-config является более старым решением и теперь заменена на zram-tools. Поэтому было решено заменить её. Если ZRAM ещё не был включен с помощью zram-config, то этого делать не нужно, но в данном случае потребовалось отключить подкачку и удалить пакет:
sudo swapoff -a
sudo swapoff /dev/zram0 2>/dev/null || true
echo 1 | sudo tee /sys/block/zram0/reset 2>/dev/null || true
sudo modprobe -r zram
sudo apt purge --autoremove zram-config
После этого был установлен zram-tools:
sudo apt install zram-tools
и отредактирован файл /etc/default/zramswap следующим образом:
# Compression algorithm selection
ALGO=zstd
# Specifies the amount of RAM that should be used for zram
# based on a percentage the total amount of available memory
# This takes precedence and overrides SIZE below
PERCENT=75
...
# Specifies the priority for the swap devices, see swapon(2)
# for more details. Higher number = higher priority
# This should probably be higher than hdd/ssd swaps.
PRIORITY=100
Для перестраховки можно проверить, поддерживается ли zstd вашим ядром:
jaufranc@CNX-LAPTOP-5:~$ cat /sys/block/zram0/comp_algorithm
lzo-rle lzo lz4 lz4hc [zstd] deflate 842
Затем служба была перезапущена с новыми параметрами:
sudo systemctl start zramswap.service
Наконец, проверим, всё ли включено, как ожидалось:
jaufranc@CNX-LAPTOP-5:~$ cat /sys/block/zram0/comp_algorithm
lzo-rle lzo lz4 lz4hc [zstd] deflate 842
jaufranc@CNX-LAPTOP-5:~$ zramctl
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd 11.4G 7G 1.4G 1.5G [SWAP]
jaufranc@CNX-LAPTOP-5:~$ swapon --show
NAME TYPE SIZE USED PRIO
/dev/zram0 partition 11.4G 7.8G 100
jaufranc@CNX-LAPTOP-5:~$ free -mh
total used free shared buff/cache available
Mem: 15Gi 12Gi 561Mi 2.4Gi 3.8Gi 2.8Gi
Swap: 11Gi 7.8Gi 3.6Gi
jaufranc@CNX-LAPTOP-5:~$
Выглядит хорошо. Файл подкачки на NVMe SSD больше не используется, но система будет использоваться в таком режиме, и он будет повторно включен только в случае нехватки памяти.
Наконец, потребовалось убедиться, что ZRAM включен на Raspberry Pi 5 с 2 ГБ ОЗУ, и было забыто, что он действительно включен по умолчанию в Raspberry Pi OS:
pi@raspberrypi:~ $ zramctl
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd 2G 181.9M 22.7M 29.6M 4 [SWAP]
pi@raspberrypi:~ $ free -mh
total used free shared buff/cache available
Mem: 2.0Gi 1.2Gi 213Mi 38Mi 794Mi 808Mi
Swap: 2.0Gi 178Mi 1.8Gi
Следует отметить, что конфигурация для rpi-swap находится в другом месте: /etc/rpi/swap.conf, и следует другому формату:
# This file is part of rpi-swap.
#
# Defaults are provided as commented-out options. Local configuration
# should be created by either modifying this file, or by creating "drop-ins" in
# the swap.conf.d/ subdirectory. The latter is generally recommended.
#
# See swap.conf(5) for details.
[Main]
#Mechanism=auto
[File]
#Path=/var/swap
#RamMultiplier=1
#MaxSizeMiB=2048
#MaxDiskPercent=50
#FixedSizeMiB=
[Zram]
#RamMultiplier=1
#MaxSizeMiB=2048
#FixedSizeMiB=
# Writeback settings (for zram+file mechanism):
#WritebackTrigger=auto
#WritebackInitialDelay=180min
#WritebackPeriodicInterval=24h
Более подробную информацию об этой конкретной реализации можно найти на GitHub . При использовании другой операционной системы на любом одноплатном компьютере рекомендуется проверить, включен ли ZRAM (или zswap).
Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.



