Zastanawiałem się, odkąd słyszałem, że swap jest używany, gdy nie ma Cię w pamięci RAM, a przesadzanie z nim jest złe, ponieważ mam dużo pamięci RAM (8 GB) ....
co jeśli nie utworzę partycji wymiany?
Czy potrzebuję go również do hibernacji, czy nie jest to konieczne?
linux
swap
swappiness
Mihai Bratulescu
źródło
źródło
Odpowiedzi:
Nowoczesne systemy operacyjne wymagają przestrzeni wymiany, aby efektywnie wykorzystywać pamięć RAM. Nawet jeśli w systemie jest dużo pamięci RAM, marnowanie pamięci RAM powoduje mniejsze buforowanie bufora, co oznacza zwiększenie liczby operacji we / wy dysku. Niezależnie od tego, ile masz pamięci RAM, nadal chcesz, aby system korzystał z niej efektywnie. Efektywne korzystanie z niego oznacza wyciąganie rzeczy z pamięci RAM, do których uzyskanie dostępu jest bardzo mało prawdopodobne.
Po uruchomieniu typowego systemu uruchamia się duża liczba usług. Programy uruchamiają kod inicjujący i modyfikują w tym procesie prywatne mapowania pamięci. Niektóre z tych usług już nigdy nie będą działać. Wiele z nich nie będzie działać przez wiele godzin. Bez wymiany system operacyjny nie ma wyboru i musi na zawsze zachować zmodyfikowane mapowania pamięci prywatnej związane z tymi usługami w pamięci RAM. To pamięć RAM, której nigdy nie można użyć jako pamięci podręcznej dysku.
Więc chcesz zamienić, czy tego potrzebujesz, czy nie.
źródło
Od kilku lat korzystam z systemu stacjonarnego bez wymiany i wszystko idzie świetnie! Istnieje kilka różnych zachowań; niektóre z nich są korzystne, a niektóre mogą cię skrzywdzić. Wszystko zależy od tego, co robisz.
Jedną z głównych różnic jest to, jak zachowuje się system, gdy skończy się pamięć:
Jeśli nie ma partycji wymiany, zabójca OOM uruchamia się natychmiast. Jeśli masz program wyciekający z pamięci, najprawdopodobniej to on zostanie zabity. Tak się dzieje i prawie natychmiast odzyskujesz system.
Jeśli nie jest partycja swap jądro wypycha zawartość pamięci do wymiany. Błędny proces może kontynuować przydzielanie pamięci. Dzieje się tak, dopóki nie skończy się wymiana, co może potrwać od dziesięciu minut do godziny, jeśli masz dużą partycję wymiany. W tym czasie system zwalnia do indeksowania. Nie można otworzyć terminalu i zabić procesu. Kiedy tak się dzieje, zwykle odłączam przewód zasilający.
Tak, ponieważ mam zamiar stracić moich danych anyways gdy Ooms systemowe, wolę byłego opcję przynajmniej mieć (wysoki) szansę odzyskania.
źródło
Do hibernacji wymagana jest zamiana, w przeciwnym razie można się bez niej obejść.
źródło
Powszechnym błędem jest myślenie, że posiadanie obszaru wymiany negatywnie wpływa na wydajność. Co poważnie wpływa na wydajność, to brak wystarczającej ilości pamięci RAM. Obszar wymiany sam w sobie nie ma negatywnego wpływu na wydajność, chyba że zależy Ci na niezawodności. Może to mieć pozytywny wpływ na wydajność, nawet jeśli uważasz, że masz wystarczającą ilość pamięci RAM (i nie zgłoszono braku pamięci RAM).
Zasadniczo należy rozważyć trzy przypadki:
1: Jest wystarczająca ilość pamięci RAM na potrzeby wewnętrznego jądra, aby wszystkie aplikacje miały działający zestaw stron w pamięci RAM i nadal miały „wolną” pamięć RAM na pamięć podręczną bufora do przechowywania większości gorących danych systemu plików.
2: tak samo jak powyżej, ale nie masz wystarczającej ilości wolnej pamięci RAM, aby pamięć podręczna bufora była w pełni wydajna.
3: Nie ma wystarczającej ilości pamięci RAM, aby nawet przechowywać strony używane przez aplikacje.
W przypadku 1, który powinien być normą dla maszyny produkcyjnej, posiadanie obszaru wymiany lub nic nie zmienia (przynajmniej w systemach operacyjnych Linux i innych systemach, które nadmiernie zatwierdzają pamięć).
W przypadku 2 posiadanie obszaru wymiany może poprawić ogólną wydajność, pozwalając systemowi na wyświetlanie stron bardzo rzadko używanych stron, a następnie pozwalając pamięci podręcznej bufora lepiej odgrywać swoją rolę.
W przypadku 3 posiadanie obszaru wymiany pozwala aplikacji na kontynuowanie działania kosztem obniżenia wydajności z powodu podziału na strony. Z drugiej strony brak obszaru wymiany (lub wystarczająco dużego) spowoduje losowe awarie aplikacji. Dodatkowo, w zależności od ustawień systemu operacyjnego, OOM Killer może również zdecydować o zabiciu aplikacji najbardziej wymagających pamięci, jeśli istnieje duże zapotrzebowanie na pamięć RAM, nawet nie dając im szansy na zapisanie (twoich) krytycznych danych.
Ten drugi przypadek jest tym, z którym musisz dokonać wyboru. Z pewnością istnieją przypadki użycia, w których zabijanie procesów jest preferowaną opcją, np. Systemy, w których czas reakcji jest kluczowy, a utrata transakcji / procesu nie jest niczym wielkim.
Jednak zazwyczaj wierzę w większość sytuacji, lepiej jest pozwolić użytkownikowi / administratorowi zauważyć brak pamięci RAM i odpowiednio postępować, nie ryzykując utraty danych.
źródło
Jeśli nie chcesz używać partycji wymiany, możesz użyć pliku wymiany: obrazu systemu plików przechowywanego w zwykłym pliku i używanego jako przestrzeń wymiany.
Poniższe artykuły szczegółowo wyjaśniają, jak to zrobić:
źródło
To trochę niebezpieczne, ale MOŻESZ biegać bez przestrzeni wymiany. Ale jeśli w końcu przekroczysz ilość pamięci, system prawie natychmiast się zawiesi bez uprzedzenia.
To, co zasadniczo daje ci zamiana, to dłuższa, ale znacznie wolniejsza pamięć. Jeśli przekroczysz, zaczniesz zamieniać, to naprawdę zabierze życie z twojego systemu .... JEDNAK, zabijając błędne procesy, nadal możesz zapisać swój system.
Niektóre programy nalegają na przydzielanie (ale nie używanie) przestrzeni wymiany, niektóre z nich to programy bazodanowe, o ile pamiętam. Ponownie, nie mając przestrzeni wymiany, możesz ograniczyć uruchamiane programy.
Na koniec spójrz SWAP jest TANIO, ponieważ nie musisz tworzyć kopii zapasowej obszaru. (Mam nadzieję, że jesteś jednym z tych znakomitych administratorów systemów, którzy wykonują kopie zapasowe swoich systemów).
Więc stwórz to.
Moją ogólną zasadą było 2 * rozmiar pamięci ..... ale teraz wydaje mi się, że w wielu przypadkach mam 1 * rozmiar pamięci, ale ogólnie używam 1,5 * (rozmiar pamięci). Nie musisz tworzyć tak wielkiej ilości, ale ja ... szczególnie, jeśli wykonujesz jakąkolwiek pracę produkcyjną.
O tak, aw przypadku hibernacji wymiana jest WYMAGANA, aby pomieścić całkowity obraz pamięci. A zatem rozmiar, jeśli rozważasz h8ibernation, powinien wynosić co najmniej (1 * rozmiar pamięci) + 100 MB .. 100 MB to ewentualny narzut związany z procesem.
źródło
Wymiana linuksa wydaje się mieć dość trudne wymagania, gdy tylko pojawi się presja pamięci. Objawem jest to, że jeśli prawie cała pamięć RAM jest używana przez aktywne procesy, system mocno się zatrzymuje, a dysk twardy działa dziko.
Dlaczego?
Strony bez pliku kopii zapasowej (zwykle z dynamicznego przydzielania pamięci) nie mogą być eksmitowane z pamięci RAM, gdy nie ma wymiany. Jądro ucieka się do stron z plikiem kopii zapasowej, nawet jeśli będą one wkrótce potrzebne, ja. mi. wyrzucanie śmieci nawet bez zamiany!
Więcej informacji na temat tego subtelnego problemu można znaleźć w tym poście na blogu.
Wniosek : Zawsze miej zamianę.
A dla przybliżonej wielkości użyj czegoś między 4 a 8 GB, nawet w systemach z dużą ilością pamięci RAM, zakładając, że nie hibernujesz. Aby uzyskać więcej informacji, zobacz dokumentację Red Hat dotyczącą przestrzeni wymiany .
źródło