Производителност на Raspberry Pi: Добавяне на ZRAM и промяна на параметрите на ядрото

Преди няколко седмици публикувах Преглед на Pinebook Pro. Тъй като Raspberry Pi 4 също е базиран на ARM, някои от оптимизациите, споменати в предишната статия, са доста подходящи за него. Бих искал да споделя тези трикове и да видя дали ще усетите същите подобрения в производителността.

След като инсталирате Raspberry Pi във вашия домашна сървърна стая Забелязах, че в моменти на липса на RAM, много не реагира и дори затваря. За да разреша този проблем, добавих ZRAM и направих няколко промени в параметрите на ядрото.

Активиране на ZRAM на Raspberry Pi

Производителност на Raspberry Pi: Добавяне на ZRAM и промяна на параметрите на ядрото

ZRAM създава блоково хранилище в RAM с име /dev/zram0 (или 1, 2, 3 и т.н.). Написаните там страници се компресират и съхраняват в паметта. Това позволява много бърз I/O и също така освобождава памет чрез компресиране.

Raspberry Pi 4 идва с 1, 2, 4 или 8 GB RAM. Ще използвам модела с 1 GB, така че коригирайте инструкциите в зависимост от вашия модел. С 1 GB ZRAM суап файлът по подразбиране (бавен!) ще се използва по-рядко. Използвах такъв скрипт zram-суап за инсталиране и автоматична конфигурация.

Инструкциите са предоставени в хранилището, свързано по-горе. Инсталация:

git clone https://github.com/foundObjects/zram-swap.git
cd zram-swap && sudo ./install.sh

Ако искате да редактирате конфигурацията:

vi /etc/default/zram-swap

Освен това можете да активирате ZRAM чрез настройка zram-tools. Ако използвате този метод, не забравяйте да редактирате конфигурацията във файл /etc/default/zramswapи инсталирайте около 1GB ZRAM:

sudo apt install zram-tools

След инсталирането можете да видите статистическите данни за съхранението на ZRAM със следната команда:

sudo cat /proc/swaps
Filename				Type		Size	Used	Priority
/var/swap                               file		102396	0	-2
/dev/zram0                              partition	1185368	265472	5
pi@raspberrypi:~ $

Добавяне на опции на ядрото за по-добро използване на ZRAM

Сега нека коригираме поведението на системата, когато Raspberry Pi превключва на суап в последния момент, което често води до замръзване. Нека добавим няколко реда към файла /etc/sysctl.conf и рестартирайте.

Тези редове 1) забавят неизбежното изчерпване на паметта, чрез увеличаване на натиска върху кеша на ядрото и 2) започнете да се подготвяте за изчерпване на паметта по-рано, инициирайки пейджинг предварително. Но това ще бъде много по-ефективно страниране на компресирана памет чрез ZRAM!

Ето редовете, които трябва да се добавят в края на файла /etc/sysctl.conf:

vm.vfs_cache_pressure=500
vm.swappiness=100
vm.dirty_background_ratio=1
vm.dirty_ratio=50

След това рестартирайте системата или активирайте редакциите със следната команда:

sudo sysctl --system

vm.vfs_cache_pressure=500 увеличава натиска върху кеша, което увеличава склонността на ядрото да възстановява паметта, използвана за кеширане на директория и индексни обекти. Ще използвате по-малко памет за по-дълъг период от време. Резкият спад в производителността се отрича от по-ранна смяна.

vm.swappiness = 100 увеличава параметъра за това колко агресивно ядрото ще разменя страници от паметта, тъй като първо използваме ZRAM.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 — фоновите процеси ще започнат да записват веднага след достигане на лимита от 1%, но системата няма да принуди синхронен I/O, докато не достигне 50% dirty_ratio.

Тези четири реда (когато се използват със ZRAM) ще помогнат за подобряване на производителността, ако имате неизбежно Рам паметта свършва и започва преминаването към суап, като моя. Като се знае този факт, а също и като се вземе предвид компресията на паметта в ZRAM с коефициент три, по-добре е този суап да започне рано.

Натискът върху кеша помага, защото всъщност казваме на ядрото: „Хей, вижте, нямам допълнителна памет, която да използвам за кеш, така че, моля, отървете се от нея възможно най-скоро и запазете само най-използваните/важните данни. "

Дори и при по-малко кеширане, ако с течение на времето по-голямата част от инсталираната памет бъде заета, ядрото ще започне op-swap много по-рано, така че CPU (компресия) и swap I/O да не дърпат до последно и да използват всички ресурси веднага, когато е твърде късно. ZRAM използва малко CPU за компресиране, но при повечето системи с малко памет това има много по-малко въздействие върху производителността, отколкото суап без ZRAM.

В заключение

Да погледнем отново резултата:

pi@raspberrypi:~ $ free -h
total used free shared buff/cache available
Mem: 926Mi 471Mi 68Mi 168Mi 385Mi 232Mi
Swap: 1.2Gi 258Mi 999Mi

pi@raspberrypi:~ $ sudo cat /proc/swaps 
Filename Type Size Used Priority
/var/swap file 102396 0 -2
/dev/zram0 partition 1185368 264448 5

264448 в ZRAM е почти един гигабайт некомпресирани данни. Всичко влезе в ZRAM и нищо не влезе в много по-бавния суап файл. Опитайте сами тези настройки, те работят на всички модели Raspberry Pi. Моята неизползваема система за окачване се превърна в работеща и стабилна.

В близко бъдеще се надявам да продължа и да актуализирам тази статия с някои от резултатите от тестването на системата преди и след инсталирането на ZRAM. Сега просто нямам време за това. Междувременно не се колебайте да проведете свои собствени тестове и да ме уведомите в коментарите. Raspberry Pi 4 е звяр с тези настройки. Наслади се!

По темата:

Източник: www.habr.com

Добавяне на нов коментар