Jak duża powinna być partycja wymiany?

10

od kilku lat czytam, że dobrym pomysłem jest utworzenie partycji wymiany z podwójną przestrzenią mojej pamięci RAM. czy nadal obowiązuje? czy to nie jest już potrzebne?

Mam serwer z 8 GiB RAM i muszę utworzyć partycję wymiany i zastanawiałem się, czy 16 GiB to za dużo.

cd1
źródło

Odpowiedzi:

11

W dużych systemach, 8 GB fizycznej pamięci RAM, zwykle przydzielamy 2 GB swapu. Są to załadowane serwery baz danych z systemem Oracle lub PostgreSQL. Przez lata nigdy nie widziałem zamiany nawet przy dużym obciążeniu. Duże obciążenie to około 100 do 150 użytkowników wykonujących około 10 000 odczytów SQL, a może 2500 zapisów na minutę.

Dostosowujemy również poziom zamiany, aby zniechęcić do zamiany i wyłączamy niepotrzebne procesy, o których wiemy, że nie musimy działać. (Niestandardowe kompilacje systemu Linux)

Podobnie jak Eddie, mówi powyżej, 1x fizyczna pamięć RAM jest dobrą regułą dla wszystkiego, co poniżej 4 GB. Robię niestandardowe kompilacje Linuksa dla dużej firmy z listy Fortune 500 i takie są rzeczy, które zwykle robimy, i nie mieliśmy żadnych problemów przez ostatnie 5 lat, z którymi się konsultowałem.

W większych systemach: 64-bitowy Linux z 32 GB i 64 GB pamięci RAM, są to nasze serwery baz danych Oracle, i zwykle przechowujemy 2 GB wymiany na takie rzeczy, jak Eddie wskazuje powyżej - bezczynne procesy zostaną przeniesione do wymiany w zależności od ustawień swapiness.

Kilogram
źródło
5

Pozornie ponadczasowe pytanie. Dobrzy ludzie ze SlashDot dyskutowali o tym jakiś czas temu. Sprawdź, co mieli do powiedzenia:

  • Miejsce na dysku nie stanowi problemu w przypadku współczesnych dysków twardych, 16 GB to wciąż niewielka ilość dla współczesnych dysków TB.
  • Jednak znaczna przestrzeń wymiany może być problemem w przypadku złego zarządzania pamięcią:

Jeśli obejrzę film o pojemności 4 GB w ciągu 2 godzin, wielu menedżerów pamięci zdecyduje, że próba buforowania wszystkich tych danych może być dobrą rzeczą. W połowie filmu pomyśli, że wszystkie inne uruchomione programy były nieużywane przez godzinę i można je bezpiecznie zamienić na korzyść buforowania większej ilości tego 4 GB pliku. Efektem końcowym jest to, że połowa programów zostaje zamieniona po obejrzeniu filmu, co powoduje powolny system, który niszczy cały plik wymiany.

  • Ostatecznie właściwa decyzja powinna wynikać z wymagań dotyczących pamięci, a nie z formuł „ballpark”:

Jeśli masz [wystarczającą ilość pamięci RAM, aby uruchamiać programy, których chcesz używać na co dzień], nie ma powodu, aby kiedykolwiek używać zamiany.

KPWINC
źródło
3

Zobacz odpowiedź Ile miejsca SWAP w systemie o wysokiej pamięci? po wskazówki, chociaż twoje pytanie jest bardziej ogólne. Opinie na ten temat różnią się znacznie, ale generalnie ludzie z 1 GiB RAM lub więcej wydają się albo działać bez zamiany całkowicie, albo z 1xmemory jako zamianą.

Nawet jeśli nie planujesz używać tak dużo pamięci RAM, że wymusisz zamianę, istnieje pewna wartość posiadania co najmniej 1x pamięci jako zamiany: Pozwala to systemowi operacyjnemu zamienić niektóre rzeczy, których nie należy używać natychmiast, aby zamiast tego mógł użyć tej pamięci na przykład dla buforów dysku lub IO.

Eddie
źródło
3

Jeśli spodziewasz się, że Twój system będzie w stanie hibernacji, a następnie pomyślnie wznowi :-), prawdopodobnie lepiej jest przeznaczyć więcej miejsca na partycję wymiany niż ilość fizycznej pamięci RAM

dmityugov
źródło
3

Mój dostawca VPS nawet nie zapewnia przestrzeni wymiany dla serwerów, a moja działała bez niego dobrze.

Większość serwerów, które widzę na co dzień w pracy, również nie wymaga wymiany.

Edytować

Jednak - jeśli korzystasz z JVM, upewnij się , że masz co najmniej tyle miejsca wymiany, ile kiedykolwiek ustawisz z -Xmxpowodu znanego problemu z JVM.

