Ile swapów powinienem wziąć za 1 GB do 8 TB pamięci RAM w wersji 14.04 lub wyższej?

14

Zamierzam zainstalować 64-bitowy 14.04 na nowym komputerze z czymś takim jak 1 do może 128 GB RAM i jeszcze więcej pamięci RAM później. Ile miejsca powinienem przeznaczyć na partycję wymiany?

A zwłaszcza: DLACZEGO te zalecenia dla tych liczb?

(Żadna z istniejących odpowiedzi tutaj i tutaj nie wyjaśnia żadnego z powodów i jest nieco przestarzała, jeśli spojrzymy na 1 GB lub pamięć RAM i więcej)

Tim
źródło
6
Możliwy duplikat Mam 16 GB pamięci RAM. Czy potrzebuję wymiany 32 GB? Istnieją odpowiedzi z 2017 r. (Lub zaktualizowane w 2017 r.), Więc zawiera obecnie najnowsze rekomendacje niż ta.
Melebius
1
@Melebius: Nie zgadzam się: Chociaż to pytanie jest nowsze, jest bardziej ogólne niż to, które próbujesz powielić. To pytanie dotyczy starszego, ale odwrotność nie jest prawdą! ;-)
Fabby
1
@Fabby W takim przypadku nie należy oznaczać tego drugiego jako duplikatu tego?
Melebius
1
@ Melebius Jeśli recenzenci mogliby wykorzystać oba pytania jako duplikaty innych pytań w różnych sytuacjach, oba pytania mogłyby pozostać otwarte, aby poradzić sobie z tymi różnymi sytuacjami, ponieważ oba pytania mają bardzo pozytywne odpowiedzi.
karel
2
@Melebius Rozmawialiśmy już na ten temat w meta, a społeczność postanowiła, że ​​każdy z nich pozostanie bez zmian.
Fabby

Odpowiedzi:

30

Krótka odpowiedź:

Ustaw plik wymiany na:

  • round(sqrt(RAM))jeśli nie korzystasz ze hibernacji
  • RAM+round(sqrt(RAM))jeśli korzystasz ze hibernacji

Ustaw swappiness10 na pulpicie, ale nie na serwerze!

Długa odpowiedź:

W przeszłości:

W ciągu ostatnich 25 lat stosowano zasadę minimum 1xRAM i maksimum 2xRAM, tak więc cały czas będziecie cytowani.

To minimum zostało cofnięte w epoce kamienia łupanego, gdy byłem nastolatkiem, a dinozaury wciąż wędrowały po Ziemi, a ponieważ pamięć RAM była po prostu zbyt droga i absolutnie potrzebna była ta przestrzeń wymiany, aby móc cokolwiek osiągnąć.

W tym czasie ustalono maksimum ze względu na malejące zwroty: jest zbyt wolno, aby wymieniać tak dużo pamięci, ponieważ dostęp do dysku twardego jest 1000 razy wolniejszy niż pamięć RAM: dobra w nagłych wypadkach, ale niezbyt dobra do codziennego użytku! W tym czasie, kiedy zabrakło ci miejsca na wymianę, nadszedł czas, aby dodać więcej pamięci RAM! (co do dziś jest prawdą).

W teraźniejszości:

  1. Jeśli nie korzystasz z hibernacji i twoja pamięć jest w nadmiarze 1GByte nowa zasada jest round(sqrt(RAM))gdzie RAMjest oczywiście swój rozmiar w GB RAM i sqrtpierwiastek kwadratowy. :-)

  2. Jeśli używasz hibernacji, musisz mieć możliwość zamiany całej ilości pamięci RAM + już zamienionej pamięci RAM na dysk, dzięki czemu formuła wygląda następująco: RAM+round(sqrt(RAM))

  3. Reguła malejących zwrotów obowiązuje dzisiaj dla maksimum, ale jeśli nie przetestujesz faktycznego użycia, zabranie 2xRAM jest tylko marnotrawstwem miejsca na dysku , więc nie używaj maksimum, chyba że zabraknie miejsca wymiany przy użyciu innych metod .

