Кнопка «Убить самый большой процесс»

У этого ноутбука есть SSD, и поэтому я решил опустить своп. В большинстве случаев это хорошо работает, но иногда операционная система немного сокращается, и компьютер становится очень медленным и имеет тенденцию замерзать. Есть ли способ реализовать кнопку «убить самый большой процесс», который идет прямо к ядру в случае, если я заметил, что замораживание достаточно быстро? Или, потому что это компьютер, эвристика, когда он начинает замерзать и снимать самый большой процесс, тоже будет прекрасным.

One Solution collect form web for “Кнопка «Убить самый большой процесс»”

Из вашего комментария это звучит так, будто система просто меняет местами.

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

Поскольку у вас установлено overcommit_memory в 0 (автоматический режим), ядро ​​выполняет перекомпоновку памяти. Поэтому из вашего объясненного поведения звучит так, что система просто сильно меняет местами.

Отсюда есть два варианта.

Уменьшить своп

У вашей системы заканчивается RAM, и поэтому ядро ​​начинает перетаскивать вещи в swap. Если в вашей системе заканчивается своп, он вызывает убийцу OOM. Однако, поскольку у вас осталось свободное место подкачки, этого не происходит.

Ваша первоначальная идея вручную уничтожает процесс.

Вы можете вручную убить процесс, если считаете, что система слишком много меняет, и что-то должно умереть. Это можно сделать через триггеры ядра SysRq.

Ядро имеет то, что он называет «волшебным SysRq». Это немного функциональность, которая говорит ядру выполнять какую-то аварийную операцию. Это могут быть такие вещи, как «перезагрузка всех томов только для чтения», «синхронизация всех файловых систем» или «перезагрузка сейчас». Один из этих вариантов – также вызвать убийцу OOM.

Если ваше ядро ​​имеет волшебный SysRq включен (опция ядра CONFIG_MAGIC_SYSRQ ), вы можете сделать это двумя способами.

  1. Alt + SysRq + f
    Просто нажмите эти 3 клавиши на клавиатуре.
  2. echo f > /proc/sysrq-trigger
    Это будет выполнять ту же задачу, что и метод клавиатуры, но делает это программно.

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

Я лично считаю, что лучшим решением является некоторая опция ядра для вызова OOM killer при принудительной замене. В принципе, пусть работает превентивный своп, но если ядро ​​вынуждено что-то переместить в swap, потому что вы вышли из ОЗУ, тогда вызовите убийцу OOM.
К сожалению, это только мое личное пожелание. Он этого не делает.

  • Каково максимальное значение идентификатора процесса?
  • Как проверить, как долго процесс завершился?
  • «Прекращено» относится к «заблокированному» состоянию?
  • Почему я не могу убить процессы firefox?
  • Что определяет, может ли исполняемый файл запускаться в разных независимых процессах одновременно?
  • Как переключиться на процесс других пользователей?
  • Являются ли состояния процессов, которые готовы и планируют ждать «S»?
  • Процесс со случайным именем
  • В чем разница между pidof и pgrep?
  • Запуск процесса после загрузки
  • Процессы nonsudo kill соответствуют строке
  • Interesting Posts

    Нет звука в Kali Linux 2016 2 на VMWare

    настроить двустороннюю синхронизацию NFS

    Проблема с установкой библиотеки crlibm

    Как прокручивать в терминале по строке в терминале GNOME 2.31.3?

    FreeNAS против обычного (CentOS / Ubuntu) Linux-сервера?

    Когда добавление `/` в каталог меняет его значение?

    Почему команды не работают вместе в VIM, а только отдельно?

    Об отображении деформирования разделов

    ddrescue очень медленно на жестком диске USB

    В чем отличия между virtualbox-linux и установленным Linux?

    lftp с FTPS "Соединение TLS было неправильно завершено. Предполагая EOF. "

    Расшифруйте несколько файлов с защитой паролем и pdf

    Есть ли команда добавить новую строку в текстовый файл, если значение этой строки отличается от следующего?

    Как я могу использовать свой телевизор в качестве второго дисплея по HDMI на Linux в своем родном разрешении?

    Является ли липкий бит не использован в текущих файловых системах

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