Ile miejsca SWAP w systemie 2-4 GB?

53

Jak zdecydować, jaki rozmiar dokonać wymiany na nowym komputerze z systemem Linux (Debian) z 2-4 GB pamięci RAM? Czy naprawdę potrzebuję przestrzeni wymiany?

Krzyż
źródło
3
2-4 GB nie jest już tak naprawdę wysoką pamięcią 5 lat później.
Finanse Fifi
@KasperSouren Nie, nie jest. W tym czasie była to spora kwota.
C. Ross

Odpowiedzi:

54

Istnieje wiele sposobów, aby dowiedzieć się, ile wymiany używasz w maszynie. Typowe sugestie wykorzystują formuły oparte na pamięci RAM, takie jak 2 x RAM, 1,5 x RAM, 1 x RAM, .75 x RAM i .5 x RAM. Wiele razy formuły różnią się w zależności od ilości pamięci RAM (więc pudełko z 1 GB pamięci RAM może używać 2 x wymiany pamięci RAM (2 GB), podczas gdy pudełko z 16 GB pamięci RAM może korzystać z wymiany .5 x pamięci RAM (8 GB).

Inną rzeczą do rozważenia jest to, do czego będzie używane pudełko. Jeśli będziesz mieć dużą liczbę równolegle działających procesów uruchomionych na komputerze, ale znaczna ich liczba będzie bezczynna przez pewien czas, wówczas dodanie dodatkowej wymiany ma sens. Jeśli zamierzasz uruchomić niewielką liczbę krytycznych procesów, dodanie dodatkowego zamiany ma sens (może się to wydawać sprzeczne z intuicją, ale wyjaśnię to za chwilę). Jeśli korzystasz z pudełka jako pulpitu, dodanie dodatkowej wymiany ma sens.

Jeśli chodzi o to, czy powinieneś zamienić swap, tak, powinieneś. Zawsze powinieneś uwzględniać przestrzeń wymiany, chyba że naprawdę wiesz, co robisz i naprawdę masz ku temu dobry powód.

Zobacz, jak działa jądro Linuksa, zamiana nie jest używana tylko wtedy, gdy wyczerpałeś całą pamięć fizyczną. Jądro Linux pobierze aplikacje, które nie są aktywne (śpią), a po pewnym czasie przeniesie aplikację w celu zamiany z rzeczywistej pamięci. W rezultacie, gdy potrzebujesz tej aplikacji, nastąpi chwilowe opóźnienie (zwykle tylko sekunda lub dwie), podczas gdy pamięć aplikacji jest odczytywana z zamiany na RAM. I zwykle jest to dobra rzecz.

Umożliwia to uśpienie nieaktywnych aplikacji, zapewniając dostęp do dodatkowej pamięci RAM dla aktywnych aplikacji. Ponadto Linux użyje dowolnej dostępnej (nieprzydzielonej) pamięci RAM na komputerze jako pamięci podręcznej dysku, dzięki czemu większość (powolnych) operacji na dysku jest szybsza i bardziej responsywna. Zamiana nieaktywnych procesów zapewnia większą pamięć podręczną dysku i ogólnie przyspiesza pracę komputera.

Wreszcie, spójrzmy prawdzie w oczy, miejsce na dysku jest tanie. Bardzo tanie. Naprawdę nie ma żadnego dobrego powodu, aby nie przesuwać (względnie) niewielkiej ilości miejsca na zamianę. Gdybym pracował z 2 GB - 4 GB pamięci RAM na komputerze, prawdopodobnie ustawiłbym przestrzeń wymiany na przynajmniej równą pamięci RAM. Gdyby było mniej niż 2 GB pamięci RAM, nadal korzystałbym z co najmniej 2 GB wymiany.

AKTUALIZACJA: Jako doskonały komentarz wspomniany (i zapomniałem go dołączyć), jeśli używasz laptopa lub komputera stacjonarnego, który możesz chcieć przełączyć w tryb hibernacji (Suspend to Disk), to zawsze chcesz przynajmniej tyle samo zamień jak masz pamięć. Miejsce wymiany zostanie wykorzystane do przechowywania zawartości pamięci RAM w komputerze podczas „uśpienia”.

Christopher Cashell
źródło
22
Świetna odpowiedź, ale zapomniałeś tylko jednej rzeczy. Jeśli jest to komputer stacjonarny lub laptop, upewnij się, że zamiana jest co najmniej tak duża, jak masz pamięć RAM, abyś mógł hibernować komputer. Oszczędza to pamięć RAM do zamiany.
Sander Marechal
4
Wspaniały post. Sander pobił mnie do jedynej rzeczy, którą chciałem do tego dodać. Pomyślałem o jednym dodatkowym elemencie, jeśli masz wiele dysków, umieszczenie wymiany na dysku, na którym nie ma reszty aktywnych systemów plików, może poprawić wydajność, ponieważ nie będzie tak wiele konfliktów.
GreenKiwi
jak dowiedziałem się latem ubiegłego roku, jeśli korzystasz z Javy, musisz mieć dużo swapów
warren
Jeśli użytkownik ma dużo więcej pamięci RAM niż ilość, którą faktycznie wykorzysta (16 GB / 32 GB) na 100% bezawaryjnym komputerze stacjonarnym (bez hibernacji), to czy nadal sugerujesz, aby poprosić o przetwarzanie SWAP? Wydaje mi się, że pozostawienie wszystkiego w pamięci RAM przyniosłoby korzyści, gdybyś nigdy nie zbliżał się do jego pojemności.
earthmeLon
1
@earthmeLon - Sugerowałbym jeszcze trochę wymiany. Dyski są obecnie duże i tanie, więc utrata kilku GB miejsca na dysku do wymiany jest znikoma. Posiadanie pewnej przestrzeni wymiany daje polisę ubezpieczeniową na wypadek, gdyby coś pochłonęło więcej pamięci RAM, niż się spodziewasz.
Christopher Cashell
17

Red Hat zaleca następującą formułę dla serwerów z dużą ilością pamięci RAM:

if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB

Jeśli twój system ma 1 GB pamięci RAM, twoja zamiana będzie wynosić 2 GB, dla 16 GB będzie to 18 GB.

PEra
źródło
3
Odpowiedni link z prowadnicy RHEL6 przechowywania: docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/...
Ophidian
Serwer byłby zawieszony, jeśli konsekwentnie używałby 1 Gb swapu, ponieważ jego pamięć RAM byłaby pełna.
user2284570,
12

Późne odpowiedź, i myślę, że to dość dużo pokryte wybranej odpowiedzi, ale istnieje jakiś dobry i łatwo strawne informacji w odpowiedzi udzielonej przez @ssapkota tutaj (kopia / wklejony poniżej).

Oto bardzo dobra rekomendacja RedHat: Zalecana przestrzeń wymiany systemu

Fragment tego samego linku:

W poprzednich latach zalecana ilość przestrzeni wymiany rosła liniowo wraz z ilością pamięci RAM w systemie. Ale ponieważ ilość pamięci we współczesnych systemach wzrosła do setek gigabajtów, obecnie wiadomo, że ilość potrzebnej przestrzeni wymiany jest funkcją obciążenia pamięci działającego w tym systemie. Biorąc jednak pod uwagę, że przestrzeń wymiany jest zwykle wyznaczana w czasie instalacji i że może być trudne wcześniejsze ustalenie obciążenia pamięci systemu , zalecamy określenie wymiany systemu za pomocą poniższej tabeli.

Aktualna tabela (stan na grudzień 2012 r.):

Amount of RAM in the system   Recommended swap space         Recommended swap space 
                                                             if allowing for hibernation
---------------------------   ----------------------------   ---------------------------
2GB of RAM or less            2 times the amount of RAM      3 times the amount of RAM
2GB to 8GB of RAM             Equal to the amount of RAM     2 times the amount of RAM
8GB to 64GB of RAM            0.5 times the amount of RAM    1.5 times the amount of RAM
64GB of RAM or more           4GB of swap space              No extra space needed

Oryginalny stół:

Amount of RAM in the System     Recommended Amount of Swap Space
4GB of RAM or less              a minimum of 2GB of swap space
4GB to 16GB of RAM              a minimum of 4GB of swap space
16GB to 64GB of RAM             a minimum of 8GB of swap space
64GB to 256GB of RAM            a minimum of 16GB of swap space
256GB to 512GB of RAM           a minimum of 32GB of swap space 
ubiquibacon
źródło
8

Zależy to całkiem od tego, co z tym robisz. Przy odpowiednim obciążeniu tak naprawdę nie potrzebujesz przestrzeni wymiany, niezależnie od tego, czy masz 16 MB, czy 16384 MB pamięci RAM; w rzeczywistości większość wbudowanych urządzeń z Linuksem działa bez nich (na co by się zamieniły?)

Biorąc pod uwagę ceny pamięci RAM, prawdopodobnie nie będziesz używać swap do aktywnego obliczania. Co zostało?

  1. W komputerach do wymiany na dysk służy przestrzeń wymiany. Ta przestrzeń wymiany musi wynosić około 1 × RAM, w zależności od stopnia kompresji zawartości pamięci.
  2. Zezwalanie na usuwanie nieaktywnych zadań z pamięci RAM w celu zwiększenia miejsca na pamięć podręczną dysku
  3. To samo, ale w celu umożliwienia aktywnym procesom używania go zamiast do sterty / stosu

(2) i (3) silnie zależą od obciążenia pracą. Na moich komputerach mogę z łatwością korzystać z 4 GB + on (2), od pozostawienia vimów, xtermów itp. Działających na innych komputerach.

Na większości serwerów, które uruchamiam, prawie nigdy niczego nie wymieniono, a 1–2 GB wymiany (niezależnie od ilości pamięci RAM) wydaje się być w porządku.

derobert
źródło
przestrzeń wymiany jest również używana, jeśli uruchomisz cokolwiek , co korzysta z JVM: nie używaj perkalu i zapomnij przydzielić przestrzeń wymiany, jeśli korzystasz z Javy!
warren
@warren: Mam instancje Tomcat, z których każda przekracza 3GiB, ale nie używam zamiany (a jedna używa hugpage, a zatem nie można ich zamienić). Nie jestem pewien, o czym mówisz.
derobert
w JVM jest na wpół niejasny błąd związany z minimalnymi i maksymalnymi ustawieniami pamięci, na które wpadłem tego lata ( antipaucity.com/?p=984 ). TL; DR - za każdym razem, gdy JVM prosi o więcej pamięci z systemu operacyjnego, zapisuje się do wymiany, pobiera nową porcję pamięci, a następnie odczytuje się z powrotem do pamięci RAM, aby pamięć była ciągła
ostrzega
@warren: OK, używam OpenJDK na 64-bitach, Xmx i Xms są takie same. Ale nie jestem pewien, w jaki sposób java zmusiłaby się do zamiany, jedyne byłoby zamknięcie syscall madvise, ale to nie zawiedzie ... ten błąd mówi o braku pamięci podczas wyrzucania elementów bezużytecznych. Dodanie zamiany oczywiście temu zapobiega, ale i tak zwiększyłoby pamięć RAM. Może wynika to z 32-bitowej wersji PAE?
derobert
dzieje się tak również z 64-bitową maszyną JVM: jeśli masz Xmsi Xmxnie ustawiasz tych samych wartości, może cię to mocno ugryźć: powodowało poważne problemy dla nas przez ponad dwa tygodnie, aż w końcu to wyśledziliśmy
warren
4

To zależy od usług i aplikacji, które planujesz uruchomić. Możesz obserwować zużycie pamięci za pomocą free -m i odpowiednio dostosowywać partycję wymiany w czasie.

Oto interesująca dyskusja na ten temat. Osobiście (i po przeczytaniu tej dyskusji) wciąż zostawiam około 1 GB na wymianę.

Ivan
źródło
2

Nie mogę bezpośrednio rozmawiać z Debianem, ale wiem, że kiedy wstaniesz powyżej 2 GB pamięci RAM, oryginalne równanie 2xRAM zmienia się, zwykle do 1xRAM. Myślę, że gdy osiągniesz 16 GB RAM, sugestia ponownie obniży się do .75xRAM.

Oczywiście uznałem to za prawdę w przypadku Solaris i jest to metryka używana w instalacjach Oracle, więc YMMV zależy od aplikacji, na których będziesz tam działał.

Milner
źródło
2

Zawsze robię tyle wymiany (przynajmniej), ile pamięci RAM. Na wypadek, gdybym chciał kiedyś hibernować maszynę. Może pracować mniej, ale równie dobrze nie.

Miejsce na dysku twardym jest obecnie tanie, dlatego nie waham się oddać miejsca na wymianę.

Martin C.
źródło
2

Miejsce wymiany może służyć jako „dopełnienie”, gdy w przeciwnym razie natychmiast zabraknie pamięci.

Gdy proces zużywa całą dostępną pamięć RAM, a następnie część komputera będzie działać bardzo wolno, ale zazwyczaj będziesz w stanie odzyskać. Łatwiej będzie również zobaczyć, który proces powoduje problem.

starblue
źródło
2
To jest obosieczny miecz: na moim komputerze osobistym usunąłem swap, kiedy korzystałem z przeglądarki Firefox 2.x, ponieważ powoli zjadał całą pamięć, a kiedy maszyna zamieniła się, stała się całkowicie bezużyteczna; bez wymiany proces firefox został po prostu zamknięty przez jądro :)
wazoox
1