Krótko mówiąc, gdy JVM potrzebuje więcej pamięci niż obecnie używa (ale nadal jej nie osiągnął Xmx), to:

  • zamienia się na dysk
  • przydziela nową pamięć
  • wczytuje się z powrotem do pamięci RAM

Oznacza to, że jeśli zamiana jest mniejsza niż Twoja Xmx, może się nie powieść.

Cytując raport o błędzie

Najlepiej jest zwiększyć rozmiar wymiany na komputerach napotykających ten błąd.

Staram się grać bezpiecznie podczas pracy z JVM i ustawiam swap na równą pamięć fizyczną.

królikarnia
źródło
2

Biorąc pod uwagę szybkość współczesnych dysków twardych, duże wymiany są tylko zaproszeniem do thrashowania. Być może dyski SSD odwrócą ten trend, ale przy maksymalnej prędkości transferu 300 MB / s dla dysku zamiana 2-4 GB zajmie sporo czasu.

W dawnych czasach (np. Linux 1.2, i386, SunOS 4.x) działało może być 5-15 MB procesów demona i gdziekolwiek z 4-32 MB pamięci RAM, a więc demony, które zostały właśnie zablokowane, czekając na I / O można wymienić bez prawdziwego spadku wydajności ... I lepiej, ponieważ programy użytkownika mogą mieć zaledwie 2-3 MB dostępnej pamięci RAM. Zamiana miała sens.

Teraz w moim środowisku większość serwerów ma duże obciążenia pojedynczą pamięcią, a pamięć RAM może być dość dokładnie oszacowana ... Zamiana jest dostępna na wypadek awarii, uciekających procesów i tak dalej.

Wyjątkiem jest dla laptopów i stacji roboczych, które mogą spać. Wiele systemów operacyjnych korzysta z obszaru wymiany, aby zapisać obraz zawieszenia. W takich przypadkach zmiana musi być większa niż pamięć fizyczna. W Linuksie z suspend2 / tuxonice powinieneś mieć 2xRAM w rozmiarze wymiany, aby obsługiwać zawieszenie na dysk.

Alexandre Carmel-Veilleux
źródło
W dawnych czasach System V 3.2 i wcześniejsze korzystały z wymiany o wielkości dokładnie RAM. Wszystko zostało zepsute, a więcej zmarnowane, ponieważ nie był tak zaawansowanym systemem pamięci wirtualnej jak BSD.
kmarsh
2

W dzisiejszych czasach, jeśli korzystasz z serwera 32 GB lub 64 GB, 4 GB wymiany na wartość domyślną to bezpieczna kwota. Coś większego niż to jest przesada przy dostępnej pamięci fizycznej.

Edward_178118
źródło
1

Najlepiej, jeśli w ogóle nie będziesz używał wymiany, a 2x RAM to naprawdę coś, co pozostało z lat.

Jeśli się tym martwisz, zrobiłbym coś takiego:

Max Memory Requirement - Physical Ram = Swap

Myślę, że 16 GB osobiście brzmi o wiele za dużo.

WerkkreW
źródło
1

W dawnych czasach, kiedy chciałeś, jak najwięcej, zużycie pamięci w nowoczesnych jądrach * nix należy już do przeszłości. Stare powiedzenie brzmiało „2x twoja pamięć”. Pomiędzy 2 GB lub ilością miejsca, jaką ma dzisiaj urządzenie w pamięci RAM, a wiek zbliży Cię do miejsca, w którym musisz być.

XTZ
źródło
1

Zamiana jest również używana do przechowywania zrzutów po panice jądra. Jeśli jesteś zainteresowany analizą tych zrzutów i nie określiłeś innego miejsca zrzutu, twoja zamiana powinna być co najmniej tak duża jak twoja pamięć RAM.

Benoit
źródło
0

Nie ma jednego algorytmu, który wskazywałby, ile wymiany potrzebujesz. W praktyce musisz obciążyć system największym obciążeniem, które planujesz wesprzeć, i dowiedzieć się, ile zasobów faktycznie używa. Ustaw odpowiednio plik wymiany.

W przypadku fizycznej pamięci RAM należy ustawić system pod rzeczywistym obciążeniem „rejsowym”, którego należy się spodziewać, i odpowiednio go kupić. W przypadku systemów o niskim opóźnieniu nie należy w ogóle wymieniać ładunków wycieczkowych (to nie to samo, że nie przydzielono lub nawet nie użyto wymiany). Może wystąpić niewielka zamiana z powodu mało używanych narzędzi systemowych do prowadzenia domu , ale zasadniczo powinieneś mieć jak najmniej wymiany.

Oczywiście możesz wymienić wydajność za niższą cenę.

Krzysztof
źródło