Czy istnieje maksymalny rozmiar, przy którym plik wymiany może działać?

8

O ile mi wiadomo, teoretyczny limit pliku wymiany jest niesamowicie duży w zależności od tego, czy używany jest system 32- czy 64-bitowy.

Utworzyłem plik wymiany 16 GB w 4 GB pamięci RAM 64-bitowej z innymi niskimi średnimi specyfikacjami, ponieważ mam więcej niż wystarczająco miejsca na wewnętrznym dysku twardym 1 TB ...

Ale czy duży plik wymiany faktycznie robi różnicę w szybkości / wydajności?

Devon van Schoor
źródło
1
Powiązane: askubuntu.com/q/49109/367990
Byte Commander
2
IMO, jeśli używasz wymiany, naprawdę potrzebujesz więcej pamięci RAM, a nie większego pliku wymiany
Panther
1
jeśli używasz dysków twardych, powinieneś użyć zram zamiast tego i zmniejszyć priorytet zamiany dysków twardych. I tak duża partycja wymiany nie pomoże, ponieważ według typu, którego używasz, jak zamiana 4 GB, twój system spowolnił się do indeksowania
phuclv
2
Powiązane: askubuntu.com/q/1017021/504066
PerlDuck
O ile pamiętam, plik wymiany zajmie pewną ilość fizycznej pamięci RAM (myślę, że mniej niż 1% wielkości pliku wymiany). Posiadanie zbyt dużego pliku wymiany może zaszkodzić wydajności z powodu zużycia pamięci. Ale w przypadku pliku wymiany o rozsądnych rozmiarach nie będzie problemu.
kasperd

Odpowiedzi:

7

Możesz mieć do 32 obszarów wymiany (plików lub partycji), z których każda może zawierać do ~ 4 miliardów (2 ^ 32), przy czym „strona” ma 4 kB w tradycyjnym systemie (np. X86 lub x86_64), ale może być większa w innych architektur lub jeśli specjalnie skonfigurowałeś duże strony.

Daje to teoretycznie maksimum 16 TB na obszar wymiany i do 32 obszarów wymiany. Zanim to osiągniesz, mogą obowiązywać inne ograniczenia, ale jest to tak duży obszar wymiany, który mkswapmożesz dla Ciebie stworzyć.

Jeśli chodzi o to, ile chcesz, każdy obszar wymiany poza maksimum, którego faktycznie używasz, nie wpływa na wydajność lub stabilność systemu. Sztuką jest oszacowanie maksymalnego wykorzystania, które kiedykolwiek wystąpi w normalnej lub nawet nienormalnej sytuacji, i wykorzystanie go jako rozmiaru pliku wymiany i nie więcej.

W momencie pisania zapisu, zamiana przestrzeni większej niż około 4 GB więcej niż rozmiar pamięci fizycznej jest bardzo mało prawdopodobna, chyba że twój system jest bardzo nietypowy. W typowym systemie, takim jak system stacjonarny używany przez jedną osobę na raz, prawdopodobnie możesz nawet zatrzymać maksymalnie od 6 GB do 8 GB, nawet jeśli Twoja pamięć fizyczna jest większa.

thomasrutter
źródło
6

Nie ma znaczenia pod względem prędkości ani wydajności. Pozwala to tylko na użycie do 20 GB pamięci wirtualnej, zanim zabójca OOM rozpocznie procesy zabijania w celu odzyskania pamięci.

Jeśli chcesz uzyskać lepszą wydajność:

  • zmniejsz, swappinessjeśli nie używasz tak często więcej niż 4 GB
  • dodaj pamięć RAM
  • przełącz się na dysk SSD i umieść na nim plik wymiany
