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 swappiness
10 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:
Jeśli nie korzystasz z hibernacji i twoja pamięć jest w nadmiarze 1GByte nowa zasada jest round(sqrt(RAM))
gdzie RAM
jest oczywiście swój rozmiar w GB RAM i sqrt
pierwiastek kwadratowy. :-)
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))
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 gimp
szybko edytować ten ogromny obraz o rozdzielczości 250 megapikseli , więc ustawienie wartości swappiness
10 zapobiegnie zbyt wczesnej zamianie jądra, jednocześnie upewniając się, że nie działa t swap za późno:
Jeśli masz sysctl.conf
plik,
sudo nano /etc/sysctl.conf
LUB
Jeśli masz sysctl.d
katalog, ale nie masz sysctl.conf
pliku, 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ć ... :-)