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?
Odpowiedzi:
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
mkswap
moż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.
źródło
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ść:
swappiness
jeśli nie używasz tak często więcej niż 4 GBźródło
Zgodnie z odpowiedzią Gillesa
Dodatkowo cytuje stronę podręcznika dla
mkswap
:W bibliotece linux / swap.h znajduje się
MAX_SWAPFILES
wpis, 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: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 .
źródło
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
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.
źródło
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
swappiness
i 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.
źródło
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:
Dodano do pliku:
zapisać
odświeżyć (lub mógł właśnie zrestartować)
źródło
#vm.swappiness = 50
do/etc/sysctl.conf
nie ma żadnego efektu, interlinia#
sprawia, że ta linia jest komentarzem, usuń ją. Możesz sprawdzić zamianę za pomocącat /proc/sys/vm/swappiness
.