Co się stanie, gdy system Linux przestanie działać w pamięci RAM i nie będzie wymiany

23

Co się stanie, gdy w systemie Linux nie ma pamięci RAM i nie jest dostępna zamiana?

qwe123wsx
źródło
15
Byłoby źle. Spróbuj wyobrazić sobie, jak całe życie zatrzymuje się natychmiast, a każda cząsteczka w twoim ciele eksploduje z prędkością światła. Całkowite odwrócenie protonu.
David

Odpowiedzi:

36

Gdy w systemie operacyjnym brakuje pamięci RAM i nie ma wymiany, odrzuca czyste strony. Nie może odrzucić brudnych stron, ponieważ najpierw musiałby je gdzieś napisać. Powoduje to wstrząsanie i niską wydajność, jeśli nie ma wystarczającej ilości pamięci RAM do utrzymania działającego zestawu. To jeden z głównych powodów, dla których tak naprawdę chcesz wymiany - aby system operacyjny mógł podjąć lepszą decyzję o tym, które strony eksmitować.

Bez wymiany systemowi zabraknie pamięci wirtualnej (mówiąc ściśle: RAM + swap), gdy tylko nie będzie już więcej czystych stron do eksmisji. Wtedy będzie musiał zabić procesy.

Brak pamięci RAM jest całkowicie normalny. To tylko ujemny obrót przy korzystaniu z pamięci RAM. Niedobór pamięci RAM można równie dobrze opisać jako „marnowanie pamięci RAM”. Po wykorzystaniu całej pamięci RAM system operacyjny podejmuje inteligentne decyzje dotyczące tego, co należy przechowywać w pamięci RAM, a czego nie. Bez zamiany ma mniej opcji.

Z wymianą stron lub bez nich, gdy eksmisja stron nie jest wystarczająca, system operacyjny uruchomi się, odmawiając zezwolenia na operacje wymagające pamięci (takie jak mmapi fork). Czasami jednak to nie wystarczy i procesy muszą zostać zabite.

David Schwartz
źródło
4
+1 „Brak pamięci RAM jest całkowicie normalny. Jest to po prostu ujemny spin korzystania z pamięci RAM. Brak pamięci RAM można równie dobrze opisać jako„ marnowanie pamięci RAM ”.”
TheTurkey
Powiązane zapytanie. Czy wiesz, co się stanie, jeśli spróbuję zahibernować maszynę z systemem Linux i nie będzie wystarczającej przestrzeni wymiany do przechowywania danych przejściowych? Czy to przestaje hibernować?
Prahlad Yeri
1
@PrahladYeri To prawda. Jeśli nie masz zawieszonej partycji i nie ma wystarczającej ilości swapów do przechowywania zawartości pamięci RAM, nie możesz hibernować.
David Schwartz
unix.stackexchange.com/q/153585
GoFundMonica - codidact.org