Что происходит, когда ОС Linux не хватает оперативной памяти и нет подкачки

23

Что происходит, когда ОС Linux не хватает оперативной памяти и нет подкачки?

qwe123wsx
источник
15
Это было бы плохо. Попытайтесь представить всю жизнь такой, какой вы ее знаете, она мгновенно останавливается, и каждая молекула в вашем теле взрывается со скоростью света. Полное протонное обращение.
Дэвид

Ответы:

36

Когда операционной системе не хватает оперативной памяти и нет подкачки, она удаляет чистые страницы. Он не может отбрасывать грязные страницы, потому что он должен был бы сначала написать их где-нибудь. Это вызывает побои и низкую производительность, если недостаточно ОЗУ для хранения рабочего набора. Это одна из основных причин, по которой вы действительно хотите поменяться местами - чтобы операционная система могла принять лучшее решение о том, какие страницы удалять.

Без подкачки система исчерпает виртуальную память (строго говоря, ОЗУ + подкачка), как только у нее не останется чистых страниц для удаления. Тогда придется убивать процессы.

Недостаток ОЗУ вполне нормален. Это просто негативное влияние на использование оперативной памяти. Нехватка ОЗУ также может быть описана как «потеря ОЗУ». После использования всей оперативной памяти операционная система принимает разумные решения о том, что хранить в ОЗУ, а что - нет. Без какого-либо обмена у него меньше вариантов.

С или без свопинга, когда удаления страниц недостаточно, операционная система запустится, отказавшись разрешить операции, которые требуют памяти (например, mmapи fork) для успешного выполнения. Однако иногда этого недостаточно, и процессы должны быть убиты.

Дэвид Шварц
источник
4
+1 «Нехватка ОЗУ - совершенно нормальное явление. Это просто отрицательное вращение при использовании ОЗУ. Нехватка ОЗУ также может быть описана как« потеря ОЗУ ».»
TheTurkey
Связанный запрос. Знаете ли вы, что произойдет, если я попытаюсь перевести компьютер с Linux в спящий режим и не хватит места подкачки для хранения временных данных? Это перестает зимовать?
Прахлад Ери
1
@PrahladYeri Это правильно. Если у вас нет приостановленного раздела и недостаточно свободной подкачки для хранения содержимого оперативной памяти, вы не сможете перейти в спящий режим.
Дэвид Шварц
unix.stackexchange.com/q/153585
GoFundMonica - codidact.org,