Skip to content


Lekcja 15: Stronicowanie

Porozmawiajmy na temat stronicowania. Tomy stronicowe są “przedłużeniem” pamięci pod kontrolą VMM. Zarówno pamięć rzeczywista jak i wirtualna jest podzielona na jednostki o rozmiarze 4KB znane jako fary i strony. W danym czasie maszyna może mieć więcej pamięci wirtualnej niż pamięci rzeczywistej. Nadmiar pamięci wirtualnej jest przechowywany na dysku (w tomie logicznym type=paging). Razem z rosnącym zapotrzebowanie na pamięć wirtualną rośnie zużycie stronicowania, które nie kontrolowane, ewentualnie doprowadzi do nieoczekiwanego zatrzymania systemu. Osiągnięcie tego stanu, często objawia się obecnością następującej informacji fork failed: not enough memory ….. Z reguły w takim momencie nie pozostaje nic innego do zrobienia ale reboot maszyny. Możesz spróbować wydać jakieś polecenie po czym poczekaj przez kilka minut, być może zostanie one wykonane albo i nie…. Kto wie, może dzisiaj jest twój szczęśliwy dzień?

Od wprowadzenie parametru jądrowego (ale jaja z tym polskim językiem:-)) lru_file_repage=0 częste problemy wynikające z zużycia pojemności stronicowej należą już do przeszłości. Teraz pojawiają się one tylko sporadycznie , tak jak wczoraj, kiedy jedna z maszyn należących do mojego kolegi Annwoya wysłała email oznajmiającą stan znacznego zużycia pojemności stronicowej. Poniżej możesz zobaczyć, w jaki sposób on wybrnął z tej sytuacji.

Powiedzmy, że rootvg ma następującą topografię (dla przejrzystości pokazuję wyłącznie informacją dotyczącą stronicowania):

MarcoPolo:/root> lsvg -l rootvg
rootvg:
LV NAME   TYPE  LPs PPs PVs LV STATE MOUNT POINT
paging00 paging 122 122 2 open/syncd    N/A
hd6      paging 112 112 2 open/syncd    N/A
MarcoPolo:/root>

Wartość zużytego stronicowania można określić wydając polecenie:

MarcoPolo:/root>lsps -s
Total Paging Space Percent Used
29952MB 89%

To pokazuje duże zużycie, coś należy z tym zrobić, bo w przeciwnym razie, maszyna wkrótce przestanie działać i nie będziesz miał do niej dostępu. Musisz dać sobie wystarczająco dużo czasu do określenia powodu tej sytuacji – czego wynikiem jest takie duże zużycie stronicowanie? Poniższa metoda jest sprawdzona i daje dobre rezultaty.

Pierw, stwórz nowy tom logiczny rodzaju paging. Który dysk należy użyć do tego celu? Dowolny dysk, to nie ma żadnego znaczenia w tym momencie. Jeżeli możesz daj temu nowemu tomowi taki sam lub zbliżony rozmiar do już istniejących tomów stronicowych.

MarcoPolo:/root>mkps -n -s 100 rootvg

Argument -n powoduje natychmiastową aktywizację tego tomu.

MarcoPolo:/root>lsps -a
Page Space Physical Volume Volume Group  Size %Used Active Auto Type
paging01       hdisk0        rootvg     12800MB 45   yes   yes   lv
paging00       hdisk1        rootvg     15616MB 46   yes   yes   lv
hd6            hdisk1        rootvg     14336MB  1   yes   yes   lv
MarcoPolo:/root>

Od tego momentu, system operacyjne zacznie równoważyć zużycie pomiędzy tymi trzema tomami wykorzystując do tego celu pojemność (paging01) nowego tomu, w rezultacie zużycie każdego z nim ulegnie zmniejszeniu. Ten proces może trwać przez kilka czy kilkanaście minut. Czekając na jego zakończenie, możesz rozejrzeć się z odpowiedzią na dzisiejsze pytanie “kto to zrobił?”. Co, kto lub razem jest odpowiedzialny za twoje wysokie ciśnienie i szybkie bicie serca?

W celu zidentyfikowania największych użytkowników (procesów)stronicowania, możesz wydać polecenie svmon -Pgt5 | grep -p Pid | grep ‘^.*[0-9]’. Zgodnie z twoimi oczekiwaniami, to polecenie wyświetli pięciu (5) największych urzytkowników.

Wyłącz a później nawet usuń zrobiony przez ciebie tom stronicowy po tym jak one wszystkie są wykorzystane (%Used) w identyczny lub prawie identyczny stosunku.

MarcoPolo:/root> swapoff /dev/paging01; rmps paging01

W twoim przypadku, nowy tom stronicowy będzie najprawdopodobniej nazwany inaczej niż paging01 – to jest uzależnione od danego system.


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.