Chai T. Rex
źródło
Jeśli często dochodzi do konieczności wymiany bloków pamięci, dysk SSD ze względu na ich architekturę i ograniczone cykle zapisu nie jest dobrym rozwiązaniem, ponieważ może szybko zużyć cykle zapisu SSD. Jeśli tylko okazjonalnie potrzebujesz wymiany pamięci, dyski SSD są w porządku.
Videonauth
11
@Videonauth: „Łatwo szybko zużyj cykle zapisu na dysku SSD”: każdy rodzaj przyzwoitego, nowoczesnego dysku SSD może wytrzymać zapisywanie pełnej pojemności dysku SSD dzień po dniu przez lata . Twoje porady mogły być poprawne w 2010 roku, ale są nieaktualne. Nawet dysk SSD 840 o pojemności 256 GiB klasy konsumenckiej wytrzymuje pisanie 100 GiB dziennie przez ponad 2 lata.
AlexP
Jeśli masz dużo pamięci RAM, zmniejszenie swapiness robi jeszcze mniejszą różnicę niż w przypadku ograniczonej pamięci RAM. Właściwie zainstalowanie dużej ilości pamięci RAM powoduje, że wszelkie inne poprawki do wymiany są zbędne, jeśli wystarczy, aby uniknąć zamiany. Zachowaj partycję wymiany dla stabilności „na wszelki wypadek”, przez 99,9% czasu nie będzie używana, a zachowasz doskonałą wydajność.
thomasrutter
1
Co więcej, kwestia ograniczonych cykli zapisu SSD była nieprawdziwa od ponad dekady, to naprawdę czas, aby ten FUD musiał zostać wywołany. Przepraszamy, ten komentarz jest tak zbędny, ponieważ AlexP już to rozwiązał, ale należy podkreślić. Dyski SSD doskonale nadają się do aplikacji wymagających dużego zapisu.
thomasrutter
1
Wyrównanie zużycia na dyskach SSD stało się sprawą około 2008 r. ( Artykuł z 2008 r. | Artykuł Anandtech z 2009 r .). „Czy w 2008 r. Laptopy w normalnych cenach detalicznych były nawet wyposażone w dyski SSD”, do cholery, dyski SSD były szalenie drogie i naprawdę nie były standardem.
thomasrutter
3

Zgodnie z odpowiedzią Gillesa

... Kiedyś obowiązywał limit wielkości wymiany 2 GB (na większości platform 32-bitowych), ale od lat tak nie jest. Ograniczenie zostało usunięte w pewnym momencie z serii jądra 2.2.

Dodatkowo cytuje stronę podręcznika dla mkswap:

Maksymalny użyteczny rozmiar obszaru wymiany zależy od architektury i wersji jądra.

W bibliotece linux / swap.h znajduje się MAX_SWAPFILESwpis, więc istnieje ograniczenie liczby plików wymiany na poziomie jądra, jednak najwyraźniej nie jest to również obszar ostateczny. Według powiązanego dokumentu:

Należy zauważyć, że sześć bitów dla „typu” powinno pozwolić na istnienie do 64 obszarów wymiany w architekturze 32-bitowej zamiast ograniczenia MAX_SWAPFILES wynoszącego 32

Rozumiem, że ma maksymalnie 64 pliki wymiany w 32-bitowych architekturach. Jednak w dokumencie nie zauważyłem, co by się stało w architekturze 64-bitowej. Warto również zauważyć, że w tym przypadku wysiłki OP w celu utworzenia plików wymiany nie powiodły się na 30 pozycji.

Jeśli chodzi o partycje wymiany, wydaje się, że nie ma żadnych ograniczeń w jądrze, oprócz wcześniej wspomnianych stałych, ale liczba dowolnych partycji nadal byłaby ograniczona przez układ BIOS i układ dysku .

Sergiy Kolodyazhnyy
źródło
2

Ta odpowiedź może być nieodpowiednia dla Ubuntu 18.04 (podziękowania dla @Chai T. Rex za wskazanie tego w komentarzach).

W każdym razie dla poprzednich wersji, proszę bardzo (wciąż nie ma proponowanej aktualizacji LTS> LTS, więc może to być nadal istotne):

To nie jest plik, to partycja i tak, robi to ze względu na swapiness

Parametr swappiness kontroluje tendencję jądra do przenoszenia procesów z pamięci fizycznej na dysk wymiany. Ponieważ dyski są znacznie wolniejsze niż pamięć RAM, może to prowadzić do dłuższych czasów reakcji systemu i aplikacji, jeśli procesy zostaną zbyt agresywnie usunięte z pamięci.

