RPI OS - plik wymiany

Spis treści

RPi - dphys-swapfile

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?

RPI swap - mało używany!

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.

100MB to trochę mało...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?

//