Wszystkie razem dają następującą tabelę: (ostatnie 3 kolumny oznaczają przestrzeń wymiany)

    RAM   No hibernation    With Hibernation    Maximum
    1GB              1GB                 2GB        2GB
    2GB              1GB                 3GB        4GB
    3GB              2GB                 5GB        6GB
    4GB              2GB                 6GB        8GB
    5GB              2GB                 7GB       10GB
    6GB              2GB                 8GB       12GB
    8GB              3GB                11GB       16GB
   12GB              3GB                15GB       24GB
   16GB              4GB                20GB       32GB
   24GB              5GB                29GB       48GB
   32GB              6GB                38GB       64GB
   64GB              8GB                72GB      128GB
  128GB             11GB               139GB      256GB
  256GB             16GB               272GB      512GB
  512GB             23GB               535GB        1TB
    1TB             32GB              1056GB        2TB
    2TB             46GB              2094GB        4TB
    4TB             64GB              4160GB        8TB
    8TB             91GB              8283GB       16TB

Powyższe jest tylko ogólną zasadą; to nie jest prawo grawitacji!
Ty może złamać tę regułę (w odróżnieniu od prawa grawitacji), czy dany przypadek użycia jest inny!

Wskazówka: zawsze przydzielaj SWAP na początku dysku twardego, ponieważ głowice muszą mniej poruszać się po wewnętrznej stronie dysku.
Tak: Na dyskach SSD tak naprawdę nie ma już znaczenia, gdzie zlokalizujesz obszar wymiany, ponieważ wykorzystują tunelowanie kwantowe zamiast ruchomych głowic, a nowoczesne dyski SSD wykorzystują wszystkie swoje komórki pamięci (nawet nieprzydzieloną przestrzeń), aby zapobiec degradacji kwantowej.

Jak sprawdzić, czy użycie swap różni się od reguły „ogólnej”:

Po prostu wykonaj:

