Swapowanie danych

in #polish6 years ago

"Swapowanie" to termin stworzony przez użytkowników Linuksa, ale co on oznacza? Z czym się wiąże? Czy dotyczy on użytkowników Windowsa? O tym dowiecie się z tego artykułu.

image.png

Czym jest partycja Swap / Plik wymiany / Plik stronicowania?

Dzisiaj komputery potrafią mieć dziesiątki Gigabajtów pamięci RAM, czyli czegoś w rodzaju pamięci "krótkotrwałej" (na czas działania komputera przechowywane są tam dane). Pamięć RAM jest bardzo szybką pamięcią, więc programiści starają się ją używać zamiast zapisywać dane na dysku, przetwarzać (gdzie? pewnie i tak w RAM).

Jednakże pamięć jest skończona (swoją pojemnością), a użytkownik (który ma na przykład jej mało) nie wie o tym i uruchamia kolejne aplikacje, które zmniejszają wolne miejsce jeszcze bardziej. Rozwiązania są dwa:

  • Ubijać aplikacje
  • Zgrywać dane aplikacji, których nie używamy na dysk, do tzw. "Swap".

I tym jest Swap. Jest miejscem na dysku, który służy jako przechowalnia danych, których dawno już nie użyliśmy, a nie zakończyliśmy aplikacji i te dane nie mogą zostać zwolnione. Jeśli jednak nie mamy takiej partycji / miejsca (każdy system domyślnie takie coś tworzy, można jednak wymusić by tego nie robił) to aplikacje powinny być niszczone.

Tak więc w Windows też taki plik jest, nie wiem czy znajduje się ciągle w tym samym miejscu, ale domyślnie jest to ukryty plik na C:\pagefile.sys.

Mam dużo pamięci RAM ...

Pamięć wymiany jest stosowana głównie w przypadku małej ilości RAM. Ile? To zależy od aplikacji uruchamianych przez użytkownika. Oprogramowanie niestety z roku na rok coraz bardziej tyje i wymagania rosną. Jeśli jednak masz naprawdę dużo pamięci RAM, to posiadanie SWAP może nie mieć sensu, bo praktycznie nigdy nie będzie on używany.

Z drugiej strony w Linuksach "hibernacja" to zapis do tej pamięci, więc nie mając takiego pliku / partycji na dysku w pojemności równej lub większej pamięci RAM to ta funkcja może nie działać (może są obejścia?).

Można jakoś "ograniczyć swapowanie"?

image.png

Najlepiej (w dzisiejszych czasach) albo doinwestować w RAM albo w cały komputer najlepiej. Po prostu jeśli komputer ma mało pamięci operacyjnej (dzisiaj minimum 8GB jest "ok") to pewnie reszta komponentów też jest przestarzała.

Jeśli jednak chcemy dłużej poużywać naszego komputera to warto rozejrzeć się za lżejszymi odpowiednikami aplikacji, których używamy. Są alternatywne wersje aplikacji, które zżerają mniej RAMu, np. Falkon jest inspirowany Firefox (wygląd), a potrafi zjeść mniej nawet o 100MB "już na starcie". Nie jest to imponujący wynik jak ktoś ma dużą ilość tej pamięci, ale jak ktoś ma mało, to każdy Megabajt jest na wagę złota.

Sort:  

W końcu się podszkolę ;)

!tipuvote hide

Pod Linuksem jako administrator można zdeytować plik:
/etc/sysctl.conf
dodając w nim linię:
vm.swappiness = 10
gdzie "10" to liczba z zakresu od 0 do 99. 0 oznacza, że plik stronnicowania będzie używany tylko w ostateczności (gdy skończyła się pamięć RAM), a 99 oznacza zrzucanie na dysk wszystkiego co możliwe. Standardowa (domyślna) wartość dochodzi do 80, ale gdy nie chcemy polegać na automatycznej regulacji możemy się wtrącić dodając wspomniane ustawienie do pliku i regulując to ręcznie (ustawienie działa dopiero po restarcie). Ustawienie liczby 15 poskutkuje włączeniem się zrzucania pamięci RAM na dysk dopiero przy wypełnieniu pamięci na poziomie około 80%.

Zgadza się, pytanie czy warto takie coś robić jeśli masz mało ramu? Wydaje mi się (może jestem w błędzie), że system i tak byle syfu nie zrzuca - po prostu uznaje coś za zbędnego i swapuje. Im większy swappiness tym jest bardziej do tego skłonny, ale jednak

Jeśli np. to jest serwer i użycie RAMu jest bardzo przewidywalne (bo np. mamy limity pamięci per aplikację czy dla Dockera), to raczej nie chcemy za dużo używać swap-u. Jeśli to komputer w gabinecie lekarskim - podobnie, bo pewnie używa się tam dwóch programów na krzyż i nie warto za nadto spowalniać sobie komputera gdy pacjent czeka. Jeśli to komputer ogólnego zastosowania w domu - pewnie wolimy automatyczne zarządzanie swap. Odpowiedz więc jak to najczęściej bywa: "to zależy". ;)

Pytanie czy domyślne wartości swapowania są niewygodne. Moim zdaniem to CHYBA nie :D

Mogłem też dorzucić jak to sprawdzać (chociaż nie wiem jak na Windowsie), na Linuksie jest monitor systemu (Gnome / KDE / Mate), a w konsoli free

image.png

Jak widać - 4GB ramu, a system zrzuca dane ;)

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63811.50
ETH 2617.28
USDT 1.00
SBD 2.77