Wymuszenie przeniesienia pamięci ze SWAP do pamięci RAM

Często zdarza się tak, że po zakończeniu używania pamięciożernej aplikacji (np. maszyna wirtualna) SWAP jest zapchany, podczas gdy zostało jeszcze dużo wolnej pamięci RAM. Objawia się to wtedy, kiedy np. po zamknięciu owej ciężkiej aplikacji, przywrócenie wcześniej uruchomionych aplikacji, które zostały zminimalizowane, trwa długo i towarzyszy temu „mielenie” dysku.

Efekt ten można łatwo zaobserwować na komputerach, które mają mało pamięci RAM, np. na moim starym laptopie z 880 MB RAM. Można temu zapobiec stosując prosty trick.

Aby wymusić przeniesienie danych znajdujących się w SWAP do pamięci RAM wydaj polecenie:

sudo swapoff -a

Następnie poczekaj, aż dysk przestanie pracować (dioda dysku twardego na obudowie powinna przestać migać). Dla pewności możesz sprawdzić czy SWAP został wyłączony dowolnym monitorem pamięci lub poleceniem free -m. Kiedy wszystkie dane zostaną skopiowane włącz SWAP ponownie:

Informacje o sprzęcie i systemie zawarte w katalogu /proc

W katalogu systemowym /proc znajdziesz kilka przydatnych informacji dotyczących posiadanego sprzętu jak i samego systemu.

Informacje o procesorze

cat /proc/cpuinfo

Informacje o zainstalowanej pamięci

cat /proc/meminfo

Informacje o partycjach

cat /proc/partitions

Informacje o partycji SWAP

cat /proc/swaps

Uptime [s]

cat /proc/uptime

Wersja jądra

Optymalizacja wykorzystywania partycji SWAP

Na temat SWAP powstał już artykuł – Partycja SWAP – fakty i mity, więc wszelki komentarz jest zbędny.

Wartość parametru vm.swappiness, który odpowiada za to, kiedy system skorzysta ze SWAP, domyślnie ustawiona jest na 60, co możesz sprawdzić poleceniem (o ile nic wcześniej nie zmieniałeś):

sysctl vm.swappiness

Nie jest to optymalna wartość i może dojść do sytuacji, w której nawet w przypadku 4GB RAM system zapisze coś na dysku – co wiąże się ze zmniejszeniem komfortu pracy – zapis i odczyt z dysku twardego jest o wiele dłuższy niż z pamięci RAM. Im mniejsza wartość tego parametru, tym system rzadziej będzie korzystać ze SWAP – będzie wykorzystywał RAM do maksimum. Wartość 0 oznacza całkowite wyłączenie partycji SWAP.

Aby tymczasowo (do ponownego uruchomienia komputera) zmienić ten parametr użyj polecenia:

sudo sysctl vm.swappiness=wartość

Partycja SWAP – fakty i mity

Partycja SWAP – każdy wie, że coś takiego istnieje, ale nie wszyscy wiedzą do czego służy. Lekko zniesmaczony kolejnymi wątkami na forum.ubuntu.pl postanowiłem zebrać do kupy wszystko, co udało mi się znaleźć na ten temat w sieci.

Mam nadzieję Drogi Czytelniku, że po przeczytaniu treści tutaj zawartych zrozumiesz co to jest partycja SWAP, do czego służy i ile należy przeznaczyć na nią miejsca.

Partycja wymiany (SWAP) – systemowa partycja występująca w systemach typu UNIX. Służy do tymczasowego przechowywania danych w sytuacji, gdy ich ilość przekracza zasoby wolnej pamięci RAM lub gdy z różnych powodów korzystniej jest przechowywać je (lub ich część) na dysku twardym.

Fakt 1: jest to wydzielona część Twojego dysku twardego (chociaż nie zawsze!), więc jej rozmiar należy ustawić z głową (o czym później), zwłaszcza w przypadku mniejszych dysków twardych. Korzysta z niej jedynie system, więc jest to dla użytkownika de facto zmniejszenie rzeczywistego rozmiaru dysku twardego (dostępnych zasobów).

Fakt 2: system używa jej wtedy, gdy zostanie przekroczona ilość dostępnej pamięci RAM lub gdy uzna, że lepiej jest przechowywać dane na dysku niż w pamięci. Warto pamiętać, że samodzielnie możesz ustawić jak często system będzie korzystać z partycji SWAP – jednak należy mieć również na uwadze, że zapis i odczyt danych z dysku twardego (SWAP) jest o wiele wolniejszy niż z pamięci RAM.
Pomyśl ile wysiłku musisz włożyć w to, aby zużyć dostępną pamięć RAM. Sam posiadam 3Gb RAM i odkąd pamiętam nigdy nie korzystałem z pamięci SWAP – mimo to jest ona obecna.

Fakt 3: posiadanie partycji SWAP jest zalecane – czy to w formie tradycyjnej czy mniej konwencjonalnej (w pliku). Nigdy nie wiesz z czym będziesz miał do czynienia – nie możesz z góry zakładać, że nigdy nie przekroczysz pamięci RAM, dlatego warto się zabezpieczyć.