Wydajność Raspberry Pi: dodanie ZRAM i zmiana parametrów jądra

Kilka tygodni temu zamieściłem post Recenzja Pinebooka Pro. Ponieważ Raspberry Pi 4 jest również oparty na architekturze ARM, niektóre optymalizacje wspomniane w poprzednim artykule są dla niego całkiem odpowiednie. Chciałbym podzielić się tymi sztuczkami i sprawdzić, czy odczujesz taką samą poprawę wydajności.

Po zainstalowaniu Raspberry Pi w twoim domowa serwerownia Zauważyłem, że w momentach niedoboru pamięci RAM przestał reagować, a nawet zawiesił się. Aby rozwiązać ten problem, dodałem ZRAM i wprowadziłem kilka zmian w parametrach jądra.

Aktywacja ZRAM na Raspberry Pi

Wydajność Raspberry Pi: dodanie ZRAM i zmiana parametrów jądra

ZRAM tworzy blok w pamięci RAM o nazwie /dev/zram0 (lub 1, 2, 3 itd.). Zapisane tam strony są kompresowane i przechowywane w pamięci. Pozwala to na bardzo szybkie operacje we/wy, a także zwalnia pamięć poprzez kompresję.

Raspberry Pi 4 jest wyposażony w 1, 2, 4 lub 8 GB pamięci RAM. Będę używać modelu 1 GB, więc dostosuj instrukcje do swojego modelu. Przy 1 GB ZRAM domyślny plik wymiany (wolny!) będzie używany rzadziej. Użyłem tego skryptu zram-swap do instalacji i automatycznej konfiguracji.

Instrukcje znajdują się w repozytorium, do którego link znajduje się powyżej. Instalacja:

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

Jeśli chcesz edytować konfigurację:

vi /etc/default/zram-swap

Ponadto możesz aktywować ZRAM poprzez instalację zram-tools. Jeśli użyjesz tej metody, pamiętaj o edycji pliku config w pliku /etc/default/zramswapi zainstaluj około 1 GB ZRAM:

sudo apt install zram-tools

Po instalacji możesz wyświetlić statystyki pamięci ZRAM za pomocą następującego polecenia:

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

Dodanie parametrów jądra w celu lepszego wykorzystania ZRAM

Naprawmy teraz zachowanie systemu, gdy Raspberry Pi w ostatniej chwili przełącza się na swap, co często prowadzi do zawieszeń. Dodajmy kilka linii do pliku /etc/sysctl.conf i uruchom ponownie.

Te linie 1) opóźni nieuniknione wyczerpanie się pamięci, zwiększając obciążenie pamięci podręcznej jądra i 2) wcześniej zaczynają przygotowywać się na wyczerpanie pamięci, rozpoczynając wymianę z wyprzedzeniem. Ale znacznie wydajniejsza będzie wymiana skompresowanej pamięci przez ZRAM!

Oto linie, które należy dodać na końcu pliku /etc/sysctl.conf:

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

Następnie ponownie uruchamiamy system lub aktywujemy zmiany za pomocą następującego polecenia:

sudo sysctl --system

vm.vfs_cache_ Pressure=500 zwiększa wykorzystanie pamięci podręcznej, co zwiększa tendencję jądra do odzyskiwania pamięci używanej do buforowania obiektów katalogów i indeksów. Będziesz używać mniej pamięci przez dłuższy czas. Gwałtowny spadek wydajności jest niwelowany przez wcześniejszą zamianę.

vm.swappiness = 100 zwiększa parametr, jak agresywnie jądro będzie zamieniać strony pamięci, ponieważ najpierw używamy ZRAM.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 - procesy w tle rozpoczną nagrywanie natychmiast po osiągnięciu limitu 1%, ale system nie będzie wymuszał synchronicznych wejść/wyjść, dopóki nie osiągnie dirt_ratio wynoszącego 50%.

Te cztery linie (w przypadku użycia z ZRAM) pomogą poprawić wydajność, jeśli tak jest nieuchronnie Skończy się pamięć RAM i rozpoczyna się przejście do wymiany, tak jak moje. Wiedząc o tym, a także biorąc pod uwagę trzykrotną kompresję pamięci w ZRAM-ie, lepiej rozpocząć tę wymianę wcześniej.

Nacisk na pamięć podręczną pomaga, ponieważ w zasadzie mówimy jądru: „Hej, spójrz, nie mam żadnej dodatkowej pamięci do wykorzystania na pamięć podręczną, więc pozbądź się jej jak najszybciej i przechowuj tylko najczęściej używane/ważne dane."

Nawet przy zmniejszonym buforowaniu, jeśli z biegiem czasu większość zainstalowanej pamięci będzie zajęta, jądro rozpocznie oportunistyczną wymianę znacznie wcześniej, dzięki czemu procesor (kompresja) i zamiana wejść/wyjść nie będą czekać do ostatniej chwili i zużywać wszystkie zasoby na raz, gdy jest za późno. ZRAM wykorzystuje niewielką ilość procesora do kompresji, ale w większości systemów z małą ilością pamięci ma znacznie mniejszy wpływ na wydajność niż zamiana bez ZRAM.

Na zakończenie

Spójrzmy jeszcze raz na wynik:

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 w ZRAM to prawie jeden gigabajt nieskompresowanych danych. Wszystko poszło do ZRAM-u i nic nie trafiło do znacznie wolniejszego pliku stronicowania. Wypróbuj te ustawienia samodzielnie, działają one na wszystkich modelach Raspberry Pi. Mój bezużyteczny, zamrażający system zamienił się w funkcjonalny i stabilny.

W najbliższej przyszłości mam nadzieję kontynuować i aktualizować ten artykuł o wyniki testów systemu przed i po instalacji ZRAM. Teraz po prostu nie mam na to czasu. W międzyczasie możesz przeprowadzić własne testy i dać mi znać w komentarzach. Raspberry Pi 4 to bestia z tymi ustawieniami. Cieszyć się!

Na temat:

Źródło: www.habr.com

Dodaj komentarz