Zasadniczo więc, jeśli twoja partycja wymiany jest znacznie większa niż posiadana pamięć RAM, system będzie miał tendencję do zamiany więcej, powodując ogólne spowolnienie.

dadexix86
źródło
4
Są teraz pliki wymiany i są one domyślne (zamiast partycji) podczas instalacji 18.04 od zera.
Chai T. Rex
1
Zakładam, że zachowanie zamiany pozostaje takie samo, bez względu na to, czy jest ono wspierane przez partycję czy plik. Możesz także mieć wiele plików wymiany i / lub partycji jednocześnie. W każdym razie nie sądzę, aby więcej zamian miałoby negatywny wpływ, gdy wciąż jest wystarczająco dużo pamięci RAM.
Bajt Dowódca
Zakładałbym to samo, ale dopóki go nie
złapię
Istnieją partycje wymiany i pliki wymiany. Partycje wymiany mogą być używane przez dwie lub więcej instalacji Linuksa na tym samym komputerze (rozruch podwójny lub rozruch potrójny). Partycja wymiany jest lepsza w przypadku pełnego dysku, na którym można utworzyć fragment pliku wymiany. ... Pliki wymiany będą działać tak samo jak partycje wymiany, jeśli zostaną utworzone na niepełnych dyskach, aby uniknąć fragmentacji - Devon van Schoor j
Devon van Schoor
2

Nie ma dużej różnicy w szybkości lub wydajności przy zwiększaniu dowolnie dużej partycji wymiany.

Istnieje kilka czynników związanych z zamianą, które mogą wpływać na wydajność, takich jak swappinessi typ dysku twardego (SDD lub HDD).

Zamiana jest dość powolna, a wzrost zamiany zmniejsza wydajność. Ma to jednak wpływ tylko wtedy, gdy nie ma wystarczającej ilości pamięci RAM. Ale to lepsze niż brak wymiany. Radzę, aby rozmiar partycji wymiany był dwa razy większy niż ilość pamięci RAM.

Zanna
źródło
5
to zalecenie jest nieaktualne. Nowoczesne systemy z 32 lub 64 GB pamięci RAM nie będą wymagały wymiany 64 lub 128 GB
phuclv
3
@ LưuVĩnhPhúc W dzisiejszych czasach nie użyłbym więcej niż 2 GB wymiany ...
el.pescado
2 GB wydaje się bardzo niskie ... maszyny wirtualne lub gry mogą bardzo szybko wypełnić więcej niż 2 GB wymiany. Myślę, że 4 do 8 GB wymiany działa dobrze z każdą ilością pamięci RAM. Jeśli potrzebujesz więcej niż 8 GB, prawdopodobnie powinieneś dodać więcej pamięci RAM.
Germain
0

Dochodzę do tego, że plik wymiany lub partycja wymiany praktycznie nie mają granic. Ponadto mój plik wymiany 16 GB jest dość duży, ale rozmiar nie wpływa na szybkość.

Uważam jednak, że to, co wpływa na szybkość, to faktyczny system wykorzystujący przestrzeń wymiany w przeciwieństwie do fizycznego sprzętu.

Moim rozwiązaniem jest uzyskanie wysokiej wartości swapiness, aby swap nie był nadmiernie używany w przeciwieństwie do szybszego sprzętu. więc zrobiłem:

sudo -s
nano /etc/sysctl.conf

Dodano do pliku:

#vm.swappiness = 50

zapisać

sudo sysctl -p

odświeżyć (lub mógł właśnie zrestartować)

Devon van Schoor
źródło
Dodanie linii #vm.swappiness = 50do /etc/sysctl.confnie ma żadnego efektu, interlinia #sprawia, że ​​ta linia jest komentarzem, usuń ją. Możesz sprawdzić zamianę za pomocą cat /proc/sys/vm/swappiness.
mook765
Ale metoda, którą opisałem, zadziałała. Kiedy wprowadzam [cat / proc / sys / vm / swappiness], otrzymuję 50 jako wynik
Devon van Schoor