RPI OS - plik wymiany
- Szczegóły
- Odsłony: 33685
Spis treści
Jednym z zagadnień, któremu podczas korzystania z Malinki z Raspbianem OS (32b) początkowo poświęciłem mniej uwagi była domyślna konfiguracja OS'a. Dotyczy to m.in. pliku wymiany (inne nazwy to: swapfile, swap, itp.).
Dla uproszczenia dalej będę używał określenia: swap. Tak jest krócej.
Użytkownicy wszelkiej "maści" Linuksów znają to pojęcie. Czy Raspbian korzysta ze swap'a? Tak. I tu jedna z różnic: nie jest to odrębna partycja, a fizyczny plik. Zarządzający: dphys-swapfile.
Tym co jednak zaskoczy użytkowników Raspbiana (32b) jest jednak (domyślna) wielkość swap'a: 100MB. :/ Inne OS'y (również te oparte na Linuksie) używane na RPi często stosują inną wielkość i organizację swap'a.
Malinka (np. 4B) miewa "na pokładzie" nawet 8GB. Toteż swap o rozmiarze 100MB zaskakuje. U wielu - budzi zdziwienie.
Czy w tym Raspbianie swap nadal jest potrzebny? IMO: tak, ale...
Trochę teorii
Na wstępie trzeba przypomnieć (w uproszczeniu) podstawowe kwestie:
- swap (swapfile) było lub jest to miejsce (w formie np. fizycznego pliku na dysku), w którym OS "składa" dane "chwilowo" nieużywanych procesów. Ważne: nie zawsze dotyczy to użytkowanych przez użytkownika aplikacji. To przeniesienie następuje w chwilach, gdy dostępny RAM (wg. kryteriów systemu) jest zbyt mały. Przeniesienie to ma zapobiec wystąpieniu błędu systemowego tzw. OOM (Out Of Memory).
- Czytając opisy konfiguracji swapu różnych systemów Linux spotkamy się z informacją, że optymalną wielkością jest podwojona wielkość dostępnej pamięci RAM.
Stąd pytanie: co z tym swapem pod Raspbianem?
Ogólnie rzecz biorąc nie jest źle, bo OS dość długo zwleka z sięgnięciem po swap'a. :o
Można uruchomić (u mnie na RPi 4B/8GB) wiele procesów (kilka sesji przegladarki, vlc, vnc client'a, kopiowanie plików, itp.), testów (np. stress-ng, itp.) - temperatura struktury (sensownie) rośnie, 4 Cortex'y dzielą się wątkami, wykorzystanie powoli rośnie, a zarządzany (od lat) przez dphys-sawapfile swap... leniuchuje! :D
Moim zdaniem zderzyły się tu historia z terażniejszością:
- Raspbian i Malinka pierwotnie dysponowały niewielką ilością pamięci RAM. Rolę pamięci masowej spełniały głównie karty SD.
- Ich cechą charakterystyczną było to, że: prędkość odczytów i (zwłaszcza) zapisów była zdecydowanie mniejsza niż prędkość tych procesów w odniesieniu do RAM.
- Częstość operacji zapisu na kartę SD w znaczący sposób wpływała na jej trwałość, w tym na (deklarowany przez producenta) limit dostępnych operacji zapisów. Pierwotnie nie zakładano wykorzystania Raspberry Pi jako "konia pociągowego" :D systemów IT. Czas i umiejętności wsparte oczekiwaniami oraz potrzebami użytkowników pokazały jednak, że RPi wiele potrafi. Jeszcze więcej "zniesie" ;)
Kolejne wersje wyposażano w silniejszy procesor, zwiększano rozmiar RAM. A swap'a pozostawiono jako... alternatywę dla "poważniejszych" zastosowań. - Obecnie jedną z najczęściej wprowadzanych zmian "eksploatacyjnych" RPi jest instalacja, uruchamianie i używanie Raspbian OS'a z... szybkich dysków SSD. Nie tylko ich prędkość, ale i ich trwałość jest zdecydowanie większa niż stosowanych dawniej kart SD.
- Relacja pojemności dysków SSD do ich ceny powoduje, że nie jest rzadkością używanie Malinki z dyskami >128GB i przeznaczanie 1-2GB na swap. Co nie powinno nadwyrężyć naszych zasobów..
- Założono, że użytkownikowi (zwłaszcza temu mniej doświadczonemu) prościej będzie zmienić (za pomocą edytora tekstowego) rozmiar swap'a poprzez edycję pliku konfiguracyjnego. Maniputacje ze zmianą wielkości ewentualnej partycji swap'a - jak sądzę - pozostawiono tym bardziej: doświadczonym, ambitnym czy... potrzebującym.
Jakkolwiek dyskusja na temat swapa w Raspbianie nie jest "tematem dnia" to jednak użytkownicy, którzy "dotknęli" zagadnienia prezentują następujące opinie:
- "bez potrzeby nie ma co ruszać" - to rozwiązanie wydaje się szczególnie dedykowane początkującym użytkownikom RPi z Raspbianem (32b).
Z moich doświadczeń i testów wynika, że rzeczywiście nawet w domyślnej konfiguracji RPi 4B/8GB trudno zmęczyć czy położyć.
Dwa kolejne rozwiązania wykluczają się choć sprowadzają się do tezy: "ze swapem trzeba coś zrobić, tzn. ...": - "...powiększyć np. do 1-2GB" - zwolennicy tego rozwiązania wskazują, że w konkretnych przypadkach swap może odegrać decydującą rolę. Głównie "ostatniej deski ratunku" w sytuacjach, gdy nawet OOM killer nie dał sobie rady! Nie mam podstaw do podważania cudzych doświadczeń. Mogę jedynie przytaknąć, że IMO 100MB swap (przy dostępnym RAM'ie RPi 2-8GB) niewiele pomoże. Można jednak mieć nadzieję, że ten o wymiarze 1-2GB "na coś się przyda".
- "...usunąć!" - zwolennicy tego rozwiązania również powołują się na własne doświadczenia. Wskazują, że w konkretnych sytuacjach zanim zadziałał mechanizm swap'a (nawet powiększonego) system już się wyłożył :/ I nic się nie dało zrobić. Poza wyłączeniem i ponownym uruchomieniem RPi.
Zwolennicy ostatnich dwóch rozwiązań w jednym są zgodni: zastosowane w Rapbianie rozwiązanie (dphys-swapfile) jest rzeczywiście dość proste "w obsłudze". Czym zatem jest dphys-swapfile?