for szFile in /proc/*/status ; do 
  awk '/VmSwap|Name/{printf $2 "\t" $3}END{ print "" }' $szFile 
done | sort --key 2 --numeric --reverse | more

która da ci listę wszystkich uruchomionych programów, które są zamienione (z tym, który używa najwięcej przestrzeni wymiany na górze)

Jeśli używasz więcej niż kilku KB: zmień rozmiar na większy niż minimum, w przeciwnym razie nie przejmuj się ...

Jeśli korzystasz z serwera, przestań czytać teraz: wszystko gotowe!


Jeśli pracujesz na komputerze stacjonarnym / laptopie (nie na serwerze), chcesz, aby Twój GUI działał możliwie szybko i zamieniał się tylko wtedy, gdy naprawdę potrzebujesz . System Ubuntu został zoptymalizowany pod kątem wcześniejszej zamiany na użytkowanie serwera, ale na kliencie chcesz gimpszybko edytować ten ogromny obraz o rozdzielczości 250 megapikseli , więc ustawienie wartości swappiness10 zapobiegnie zbyt wczesnej zamianie jądra, jednocześnie upewniając się, że nie działa t swap za późno:

Jeśli masz sysctl.confplik,

sudo nano /etc/sysctl.conf

LUB

Jeśli masz sysctl.dkatalog, ale nie masz sysctl.confpliku, utwórz nowy plik:

sudo nano /etc/sysctl.d/35_swap.conf 

i w obu przypadkach dodaj:

# change "swappiness" from default 60 to 10 
# (theoretically only swap when RAM usage reaches around 80 or 90 percent)
vm.swappiness = 10

na końcu pliku, zapisz plik ( Ctrl+ XY+ Enterw nano) i wykonaj:

sysctl --system

aby ponownie załadować parametr lub zastosować podejście Window $ i zrestartować ... :-)

Fabby
źródło
1
Dzięki. Co rozumiesz przez „malejący zwrot”? Jeśli zarówno pamięć RAM, jak i swap są w pełni wykorzystane, to nie można hibernować, nawet jeśli zamiana ma rozmiar 2 * RAM, prawda? (Ponieważ hibernacja będzie wymagała rozmiaru zamiany na RAM + swap, co jest niemożliwe?)
Tim
Tak, ale jeszcze nigdy tak się nie stało ... (i jestem stary! Dlatego 2 * RAM: Kiedy cała pamięć RAM jest zamieniona, nadal możesz hibernować ...
Fabby
2
„Zmniejszający się zwrot” oznacza po prostu, że dostęp do dysku twardego jest 1000 razy wolniejszy niż pamięć RAM, więc jeśli musisz zamienić pamięć RAM dwa razy, umrzesz ze starości, zanim się skończy ... Po prostu hibernacja, gdy „ już wymieniam ...
Fabby
1
@Fabby Czas na ponowne sprawdzenie CV oryginalnego pytania: askubuntu.com/review/close/889454 . Zobacz komentarz Yufenyuy Veyeh Dider pod pytaniem.
karel
1
@mrkskwsnck: To ten sam autor ... ;-)
Fabby
6

Konieczność zamiany

Zamiana jest przydatna z 3 powodów:

  1. Usuwanie bałaganu z pamięci RAM. Z artykułu na kernel.org:

    „Znaczna liczba stron, do których odwołuje się proces na wczesnym etapie jego życia, może być wykorzystana tylko do inicjalizacji, a następnie nigdy nie może zostać użyta ponownie. Lepiej jest zamienić te strony i utworzyć więcej buforów dyskowych niż pozostawić je na stałe i nieużywane”

    Innymi słowy, dane przechowywane w pamięci RAM mogą być przydatne tylko wtedy, gdy proces został uruchomiony (jak proces uruchamiania), a następnie po prostu znajdować się w pamięci RAM, zagracając przestrzeń, którą można wykorzystać do lepszych celów.

  2. Rozszerza ilość pamięci, którą mogą wykorzystywać procesy. To jest dobrze zrozumiane. Nie chcesz, aby systemowi zabrakło pamięci i uległa awarii z powodu jej braku. Z tego konkretnego powodu musi istnieć zamiana , służąca jako funkcja ochronna.

  3. Hibernacja: Gdy komputer hibernuje, zawartość pamięci RAM trafia na dysk.

Zamień kwotę

Znając cel zamiany i zależnie od ilości pamięci RAM w komputerze, możesz wybrać rozmiar zamiany, który pasuje do twojego celu. Nie ma konkretnych wytycznych, tylko podstawowe zasady, których można użyć, aby dopasować rozmiar wymiany do systemu .

Na przykład linux.com zaleca:

Ogólna zasada jest następująca: 1) w przypadku systemu stacjonarnego użyj przestrzeni wymiany podwójnej pamięci systemowej, ponieważ pozwoli to na uruchomienie dużej liczby aplikacji (z których wiele może być bezczynnych i łatwo zamieniać), dzięki czemu więcej dostępnej pamięci RAM dla aktywnych aplikacji; 2) w przypadku serwera, dysponuj mniejszą ilością wymiany (powiedzmy połowę pamięci fizycznej), abyś miał swobodę wymiany w razie potrzeby, ale monitoruj ilość zużytej przestrzeni wymiany i w razie potrzeby zwiększ swoją pamięć RAM; 3) w przypadku starszych komputerów stacjonarnych (powiedzmy tylko 128 MB), wykorzystaj tyle miejsca na wymianę, ile możesz zaoszczędzić, nawet do 1 GB.

Z własnego doświadczenia, oto co bym zrobił:

Biorąc pod uwagę maszynę z 1 - 2 GB, która nie musi hibernować, i do codziennego użytku, możesz mieć od 1 GB do 2 GB przestrzeni wymiany. Mój komputer z 14.04 Ubuntu ma 1 GB pamięci RAM i 2 GB wymiany. Wartość wymiany nigdy nie przekracza granicy 800 MB, a mojego komputera używam tylko do surfowania po Internecie i pisania skryptów.

W przypadku komputera, który ma ponad 2 GB pamięci i nie trzeba go hibernować, możesz zachować swap z 512 MB na 1 GB. Mam laptopa z 15.04, którego nigdy nie hibernuje i który ma plik wymiany ( nie partycję ) 512 MB. Sama pamięć RAM ma 6 GB, ale nigdy nie przekracza 2-3 GB. Ponownie: codzienne użytkowanie.

Cosmoscalibur i Fabby już zajęły się zamianą na wypadek hibernacji, więc nie będę wchodził w to zbyt szeroko. Moja skromna opinia jest następująca:

Jeśli planujesz hibernację, zawartość pamięci RAM będzie musiała zostać wymieniona, dlatego potrzebujesz jej co najmniej tego samego rozmiaru co pamięć RAM.

Sergiy Kolodyazhnyy
źródło
:-) Zauważyłem, że teraz coś opublikowałeś. Edytowane i entuzjastycznie! (Jak teraz jest dobra odpowiedź po mojej edycji!: D: D: D)
Fabby