Распберри Пи перформансе: додавање ЗРАМ-а и промена параметара кернела

Пре пар недеља сам објавио Пинебоок Про рецензија. Пошто је Распберри Пи 4 такође заснован на АРМ-у, неке од оптимизација поменутих у претходном чланку су сасвим погодне за њега. Желео бих да поделим ове трикове и видим да ли и ви доживљавате иста побољшања перформанси.

Након што инсталирате Распберри Пи у свој кућна сервер соба Приметио сам да је у тренуцима недостатка РАМ-а постао веома неодговарајући и чак се замрзнуо. Да бих решио овај проблем, додао сам ЗРАМ и направио неколико промена у параметрима кернела.

Активирање ЗРАМ-а на Распберри Пи

Распберри Пи перформансе: додавање ЗРАМ-а и промена параметара кернела

ЗРАМ креира блок складиште у РАМ-у под називом /дев/зрам0 (или 1, 2, 3, итд.). Странице које су тамо уписане се компресују и чувају у меморији. Ово омогућава веома брз И/О и такође ослобађа меморију кроз компресију.

Распберри Пи 4 долази са 1, 2, 4 или 8 ГБ РАМ-а. Користићу модел од 1 ГБ, па вас молимо да прилагодите упутства на основу вашег модела. Са 1 ГБ ЗРАМ-а, подразумевана свап датотека (споро!) ће се ређе користити. Користио сам ову скрипту зрам-свап за инсталацију и аутоматску конфигурацију.

Инструкције су дате у спремишту повезаном изнад. Инсталација:

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

Ако желите да измените конфигурацију:

vi /etc/default/zram-swap

Поред тога, можете активирати ЗРАМ инсталирањем zram-tools. Ако користите овај метод, обавезно уредите конфигурацију у фајлу /etc/default/zramswap, и инсталирајте око 1 ГБ ЗРАМ-а:

sudo apt install zram-tools

Након инсталације, можете погледати статистику ЗРАМ меморије помоћу следеће команде:

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

Додавање параметара кернела за боље коришћење ЗРАМ-а

Сада поправимо понашање система када Распберри Пи пређе на замену у последњем тренутку, што често доводи до замрзавања. Хајде да додамо неколико редова у датотеку /етц/сисцтл.цонф и поново покрените.

Ови редови 1) одложиће неизбежно исцрпљивање памћења, повећавајући притисак на кеш језгра и 2) раније почињу да се припремају за исцрпљивање памћења, иницирајући замену унапред. Али биће много ефикасније заменити компримовану меморију преко ЗРАМ-а!

Ево редова које треба додати на крају датотеке /етц/сисцтл.цонф:

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

Затим поново покрећемо систем или активирамо промене следећом командом:

sudo sysctl --system

вм.вфс_цацхе_прессуре=500 повећава притисак кеша, што повећава склоност кернела да поврати меморију која се користи за кеширање објеката директорија и индекса. Користићете мање меморије током дужег временског периода. Оштар пад перформанси се негира ранијим заменама.

вм.сваппинесс = 100 повећава параметар колико ће језгро агресивно мењати меморијске странице, пошто прво користимо ЗРАМ.

вм.дирти_бацкгроунд_ратио=1 & вм.дирти_ратио=50 - позадински процеси ће почети да се снимају одмах након достизања границе од 1%, али систем неће форсирати синхрони И/О док не достигне дирти_ратио од 50%.

Ове четири линије (када се користе са ЗРАМ-ом) ће вам помоћи да побољшате перформансе ако јесте неизбежно Понестаје РАМ меморије и почиње прелазак на свап, као мој. Знајући ову чињеницу, а такође и узимајући у обзир компресију меморије у ЗРАМ-у за три пута, боље је започети ову замену унапред.

Притисак на кеш меморију помаже јер ми у суштини говоримо кернелу: „Хеј, види, немам никакву додатну меморију да користим за кеш, па вас молим да је се решите што пре и чувајте само најчешће коришћене/важне подаци."

Чак и са смањеним кеширањем, ако је током времена већина инсталиране меморије заузета, кернел ће почети опортунистичку замену много раније, тако да ЦПУ (компресија) и свап И/О неће чекати до последњег минута и користити све ресурсе одједном када прекасно је. ЗРАМ користи мало ЦПУ-а за компресију, али на већини система са малим количинама меморије има много мањи утицај на перформансе него замена без ЗРАМ-а.

У закључку

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

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 у ЗРАМ-у је скоро један гигабајт некомпримованих података. Све је отишло у ЗРАМ, а ништа у много спорији фајл страница. Испробајте ова подешавања сами, функционишу на свим Распберри Пи моделима. Мој неупотребљиви систем за замрзавање се претворио у функционалан и стабилан.

У блиској будућности, надам се да ћу наставити и ажурирати овај чланак неким резултатима тестирања система пре и после инсталирања ЗРАМ-а. Сад једноставно немам времена за ово. У међувремену, слободно покрените своје тестове и јавите ми у коментарима. Распберри Пи 4 је звер са овим подешавањима. Уживати!

На тему:

Извор: ввв.хабр.цом

Додај коментар