Мой сервер 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 ГБ, но все же я хочу, чтобы моя система была стабильной. Кто-нибудь знает, что может быть не так?
Я полагаю, что это - тот же вопрос как этот, даже при том, что у Вас есть включенная подкачка: https://unix.stackexchange.com/q/373312/306023
В основном ядро (или kswapd0) выселяет код каждого активного процесса (исполняемый файл) страницы для освобождения большего количества RAM, таким образом на каждом контекстном переключении, когда процесс возобновляет выполнение, это должно быть перечитано от диска в память, и только затем может это возобновлять выполнение.
Это должно произойти так много раз в секунду, вместе с тем, что диск является путем медленнее, чем RAM, что ОС рассматривается как эффективное замерзание. Это - как будто RAM временно заменяется диском, и все это вызвано тем, что ядро делает ошибку ofis выселение поддержанных файлом исполняемых страниц рабочих процессов также вместо просто неактивных.
Если Вы хотите попытаться видеть то, что происходит, если ядро не выселяет их, можно перекомпилировать ядро с этим патчем, замеченным в этом вопросе. То, что должно произойти, - то, что ОС должна заморозиться в течение самое большее 1 секунды теперь вместо минут (или постоянно) и не должно быть мало ни к какой дисковой перегрузке.