Lx4U-book/docs/additional/zram.md
2021-07-13 17:15:08 +03:00

63 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Настройка zram
Если оперативной памяти вашего компьютера недостаточно (3 Гб и меньше), то наиболее быстрым способом решения проблемы является использование подкачки, так как компиляция некоторых пакетов требует мощного ПК, в том числе, большого объёма ОЗУ. Для этих целей можно использовать файл или раздел подкачки, но можно и zram.
ействия производятся на хост-системе_
Для начала нужно загрузить модуль. В системе его может не оказаться, поэтому можно его скомпилировать. Такие дистрибутивы как Ubuntu и прочие предоставляют пакет `zram-config`, в Fedora и Calculate Linux zram активирован по умолчанию.
Выполните:
```bash
modprobe zram num_devices=4
```
В `num_devices` задаётся количество сжатых блочных устройств, которое будет создано.
Для наиболее оптимального использования CPU стоит учесть: сжатие каждого устройства `zram` однопоточное. Потому создавайте их по количеству ядер.
При настройке модуля задается фиксированный размер НЕ сжатых данных в байтах.
```
SIZE=1536
echo $(($SIZE*1024*1024)) > /sys/block/zram0/disksize
echo $(($SIZE*1024*1024)) > /sys/block/zram1/disksize
echo $(($SIZE*1024*1024)) > /sys/block/zram2/disksize
echo $(($SIZE*1024*1024)) > /sys/block/zram3/disksize
```
В итоге будет создано устройство `/dev/zram0` заданного размера - замените значение `1536` переменной `$SIZE` на необходимое вам. Как было описано в предыдущей инструкции о выборе размера подкачки, в среднем, при компиляции ПО используется около 3-4 Гб ОЗУ. Из этого и рассчитывайте размер сжатого блочного устройства `zram`. В большинстве популярных дистрибутивов Linux уже настроен `zram`. Но, как правило, его объём равен половине объёма ОЗУ, что на слабых ПК может быть недостаточным.
```
Disk /dev/zram0: 1610 MB, 1610612736 bytes, 393216 sectors
Units = sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
```
Данные, записанные на него, будут прозрачно сжаты в памяти. Что делать с ним далее — уже ваш выбор, я на этих устройствах создаю разделы подкачки.
```
mkswap /dev/zram0
mkswap /dev/zram1
mkswap /dev/zram2
mkswap /dev/zram3
swapon /dev/zram0 -p 10
swapon /dev/zram1 -p 10
swapon /dev/zram2 -p 10
swapon /dev/zram3 -p 10
```
Для того чтобы проверить результат, выполните:
```
swapon -s
```
Далее уже ядро рассчитывает само, какие данные туда перемещать в зависимости от того, как часто вы к ним обращаетесь и как много памяти свободно.
В любом случае, для регулирования отправления данных в swap, настройте `vm.swappiness`, который предоставляет очень быструю и простую конфигурацию. О настройке читайте [здесь](additional/swap).
Так как с помощью zram подкачка находится в ОЗУ, т.е. данные в нём просто сжимаются, то такая подкачка (swap) даже быстрее обычного файла или раздела на жёстком диске.
[Источник](https://m.habr.com/ru/post/172137/).