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.