Linux Zwrotu pamięci jądra

Linux Zwrotu pamięci jądra

Część pierwsza. Przestrzeń zamiany

Aby poprawnie działać, komputer zależy od posiadania odpowiedniej ilości pamięci. Po prostu powiedzenie, że nigdy nie może być wystarczająco dużo. Im bardziej instalowana jest pamięć fizyczna, tym jest bardziej kosztowne. Przeważnie wynik jest sprytny kompromis między kosztami a prędkością, aby uzyskać dostęp do komórek pamięci.

Aby osiągnąć ten kompromis UNIX/Linux Systems połącz dwa typy pamięci - pamięć fizyczna (RAM) i przestrzeń zamiany. W sumie nazywa się to wirtualną pamięcią systemu obliczeniowego. Pamięć fizyczna jest raczej droga, ale szybka i dostępna w nanosekundach. Natomiast pamięć swapowa jest raczej tania, ale powolna i dostępna w ciągu milisekund.

Istnieje kilka powodów, dla których pamięć zamieniania jest przydatna. Po pierwsze, czasami pojedyncze procesy potrzebują więcej pamięci niż system fizycznie jest właścicielem i może dostarczyć więcej procesów, które tego wymagają. W rezultacie wszystkie dane, które są przechowywane w pamięci fizycznej. Teraz wchodzi przestrzeń swapowa, a do przestrzeni swapowej przesyłane są wybór stron pamięci.

Po drugie, nie wszystkie dane są potrzebne w pamięci w tym samym czasie. Dlatego mniej używane strony pamięci są zaparkowane na przestrzeni wymiany, aby mieć jak najwięcej bezpłatnej pamięci fizycznej. Ta metoda nazywa się najstarszym niedawno używanym algorytmem wymiany strony (LRU) [1].

Rodzaje zamiany

Przestrzeń zamiany istnieje w dwóch wariantach. Wersja 1 to osobna partycja dysku, która jest tak zwaną partycją zamiany. Na tej partycji nie ma plików, ale informacje o pamięci (zrzuty). Po prostu wersja 2 to plik na dysku, który znajduje się w systemie plików na twoim harddisk. Wersja 1 jest bardzo powszechna w systemach Unix/Linux, BSD i OS X, podczas gdy wersja 2 istnieje w systemach uruchamiających Microsoft Windows. Wersja 2 można również włączyć w systemach UNIX/Linux (patrz poniżej).

Aby zobaczyć, która przestrzeń zamiany jest aktywna w systemie Unix/Linux, uruchom następujące polecenie w terminalu:

$ /sbin /swapon -s
Używany priorytet typu nazwy pliku
/Dev/DM -3 partycja 16150524 316484 -1
$

Jako alternatywę możesz wysłać żądanie do systemu plików PROC i uruchomić polecenie CAT /PROC /SWAPS

Ten system Linux ma partycję zamiany o wielkości około 15 GB, w której używanych jest ponad 300m, obecnie. Kolumna priorytetowa pokazuje, która przestrzeń zamiany do użycia najpierw. Wartość domyślna to -1. Im wyższa wartość priorytetu, tym wcześniej ta przestrzeń zamiany jest brana pod uwagę. Opcja -s to krótka wersja -summary. Ta opcja jest przestarzała i zaleca się użycie opcji -Show w następujący sposób, zamiast tego:

$ /sbin /swapon --show = nazwa, typ, rozmiar, używany, prio
Rozmiar typu nazwy używany prio
/dev/dm -3 partycja 15,4 g 307,1m -1
$

Opcja -Show akceptuje listę wartości reprezentujących nagłówki kolumn. Aby osiągnąć określoną kolejność wyjściową, wybierz żądane nagłówki kolumn i jej sekwencję.

Zamień rozmiar

Zasadniczo rozmiar przestrzeni zamiany zaleca się, aby być dwa razy więcej niż system ma pamięć fizyczną. Pamiętaj o tym w przypadku konfiguracji ogólnego przeznaczenia i komputerów stacjonarnych. W przypadku serwerów UNIX/Linux o znacznie większej pamięci fizycznej możesz obniżyć rozmiar przestrzeni swapowej do 50% pamięci RAM. Laptopy, które mogą hibernacja, muszą być nieco większe niż pamięć fizyczna.

Instalacja

W przypadku partycji zamiany zaleca się myśleć o przestrzeni zamiany od początku podziału dysku na pojedyncze partycje lub pozostawienie wystarczającej ilości nieużywanej przestrzeni dysku, aby go użyć później, ostatecznie. Zwykle podczas konfiguracji dysków, które można użyć, procedura konfiguracji pyta o rozmiar przestrzeni wymiany. Jako przykład, na Debian Gnu/Linux wygląda to w następujący sposób:

