Ubuntu зависает при нехватке памяти

Мой сервер Ubuntu работал без проблем один месяц. Но на прошлой неделе я начал использовать программы, которые требуют больше памяти. А когда объем свободной памяти составляет около 100 МБ, система полностью зависает. Я не могу ничего напечатать, переместить курсор, подключиться из замазки .. просто ничего .. но странно, что жесткий диск все еще работает (мигает) .. Я могу полностью воспроизвести эту проблему, и это происходит почти каждый раз, когда вокруг свободная память 100MB. Но у меня есть файл подкачки, и в этом файле подкачки достаточно свободного места. Вот мой статус памяти за 1 секунду до того, как он завис.

    Every 1.0s free -mh                                               Mon Mar 19 17:05:33 2018                                     

               total         used          free         shared      buff/cache     available
Mem:             11G         10G           115M          1.2G             1.5G         115M
Swap:           7.9G        2.4G           5.5G

Вот мое ядро ​​Linux

Linux xxx 4.15.1-041501-generic #201802031831 SMP Sat Feb 3 18:32:13 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Вот моя версия Ubuntu

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 17.10
Release:        17.10
Codename:       artful

Вот мои настройки swappines, overcommit_memory и overcommit_ratio

vm.swappiness = 60
vm.overcommit_memory = 0
vm.overcommit_ratio = 50
[ 119] Вот моя аппаратная конфигурация

Motherboard: PRIME B350-PLUS
CPU            : AMD Ryzen 7 1700 Eight-Core Processor
RAM           : 4GB + 8GB DDR4
Hard drive  : Samsung 960 evo 250GB

Конечно, я могу обновить память до 16 ГБ, но все же я хочу, чтобы моя система была стабильной. Кто-нибудь знает, что может быть не так?

5
задан 21 March 2018 в 12:26

1 ответ

Я полагаю, что это - тот же вопрос как этот, даже при том, что у Вас есть включенная подкачка: https://unix.stackexchange.com/q/373312/306023

В основном ядро (или kswapd0) выселяет код каждого активного процесса (исполняемый файл) страницы для освобождения большего количества RAM, таким образом на каждом контекстном переключении, когда процесс возобновляет выполнение, это должно быть перечитано от диска в память, и только затем может это возобновлять выполнение.

Это должно произойти так много раз в секунду, вместе с тем, что диск является путем медленнее, чем RAM, что ОС рассматривается как эффективное замерзание. Это - как будто RAM временно заменяется диском, и все это вызвано тем, что ядро делает ошибку ofis выселение поддержанных файлом исполняемых страниц рабочих процессов также вместо просто неактивных.

Если Вы хотите попытаться видеть то, что происходит, если ядро не выселяет их, можно перекомпилировать ядро с этим патчем, замеченным в этом вопросе. То, что должно произойти, - то, что ОС должна заморозиться в течение самое большее 1 секунды теперь вместо минут (или постоянно) и не должно быть мало ни к какой дисковой перегрузке.

1
ответ дан 23 November 2019 в 10:40

Другие вопросы по тегам:

Похожие вопросы: