Bądź: Wyszukaj na stronie z użyciem Google
reklama:

niedziela, 28 września 2008

Optymalizacja partycji SWAP w Ubuntu

Autor: , 15:48, niedziela, 28 września 2008


Podczas instalacji systemu Ubuntu (jak w większości Linuksów i UNIXów) tworzona jest partycja wymiany tzw. partycja swap. Służy ona do sztucznego zwiększania ilości pamięci RAM poprzez zapis niektórych plików na dysku twardym komputera zamiast do pamięci operacyjnej. Dzięki temu procesowi możliwe jest przydzielenie procesom większej ilości pamięci niż w rzeczywistości posiadamy. Niestety wszystko ma swoje wady i zalety. Słabą stroną tego rozwiązania jest zwiększone obciążenie dysku i kilkukrotnie wolniejszy odczyt i zapis danych.


Nadmierne obciążenie dysku może doprowadzić do spowolnienia pracy komputera lub w ekstremalnych przypadkach nawet do jego zawieszenia. Powinniśmy więc unikać zapisu danych tymczasowych na dysku, szczególnie gdy posiadamy do dyspozycji 1 GB lub więcej pamięci RAM.

Im rzadziej system korzysta z dysku tym płynniej pracuje nasz komputer. Do zmiany wartości tego współczynnika w Ubuntu służy parametr vm.swappiness. Niestety przy dużej ilości pamięci jest on przydzielany nieprawidłowo, dlatego sami musimy zadbać o poprawne parametry ustawień. Opcja vm.swappiness domyślnie przyjmuje wartość 60. Im jest ona mniejsza tym system korzysta mniej z pamięci swap, lub gdy przyjmie wartość 0 całkowicie ją wyłącza.

Wartość parametru na naszym komputerze możemy sprawdzić wpisując w konsoli polecenie:
sysctl vm.swappiness

Czas pobawić się trochę wartościami tego parametru. Przykładowe polecenie ustawiające nowy parametr to:
sudo sysctl vm.swappiness=5

W tym przypadku 5 to wartość parametru. 5 z 60 to niewiele więc system będzie korzystał za swapa tylko w ostateczności.

Powyższe polecenie ma podstawową wadę. Otóż po restarcie komputera system znowu zastosuje domyśle parametry. By temu zaradzić musimy na końcu pliku:
sudo gedit /etc/sysctl.conf

dokleić linijkę:
vm.swappiness=5

Teraz nawet po ponownym uruchomieniu komputera parametry pamięci swap pozostaną takie jak sobie życzymy.


Komentarze 24 comments
Paweł pisze...

Bardzo podoba mi się pomysł wyciągania w formie poradników informacji z forum na strony typu tego blogu.

Właśnie zastanawiam się, czy przy 4GB pamięci potrzebny mi w ogóle swap - nie grywam w pamięciożerne gry typu Ghotic 3 :) a pewnie tez by wystarczyło :).
Może by go tak sformatować Zawsze to jeden więcej Gb na dysku do zapchania zdjęciami :).
Czy przypadkiem przy instalacji Ubuntu nie jest wymuszana instalacja swapa? Bo nie pamiętam...

Adrian pisze...

Swap jest wybagany przy instalacji Ubuntu jednak wątpie by system z niego korzystał przy 4GB pamięci RAM :)

Anonimowy pisze...

"Swap jest wybagany przy instalacji Ubuntu" taaaaaa, jak swap jest wymagany do instalacji ubu to ja jestem ks proboszcz lol

Adrian pisze...

No cóż księże proboszczu ;)

Dwimenor pisze...

Nawet przy 2 gb ramu i swappiness 60 nie wykorzystuje swapa praktycznie wcale. Nie mówiąc o 4gb.

Ale wiecie, wywalenie swapa nie jest do końca dobrym pomysłem. W końcu to tam przy hibernacji/wstrzymaniu ląduje zawartość RAM. Fakt, można to rozwiązać przez plikopartycję ale to odwracanie kota ogonem.

Marek pisze...

Panowie, lada chwila wyjdzie 8.10... zastanawiam się właśnie ile dać na SWAP, przy 2GB ramu. Można prosić o jasną odpowiedź. Bo po tym artykule naprawdę zastanawiam się czy w ogóle dawać :-) Chodź czytając różne fora... najwięcej napotkałem się na liczbę w stosunku 1 do 1,5 na swap.

niedzwiedz pisze...

@Marek
Wiesz, zależy od dysku, ale ja bym dał 1,5-2 GB. Jak ktoś już napisał - SWAP jest używany do hibernacji a już miałem pare razy taką sytuację, że przez zapchany SWAP i RAM nie chciał komp się hibernować :/

Szamot83 pisze...

Ja przy 2GB ram'u mam 512 Mb swapu. Praktycznie w ogóle nie jest on wykorzystywany.
Mam też laptopa z 384 mb ram'u i też mam tam 512 mb swap'a.
Różne rzeczy o swapie czyta się na różnych stronach. Każdy "specjalista" ma podaje inną wartość. Na zagranicznych stronach znajdziesz bardziej spójne odpowiedzi. Ja ustawiłem zgodnie z tym co przeczytałem. Nie są to serwery, więc nie jest potrzebny bardzo duży swap.

patrycju5z pisze...

Przy moich 4gb w laptopie nigdy nie widzialem aby system korzystal ze swap.

ffatman pisze...

Najwyrazniej tajemnica tkwi w slowie "optymalizacja" tj. optymalizacja ze wzgledu na co. Serwer? Desk? Stary sprzet? Nowy sprzet? Malo pamieci? Duzo pamieci? Etc.

O ile pamietam swap jest wymagany lub nie zalezy jaka droga postepujesz. Przy ostatniej instalacji nie-powiem-czego swap juz mialem i home to zostawilem partycje (choc zawatosc home dodaje recznie z sbackupu - deb nie ubu).

Vilk pisze...

Panowie molestujecie czy dawac swap czy nie w tej chwili wiekszosc z nas posiada tyle miejsca na dysku ze 1-2 gb mniej lub wiecej nie robia roznicy. Ustawienie zeby system zadziej uzywal swapa jest ok ale kasowanie go wogole to juz przesada przynajmniej ja tak uwazam :) U mnie w lapku mam 4gb ramu swapa 6gb dyski 500gb i nie martwie sie o nic ;)

Paweł pisze...

"Swap jest wymagany przy instalacji Ubuntu" precyzyjniej zdefiniowanie partycji na swap :)


Wielkośc dysku no cóż, ja w lapku mam 80Gb i w sumie te 1Gb partycji swap nie przeszkadza mi zbytnio, ale jak nie potrzebuje swapa to po co trzymać bezużytecznie przestrzeń dyskową

nie wiem, ale system Windows na pewno potrzebuje i chętnie korzysta z pagefile.sys - co chyba jest odpowiednikiem swapa i wyliczenia że stosunek RAM/pagefile.sys = 1/1-1,5 pochodzą z tamtąd - może, żeby nie powiedzieć na pewno, w Linuksie jest lepsze zarządzanie pamięcią

Anonimowy pisze...

Swap jest potrzebny czasami. Ja np. odpalam wirtualne maszyny, każda wcina RAM jak bułeczki. Jeżeli zainstalujesz sobie Internet Explorera na Ubuntu, też potrzebny będzie swap.

Ten artykuł mnie zaskoczył trochę. Nie wiedziałem, że tak łatwo dostępna jest opcja "regulacji" swapowania. Myślałem, że w Linuksach domyślnie jest to ustawione tak, żeby zawsze RAM był pełen.

musk pisze...

literówki:
dlatego (a nie "dla tego") (3 akapit)
niewiele (a nie "nie wiele") (przedostatni akapit)

Adrian pisze...

@musk poprawione. Jesteś jakimś korektorem czy tylko fanatykiem poprawnej pisowni?

batwing pisze...

to może i ja swój kamyczek: "Opcjavm.swappiness" -> "Opcja vm.swappiness" ;)

Adrian pisze...

@batwing poprawiłem.

daikiinoue pisze...

SWAP się przydaje przy dużej pamięci RAM.
Zakłada się TMPFS na "/tmp" przez co wszystkie tymczasowe pliki lądują w RAM. Również różne wirtualne maszyny dostaną kopa jeśli "/tmp" będzie w TMPFS ustawiony. Ale to wcina pamięć RAM i wtedy się przydaje SWAP ;P

Ryniek pisze...

Ja przy 2GB RAM'u mam 1,3 GB SWAP. A i tak RAM jest wykorzystywane w 11%, więc postanowiłęm ustawić sobie sysctl vm.swappiness na 5 i teraz wykorzystuje 24% RAM. RAM nie może się marnować!


;)

Pozdrawiam

Anonimowy pisze...

Mam 512 ramu, przy Waszych 4Gb czuję się jak dinozaur :) Czy ustawianie swap poniżej wartości 60 jest sensowne? Co mogę przez to osiągnąć?

qrdziel pisze...

jest artykuł w Linux+ z lipca 2004r na stronie 14 pod tytulem: Swapować, albo nie swapować.
Odradzają w nim usówanie partycji swap
qrdziel@o2.pl

Anonimowy pisze...

U mnie sporo ramu bylo nie wykorzytane (okolo 1 GB), wiec ustawilem sysctl vm.swappiness na 1 , niestety zaczely dziac sie dziwne rzeczy, system namietnie zaczal korzyatac z dysku twardego zaczal sie mulic, czasami nawet przez 15 minut lampka od dysku sie swiecila, komp sie strasznie zamulal nic nie mozna bylo robic. Pozniej wszystko wracalo do normy. Teraz ustawilem na 50i jak narazie jest lepiej ;)

Anonimowy pisze...

Może ktoś wie jak na stałe zapisać uzycie SWAP na wybranym przezemnie poziomie w openSUSE?Na forum SUSE siedzą jacyś powolni ludzie.Jak wyedytowac podobny plik do tego w SUSE : sudo gedit /etc/sysctl.conf ?

Anonimowy pisze...

swap lepiej niech zostanie. ale .... pamiętajmy że czy ze swapem czy bez, pamięć jest zwirtualizowana. każda strona pamięci, nieważne czy na swap czy w RAM musi mieć swój deskryptor w ..... RAM. czyli .... Im więcej swapa, tym więcej ramu zajęte przez deskryptory pamięci, czyli mniej fizycznego ramu do efektywnego użycia.
swap jest potrzebny, gdyż o RAM konkurują w sumie dwie rzeczy..... pamięć procesów i bufory dyskowe. reszta jest tu mało istotna. parametr vm.swappiness w zasadzie określa czy kernel będzie bardziej preferował bufory dysku, czy pamięć procesów. w przypadku dużej ilości pamięci, przydział dużych buforów na dysk mija się z celem, dlatego warto obniżyć parametr aby kernel nie wyswapowywał procesów. i to jest cała wielka "filozofia".
można ten parametr ustawić na wartość np. 10-20 przy dużej ilości ramu, wtedy wyswapowuje te kawałki pamięci procesów które wcale lub praktycznie wcale nie są używane.

jeśli chodzi o hibernację, faktycznie swap>=RAM, ale nie za dużo. nie polecam swap>2xRAM, uznałbym to za górną graniczą wartość, ze względu na niepotrzebne zajęcie ramu przez deskryptory pamięci.

w przypadku windows jest nieco inaczej. jest tam po prostu swapfile który domyślnie na początku jest mały, i w razie gdy system stwierdzi brak pamięci (ram+swap) wtedy automatycznie powiększa swap. no chyba że to sami zmienimy. jeśli chodzi o hibernację, jest to oddzielny plik. w linux jest to wspólna przestrzeń, co oznacza że nie zahibernujemy systemu jeśli procesy zużyją cały ram i swap naraz.

Prześlij komentarz


Popularne posty

Etykiety