Jak wspomniano powyżej, tak długo, jak masz miejsce na nowe partycje na swoim harddisk, które możesz utworzyć i dołączyć partycje zamiany za pomocą poleceń takich jak Fdisk i Swapon.

Alternatywnie, przestrzeń zamiany można również włączyć później jako plik swap. Linux obsługuje w ten sposób, abyś mógł tworzyć, przygotowywać i zamontować w sposób podobny do mody zamieniania partycji. Zaletą tego sposobu jest to, że nie musisz przedziałać dysku, aby dodać dodatkową przestrzeń wymiany.

Jako przykład tworzymy plik o nazwie /swapfile o rozmiarze 512 m i włączamy to jako dodatkową przestrzeń wymiany. Po pierwsze, za pomocą polecenia DD tworzymy pusty plik. Po drugie, MKSWAP używa tego pliku, aby przekształcić go w styl swap. Możesz zauważyć, że zawartość pliku jest traktowana jak partycja i przypisany jest odpowiedni UUID. Po trzecie, włączamy to za pomocą swapon. Wreszcie, polecenie swapon -show wyświetla dwa wpisy zamiany - partycja i nowo utworzony plik.

# dd if =/dev/zero =/swapfile bs = 1024 liczba = 524288
524288+0 zestawów danych w
524288+0 zestawów danych
536870912 BYTES (537 MB), 0,887744 S, 605 MB/s
# mkswap /swapfile
Konfigurowanie Swapspace wersja 1, rozmiar = 524284 kib
Brak etykiety, UUID = E47AB7FE-5EFC-4175-B287-D0E83BC10F2E
# swapon /swapfile
# swipon --show = nazwa, typ, rozmiar, używany, prio
Rozmiar typu nazwy używany prio
/dev/dm -3 partycja 15,4 g 288,9m -1
/plik zamiennika 512m 0b -2
#

Aby użyć tego pliku swap w czasie rozruchu, dodaj jako administrator następujący wiersz do pliku /etc/fstab:

/Swapfile Brak swap SW 0 0

Wyłączenie przestrzeni swapowej

Przynajmniej, ale nie ostatnie, jest jedno polecenie, aby wyłączyć plik swap, ponownie. Polecenie jest wywoływane Swapoff. Wymaga jednego parametru, który wskazuje, że urządzenie swapowe zostało wyłączone. To polecenie wyłącza wcześniej aktywowany plik swap:

# Swapoff /Swapfile

Również, Swapoff może współpracować z UUID systemu plików. Robić Swapoff działaj w ten sposób, użyj opcji -U a następnie UUID według systemu plików. W przypadku konieczności wyłączenia wszystkich przestrzeni wymiany jednocześnie opcji -A (długa opcja -cała) jest dość przydatna. Pełne polecenie jest Swapoff -a.

Strojenie ekosystemu zamiany

Zaczynając od zwolnienia jądra Linux 2.6 Wprowadzono nową wartość. Jest to przechowywane w zmiennej /proc/sys/vm/wapinachi kontroluje względną wagę przyniesioną do zamiany pamięci wykonawczej, w przeciwieństwie do zrzucania stron pamięci z pamięci podręcznej strony systemowej [2]. Wartość domyślna to 60 (procent bez pamięci przed aktywowaniem zamiany). Im niższa wartość, tym mniejsza wymiana jest używana, a im więcej stron pamięci jest przechowywanych w pamięci fizycznej.

  • 0: swap jest wyłączony
  • 1: Minimalna ilość zamiany bez całkowitego wyłączania
  • 10: Zalecana wartość w celu poprawy wydajności, gdy w systemie istnieje wystarczająca pamięć
  • 100: Agresywna zamiana

Aby ustawić wartość tymczasowo ustaw wartość w systemie plików /proc w następujący sposób:

# echo 10>/proc/sys/vm/swappiness

Jako alternatywę możesz użyć Sysctl polecenie w następujący sposób:

# sysctl -w vm.Swappiness = 10

Aby ustawić wartość na stałe, dodaj następujący wiersz do pliku /etc/sysctl.Conf:

Vm.Swappiness = 10

Jest nadal aktualna?

Możesz zapytać, dlaczego radzimy sobie z tym tematem. Nowoczesne komputery mają wystarczającą pamięć fizyczną - więc dlaczego musimy się tym przejmować? Istnieje kilka powodów, dla których ta technologia jest warta więcej niż myśl.