Przez lata postępowałem zgodnie z zasadą, że w przypadku komputerów z systemem Windows masz tyle samo swapów, ile masz pamięci RAM ... W Novellie zmienilibyśmy swapy wyżej, gdybyśmy mieli więcej drukarek ... W przypadku Linuksa reguła i praktyka wyniosły dla mnie 1 GB zamień na każde 2 GB pamięci RAM. Umieszczasz go z przodu dysku, aby uzyskać do niego szybszy dostęp.

  • Jeśli jest to brama poczty / spamu, używam podwójnej wymiany na RAM
  • Jeśli jest to * serwer, w ogóle nie używam wymiany
  • jeśli jest to serwer LAMP, obowiązuje reguła 1/2.

  • Przebieg będzie się różnić w zależności od aplikacji i użycia GUI.

Thomas Denton
źródło
Właściwie sądzę, że najszybszy dostęp do wymiany na środku dysku.
Eddie
0

Tworzę swap 1 GB i kupuję więcej pamięci RAM, gdy jest używana. Naprawdę nie potrzebujesz wymiany na nowoczesnych komputerach, pamięć RAM jest tak tania.

Adam Gibbins
źródło
0

Do czego używasz systemu? Osobiście nie używam żadnej wymiany. Jeśli cokolwiek używa tokena 512 MB lub czegoś innego, aby rzeczy mogły zostać umieszczone na dysku, jeśli są rezydentami, ale są nieaktywne przez długi czas.

Mike McQuaid
źródło
0

Używam tylko małej wymiany tokena (zwykle 256 MB, ale zrobiłem nawet 64 MB), ponieważ konfiguracja systemu z zerową zamianą wymaga specjalnej konfiguracji.

Miejsce na dysku jest tanie, ale slooooooooow. Gdy tylko system zacznie zamieniać, wydajność jest zerowa. A pamięć RAM nie jest już tak droga.

Zaufaj mi, kup nieco wolniejszy procesor i kup więcej pamięci RAM. 2,8 GHz zamiast 3,0 GHz pozwoli Ci zaoszczędzić wystarczająco dużo pieniędzy, aby kupić przynajmniej 2 GB pamięci RAM.


źródło