Система висит, когда заканчивается память

У меня есть eeePC 900a: у него есть 8 ГБ флеш-диск и только 1 ГБ оперативной памяти. Установленный на нем дистрибутив Linux – это ArchLinux.

Когда в системе заканчивается память, она становится крайне невосприимчивой: для выполнения таких задач, как переход на TTY1 или даже перемещение указателя мыши, требуется несколько секунд / минут. Иногда кажется, что система просто зависает: три дня назад я оставляю ее в покое и ничего не меняется до сих пор.

Я бы предпочел избежать создания раздела / файла подкачки на этом eeePC, так как диск уже такой маленький, а также потому, что многие записи в области подкачки значительно сократили срок службы флеш-карт. Более того, я думаю, что файл / раздел подкачки просто переместил проблему, а не определенно ее исправил.

Разве ядро ​​не должно убивать некоторые случайные приложения, когда у него заканчивается память? Почему это происходит (или занимает много времени) при этом?

Несколько месяцев / лет назад я уже пытался смотреть дальше, но не мог найти ничего, что на самом деле работало бы …

  • Что такое «ядерная динамическая память», как сообщает smem?
  • Реальная vs Фактическая память в Xymon / Hobbit
  • Где vmstat получает статистику «используемой памяти»?
  • CentOS 7 - Когда THP отключен, можно ли игнорировать настройки дефрагментации?
  • Любой способ указать процесс вызова в Linux при активации OOM?
  • GNU / Linux OOM (из памяти) зависает - идеи решений
  • Почтовый файл имеет разный размер после копирования на флешку
  • 3 Solutions collect form web for “Система висит, когда заканчивается память”

    Естественное состояние вещей заключается в том, что данные приложения находятся в ОЗУ, а файлы находятся на диске.
    Идеальное состояние вещей – это то, что данные часто используются в ОЗУ, а данные, которые в настоящий момент не нужны, находятся на диске.
    В нормальной системе ядро ​​делает две вещи, чтобы попытаться достичь этого идеала:

    • Данные приложения, которые не использовались некоторое время, могут быть перенесены на диск: это своп.
    • Данные из файлов, которые были использованы в последнее время, хранятся в ОЗУ: это кеш диска (для чтения данных с диска) и дисковые буферы (для данных, которые должны быть записаны на диск).

    В типичной системе значительная часть ОЗУ посвящена кэшу и буферам (50% – типичная цифра). Поскольку оперативная память – это конечный ресурс, это может потребовать смещения некоторых данных приложения для свопинга (своп необходим только в том случае, если есть лучший способ использовать ОЗУ).

    В системе без подкачки есть точка, когда данные приложения используют почти всю ОЗУ, и поэтому почти нет места для кеша. Тогда система, вероятно, будет медленной. Ядро не начнет убивать приложения, пока это действительно не произойдет. Пока приложения заполняют только 99% доступной памяти, система продолжает двигаться, но очень медленно, потому что файлы данных должны быть загружены и перезагружены с диска все время. С тем же запуском приложений система будет быстрее с заменой в этот момент.

    Подробнее об этой проблеме см. В этом обсуждении lkml и этом сообщении в блоге .

    Я не знаю прямого способа сообщить ядру зарезервировать минимальное количество ОЗУ для дискового кэша. Вы могли бы настроить небольшую часть своей оперативной памяти в качестве пространства подкачки , возможно, даже сжатого . На этом фронте есть отчеты об успехах , хотя я не делаю никаких гарантий в вашем конкретном случае.

    С помощью комбинации клавиш можно вызвать OOM-killer (без памяти):

    SysRq-F

    Ключ SysRq обычно объединяется в ключ PrtSc на клавиатурах.

    OOM-killer убивает некоторый процесс (-es), и система снова реагирует.

    Thx Raman за советом по этой функции в комментариях выше.

    PS: Это очень помогло мне. Я согласен с мнением, что это самый полезный совет по этой проблеме, если это вызвано Chrome или каким-либо другим программным обеспечением. Но вам нужно иметь в виду, что OOM-killer может убить какой-то действительно важный процесс, используйте его осторожно.

    Это известная ошибка с 2007 года – см. « Замораживание системы» при использовании высокой памяти .

    В этой ситуации Windows отображает диалоговое окно, предупреждающее пользователя о закрытии одного или нескольких приложений.

    Interesting Posts

    mdadm raid не монтируется

    Почему мои виртуальные машины Windows теперь дают мне NS_ERROR_FAILURE при запуске, так как я обновил VirtualBox до 5.1.20?

    Перезагрузка системы во время запуска при кажущейся случайной точке при каждой загрузке

    Bash Script обнаруживает ключ при загрузке

    SFTP Загрузка дросселируется до 10 Мбайт / с на Linux Mint (18.2)

    Использование xbindkeys для привязки мета-ключа (aka super key / Windows key) к левому клику и разрешению перетаскивания

    Использование wget, как загрузить в определенное место, без создания папок и всегда перезаписывать исходные файлы

    Наблюдатель NMI: Watchdog обнаружен жесткий LOCKUP на процессоре

    Debian Jessie: Когда будут удалены пакеты со статусом «id»?

    Может ли btrfs отслеживать / избегать плохих блоков?

    Создайте cron как пользователь apache и запустите его как пользователь root

    Можно ли использовать libc на самой стадии загрузчика?

    Псевдоним CD в каталоге и вызов команды

    Можно ли запустить ls или найти и передать его через stat?

    Как изменить привязки ключевых слов пейджера

    Linux и Unix - лучшая ОС в мире.