Pamiętaj, że przez chwilę trzymasz się swojego komputera, ale możesz od czasu do czasu aktualizować oprogramowanie, którego używasz. Obecnie zarówno sprzęt, jak i kombinezon oprogramowania. W przyszłości może się to zmienić i potrzebujesz więcej pamięci niż teraz. O ile aktualizację lub kupowanie nowego sprzętu Partycja zamiany może zaoszczędzić trochę pieniędzy.

Być może słyszałeś o funkcji o nazwie SUPEND to Disk lub tryb hibernacji [3]. Twoja maszyna będzie spać. Zanim to zrobi, musi gdzieś przechowywać swój obecny stan. Teraz przestrzeń zamiany wchodzi w grę i działa jako kontener, aby zachować te dane. Gdy tylko maszyna budzi się następnym razem, gdy całe dane zostaną odczytane z miejsca zamiany, załadowane do pamięci i możesz kontynuować pracę tam, gdzie się zatrzymałeś.

System, jeśli posiadanie tylko jednego stałego urządzenia pamięci, będzie musiał odczytać i zapisać pliki podczas zamiany na tym samym urządzeniu. Zobaczysz ogromną poprawę, jeśli masz drugie urządzenie i możesz oddzielić urządzenie swapowe od sprzecznych dostępu do plików.

Plik swap musi przekazywać dane przez system plików. To dodaje warstwę pośredniego, aby wyglądało na to, że istnieje przylegająca logiczna przestrzeń adresu, z którą będzie. To dodaje dodatkowe obciążenia pamięci i cykle procesora. Otrzymasz najlepsze wyniki za pomocą surowej partycji zamiany.

Wniosek

Nawet dzisiaj wiedza na temat zamiany jest niezbędna. Temat ten jest częścią wiedzy, która jest wymagana do zdania certyfikatu Linux Professional Institute poziom 1 (LPIC 1). Większość egzaminów zawiera jedno lub dwa pytania na ten temat.

Przestrzeń zamiany pomaga systemowi Linux (jądro) w szybkim zorganizowaniu pamięci, jeśli istnieje jej potrzeba. Aby być z tobą otwarte, przestrzeń zamiany nie jest absolutnie konieczna na wypadek, gdyby twój system miał mnóstwo pamięci RAM. W przypadku sytuacji kryzysowych pomaga systemowi przetrwać. Dlatego nigdy nie opuściłbym ścieżki tradycyjnej konfiguracji bez miejsca zamiany.

Połączenie swap i SSD jest omawiane w kontrowersyjny sposób, ponieważ liczba zapisów dysku na SSD jest dość ograniczona. Zarówno pliki zamiany, jak i tymczasowe są zbudowane do zapisywania wielu danych. Z drugiej strony, współczesne dyski SSD mają więcej niż wystarczającą dodatkową przestrzeń (7%), aby poradzić sobie z awarią sektora. Być po bezpiecznej stronie: jeśli to możliwe, masz osobną wymianę konwencjonalnego dysku twardego - nie używaj Ramdisk ani SSD, przynajmniej do wymiany. Twój system Linux podziękuje za tę decyzję.

Aby uniknąć umieszczenia miejsca na rozdzielczości SSD, możesz użyć ZRAM, zamiast tego [5,6]. Jest to wirtualna zamiana skompresowana w pamięci RAM, o nazwie ZSWAP. Ta technologia umożliwia skompresowane urządzenie blokowe w pamięci. Jak tylko nie ma już przesyłania na to urządzenie blokowe. Powoduje to mniejsze wykorzystanie zamiany i pomaga również przedłużyć życie twojego harddisk.

Linki i referencje

  • [1] Andrew. S. TANENBAUM: Algorytm wymiany strony najnowocześniejszy (LRU) w nowoczesnych systemach operacyjnych
  • [2] Wikipedia: https: // en.Wikipedia.Org/Wiki/Swappiness
  • [3] Zarządzanie energią/zawieszenie i hibernacja, Arch Linux Wiki
  • [5] Zram na Debian Gnu/Linux
  • [6] Archiwum jądra Linux o Zramie

Linux Memory Management Series

  • Część 1: Zarządzanie pamięcią jądra Linux: Przestrzeń zamiany
  • Część 2: Polecenia do zarządzania pamięcią Linux
  • Część 3: Optymalizacja użycia pamięci Linux

Podziękowanie

Autor chciałby podziękować Mandy Neumeyer i Gerold Rupprecht za ich wsparcie podczas przygotowywania tego artykułu.