Twój system Linux potajemnie używa twojego dysku twardego jako pamięci RAM, i to jest dobra rzecz
Jeżeli spędzasz czas wśród poważnych użytkowników Linuksa, prawdopodobnie usłyszysz odniesienie do „pamięci wymiany”. Albo może zastanawiałeś się, czym jest partycja wymiany, którą utworzył program instalacyjny Linuksa. Pamięć wirtualna i pamięć wymiany mogą być mylące. Oto, co musisz wiedzieć o Linuksie.
Czym jest pamięć wirtualna?
Bardziej elastyczne podejście do pamięci
Wiele osób myli „swap” z „pamięcią wirtualną”. Pamięć wirtualna to technika, która abstrakcyjnie przedstawia pamięć komputera w stosunku do jego fizycznego RAM-u.
Jeśli znasz koncepcję maszyny wirtualnej, gdzie możesz stworzyć zupełnie inny komputer w programie takim jak VirtualBox, aby uruchamiać różne systemy operacyjne, pamięć wirtualna jest podobną koncepcją. Pamięć wirtualna jest przedstawieniem pamięci twojego komputera, którego używa system operacyjny, aby pokazać obraz pamięci, który nie jest ograniczony przez kości RAM w twojej maszynie.
Na procesorze znajduje się element sprzętowy, który to umożliwia: jednostka zarządzania pamięcią, czyli MMU. MMU dzieli pamięć na „strony”. MMU zapobiega również ingerencji programów w siebie nawzajem, co jest ważne w systemie operacyjnym wielozadaniowym i wieloużytkownikowym, takim jak Linux.
Rozmiary stron mają tendencję do bycia takimi samymi jak bloki pamięci na dyskach twardych i SSD, co jest główną zaletą pamięci wirtualnej: tworzenie dużej, zunifikowanej przestrzeni adresowej obejmującej zarówno pamięć RAM systemu, jak i część dysku twardego. Takie podejście pozwala Twojemu systemowi uruchamiać więcej i większe programy, nawet gdy może brakować fizycznej pamięci RAM w Twoim komputerze, aby to zrobić.
Technika została po raz pierwszy opracowana dla mainframów i minikomputerów, które musiały być dzielone między wielu użytkowników. Pamięć wirtualna oznaczała, że potrzeba było mniej pamięci fizycznej, co pozwalało klientom oszczędzać pieniądze, kupując maszyny z mniejszą ilością pamięci RAM.
System operacyjny, z pamięcią w postaci stron rozproszonych pomiędzy RAM a dyskiem (będę używać terminu „dysk” w odniesieniu do pamięci głównej, niezależnie od tego, czy jest to tradycyjny obracający się dysk twardy, czy SSD), może „wymieniać” te strony między pamięcią główną a dyskiem. System operacyjny będzie miał tendencję do próby utrzymania stron aktywnie używanych „wgranych” w RAM, czyli w fizycznej pamięci operacyjnej. Dzieje się tak dlatego, że RAM tradycyjnie był szybszy niż dysk, zwłaszcza w czasach, gdy SSD nie były powszechnie dostępne.
Takie podejście pozwala programom, a także częściom programów, które faktycznie używasz, być aktywnymi w szybkim RAM zamiast na wolnym dysku. Wyłączenie pamięci wirtualnej mogłoby paradoksalnie oznaczać wolniejszy system, ponieważ wszystkie aktywne programy musiałyby być przechowywane w pamięci. Wiele programów tworzy wiele stron podczas uruchamiania, ale według Linux.com jądro przeniesie je w tle, podczas gdy strony o wysokim priorytecie pozostaną w RAM przy użyciu pamięci wirtualnej.
Jeśli w systemie nie ma wystarczającej ilości fizycznej pamięci RAM, system operacyjny będzie ciągle wymieniać strony pamięci między RAM a dyskiem, nie nadążając, a problem ten jest jeszcze bardziej nasilony przez wolne prędkości tradycyjnych dysków twardych. Sprawia to, że system staje się praktycznie nieużywalny, problem znany jako „thrashing” (intensywne wymienianie stron). Thrashing spowodowany brakiem wystarczającej ilości RAM był powodem, dla którego pamięć wirtualna miała złą opinię wśród zaawansowanych użytkowników, a przynajmniej osób, które uważały się za ekspertów komputerowych, a niektórzy w ogóle jej nie wyłączali. To zły pomysł. Trzymanie aktywnie używanych części w RAM wraz z pamięcią wirtualną jest bardziej efektywne.
Inną główną kwestią związaną z pamięcią wirtualną przy nowoczesnym wdrażaniu dysków SSD jest możliwe przedwczesne zużycie SSD przy mniejszej ilości RAM, zwłaszcza w nowoczesnych laptopach, gdzie pamięć RAM jest przylutowana do płyty głównej i nie można jej rozbudować. Jest mniej dowodów na to, że jest to praktyczny problem przy normalnym użytkowaniu komputerów stacjonarnych. Jeśli wykonujesz intensywną pracę lub grasz w gry AAA, i tak będziesz potrzebować więcej RAM.
Co to jest przestrzeń wymiany?
Strony parkingowe w plikach lub partycjach
Obszar pamięci, który przechowuje strony wypchnięte na zewnątrz, jest znany jako przestrzeń wymiany.
Linux ma dwa podejścia do implementowania przestrzeni wymiany (swap). Najczęstsze jest przeznaczenie partycji dyskowej. Zasadą ogólną dla partycji swap było posiadanie dwukrotności fizycznej pamięci RAM w komputerze. Wciąż jest to to, co większość instalacji Linuxa zaproponuje domyślnie podczas partycjonowania dysku. Wadą tego podejścia jest to, że jeśli zwiększysz pamięć RAM, będziesz musiał również powiększyć partycję swap. Partycje swap są często pierwszymi partycjami na dyskach ze względu na sposób działania tradycyjnych dysków twardych. Szybciej jest przeszukiwać w kierunku środka talerza, dlatego to właśnie tam programy instalacyjne umieszczają partycję swap.
Innym podejściem jest plik wymiany, który, jak sama nazwa wskazuje, jest dedykowanym plikiem w systemie plików Linux. Jest bardziej elastyczny niż dedykowana partycja wymiany, ponieważ można go łatwo zmienić, jeśli zmieni się fizyczna pamięć RAM. To podejście jest używane przez system Windows do pamięci wirtualnej. Jest znacznie mniej powszechne niż podejście z dedykowaną partycją w świecie Linuxa.
Partycja wymiany czy plik wymiany?
Tradycja kontra elastyczność
Podejście z dedykowaną partycją wydaje się być najbardziej powszechne w Linuksie. Większość ludzi prawdopodobnie zrobi po prostu to, co robi ich program instalacyjny Linuksa. Zdecydowana większość instalacji Linuksa wciąż preferuje partycje swap.
Jeśli często zwiększasz pamięć RAM lub po prostu wolisz prostszy schemat partycji, możesz wybrać plik wymiany. Możliwe jest również uruchomienie systemu bez jakiejkolwiek przestrzeni wymiany, ale możesz napotkać całkowity brak pamięci. Systemy Linux bez żadnej wymiany zazwyczaj stosowane są w niszowych zastosowaniach, takich jak kontrolery systemów wbudowanych.
Ile miejsca na swap?
Przemyślenie tradycyjnej zasady „dwa razy więcej fizycznej pamięci RAM”
Tradycyjna zasada dotycząca ilości miejsca wymiany (swap) w systemie mówiła, że powinno go być dwa razy więcej niż pamięci fizycznej. Pochodziło to z czasów, gdy maszyny miały znacznie mniej pamięci RAM niż obecnie. Może to nadal być prawdą, ponieważ nowoczesne systemy operacyjne, w tym Linux, są znacznie bardziej wydajne. Większość współczesnych maszyn obsługuje tryb hibernacji, który wykorzystuje przestrzeń swap do przechowywania stanu systemu. Jeżeli korzystasz z tej funkcji, więcej miejsca w swapie jest lepsze. Ilość pamięci fizycznej powinno się uważać za minimalną ilość wymaganej przestrzeni swap.
Jedyny sposób naprawienia thrashingu
System się przycina? Prawdopodobnie potrzebujesz więcej pamięci RAM
Jeżeli cierpisz na thrashing, możesz pomyśleć o próbie dostosowania „swappiness” systemu, czyli jak agresywnie będzie wymieniać strony pamięci. Byłoby to tylko tymczasowe rozwiązanie.
Może Ci się nie spodobać odpowiedź, zwłaszcza przy cenie pamięci RAM, ale jedynym niezawodnym sposobem na naprawienie wymiany jest dodanie więcej pamięci RAM
Niedoceniony bohater Linuksa
Pamięć wymiany jest czymś, o czym większość osób korzystających z nowoczesnych systemów Linux nie myśli, dopóki coś nie pójdzie nie tak. Pamięć wirtualna umożliwia korzystanie z nowoczesnych pulpitów, ale jej możliwości są ograniczone. Zrozumienie, jak działa i jakie ma ograniczenia, pomoże ci skuteczniej korzystać z pamięci wymiany w Linux podczas następnej instalacji.








