Rendiment de Raspberry Pi: afegir ZRAM i canviar els paràmetres del nucli

Fa un parell de setmanes vaig publicar Revisió de Pinebook Pro. Com que Raspberry Pi 4 també està basat en ARM, algunes de les optimitzacions esmentades a l'article anterior són molt adequades per a això. M'agradaria compartir aquests trucs i veure si experimenteu les mateixes millores de rendiment.

Després d'instal·lar el Raspberry Pi al vostre sala de servidors domèstics Em vaig adonar que en moments d'escassetat de memòria RAM no responia i fins i tot es va congelar. Per resoldre aquest problema, vaig afegir ZRAM i vaig fer alguns canvis als paràmetres del nucli.

Activació de ZRAM a Raspberry Pi

Rendiment de Raspberry Pi: afegir ZRAM i canviar els paràmetres del nucli

ZRAM crea un emmagatzematge de blocs a la memòria RAM anomenat /dev/zram0 (o 1, 2, 3, etc.). Les pàgines escrites allà estan comprimides i emmagatzemades a la memòria. Això permet una E/S molt ràpida i també allibera memòria mitjançant la compressió.

El Raspberry Pi 4 inclou 1, 2, 4 o 8 GB de RAM. Faré servir el model d'1 GB, així que ajusteu les instruccions segons el vostre model. Amb 1 GB de ZRAM, el fitxer d'intercanvi predeterminat (lent!) s'utilitzarà amb menys freqüència. He utilitzat aquest guió zram-swap per a la instal·lació i configuració automàtica.

Les instruccions es proporcionen al repositori enllaçat anteriorment. Instal·lació:

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

Si voleu editar la configuració:

vi /etc/default/zram-swap

A més, podeu activar ZRAM mitjançant la instal·lació zram-tools. Si utilitzeu aquest mètode, assegureu-vos d'editar la configuració a l'arxiu /etc/default/zramswap, i instal·leu aproximadament 1 GB de ZRAM:

sudo apt install zram-tools

Després de la instal·lació, podeu veure les estadístiques d'emmagatzematge ZRAM amb l'ordre següent:

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

Afegint paràmetres del nucli per a un millor ús de la ZRAM

Ara arreglem el comportament del sistema quan el Raspberry Pi canvia a l'últim moment, cosa que sovint provoca congelacions. Afegim unes quantes línies al fitxer /etc/sysctl.conf i reinicieu.

Aquestes línies 1) retardarà l'esgotament inevitable de la memòria, augmentant la pressió sobre la memòria cau del nucli i 2) comencen a preparar-se per a l'esgotament de la memòria abans, iniciant l'intercanvi amb antelació. Però serà molt més eficient canviar la memòria comprimida mitjançant ZRAM!

Aquí teniu les línies per afegir al final del fitxer /etc/sysctl.conf:

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

A continuació, reiniciem el sistema o activem els canvis amb la següent comanda:

sudo sysctl --system

vm.vfs_cache_pressure=500 augmenta la pressió de la memòria cau, la qual cosa augmenta la tendència del nucli a recuperar la memòria utilitzada per emmagatzemar a la memòria cau objectes de directoris i índex. Utilitzareu menys memòria durant un període de temps més llarg. La forta caiguda del rendiment es veu negada per l'intercanvi anterior.

vm.swappiness = 100 augmenta el paràmetre amb quina agressivitat intercanviarà les pàgines de memòria el nucli, ja que primer estem utilitzant ZRAM.

vm.dirty_background_ratio=1 i vm.dirty_ratio=50 - Els processos en segon pla començaran a gravar immediatament en arribar al límit de l'1%, però el sistema no forçarà l'E/S síncrona fins que no arribi a dirty_ratio del 50%.

Aquestes quatre línies (quan s'utilitzen amb ZRAM) ajudaran a millorar el rendiment si ho teniu inevitablement La memòria RAM s'esgota i comença la transició a l'intercanvi, com la meva. Tenint en compte aquest fet, i tenint també en compte la compressió de memòria en ZRAM per tres vegades, és millor iniciar aquest intercanvi amb antelació.

Fer pressió a la memòria cau ajuda perquè bàsicament estem dient al nucli: "Ei, mira, no tinc cap memòria addicional per utilitzar per a la memòria cau, així que si us plau, desfer-se'n el més aviat possible i emmagatzemar només la més utilitzada/important. dades".

Fins i tot amb una memòria cau reduïda, si amb el temps s'ocupa la major part de la memòria instal·lada, el nucli començarà l'intercanvi oportunista molt abans, de manera que la CPU (compressió) i l'E/S d'intercanvi no esperaran fins a l'últim minut i utilitzaran tots els recursos alhora. és massa tard. La ZRAM utilitza una mica de CPU per a la compressió, però a la majoria de sistemes amb petites quantitats de memòria té molt menys impacte en el rendiment que l'intercanvi sense ZRAM.

en conclusió

Tornem a veure el resultat:

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 en ZRAM és gairebé un gigabyte de dades sense comprimir. Tot va anar a ZRAM i res va anar al fitxer de pàgina molt més lent. Proveu vosaltres mateixos aquestes configuracions, funcionen en tots els models Raspberry Pi. El meu sistema de congelació inutilitzable s'ha convertit en un de funcional i estable.

En un futur proper, espero continuar i actualitzar aquest article amb alguns resultats de les proves del sistema abans i després d'instal·lar ZRAM. Ara no tinc temps per això. Mentrestant, no dubteu a fer les vostres pròpies proves i feu-m'ho saber als comentaris. El Raspberry Pi 4 és una bèstia amb aquesta configuració. Gaudeix!

Sobre el tema:

Font: www.habr.com

Afegeix comentari