Напоминание: включите ZRAM в своей системе Linux для оптимизации использования оперативной памяти (и потенциальной экономии средств)

В связи с тем, что цены на оперативную память выходят из-под контроля, возможно, стоит напомнить пользователям Linux включить ZRAM, чтобы получить лучшую производительность без обновления памяти или сэкономить на следующем одноплатном компьютере, выбрав плату с подходящим объемом памяти.

ZRAM zstd compression ram sticks

Об этой теме уже было написано, когда 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 больше не используется, но система будет использоваться в таком режиме, и он будет повторно включен только в случае нехватки памяти.

Ubuntu zram laptop

Наконец, потребовалось убедиться, что 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

Raspberry Pi ZRAM

Следует отметить, что конфигурация для 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.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments