Да, это широкий вопрос, но я считаю вполне допустимым. Иногда программы и сценарии занимают слишком много времени или используют слишком много памяти и действительно начинают замедлять мою систему. Штраф. Иногда система тормозит так сильно, что я едва могу скользить-показываю мышку к терминалу и спам Ctrl+C. Это сбивает меня с толку, почему ОС не дает приоритета планирования, чтобы позволить пользователю использовать мышь, клавиатуру и убивать вещи. Всегда видимый это?
> ./program
^C^C^C^C^C^C^C^C^C^C^C^Z^Z^Z^C^C^C^C^C^Clsdhafjkasdf
теперь Ctrl+C не так суров, как некоторые другие (он может быть обработан приложением и даже проигнорирован, но здесь это не так). Ctrl+Z будет выполнять работу слишком хорошо, как я мог бы kill -9 %1
сразу после, но это тоже не работает.
другой способ-перейти на виртуальную консоль Ctrl+Alt+F2, войти и убить обидчика приложение, но поскольку система занята это не работает, и я получаю черный экран. Точно так же я не могу открыть новые терминалы (окно всплывает, но не бросает меня в оболочку). Другие открытые терминалы могут не отвечать или не выполнять команды.
Я подозреваю, что одна из причин, по которой система настолько неоперабельна, - это программа-нарушитель, нажимающая своп и выталкивающая больше основных приложений из основной памяти. Даже самая простая команда, чтобы дать мне подсказку bash или выполнить kill, не может получить цикл в edgeways. У меня нет доказательство этому, потому что я не могу бежать top
когда это произойдет. есть ли варианты, чтобы повысить шансы оригинала Ctrl+C работает?. Может быть, что-то вроде увеличения приоритета X и терминала или автоматического уничтожения программ, которые используют большую часть памяти или начинают слишком много менять местами?
есть ли какой-либо другой linux-fu, который я мог бы использовать для восстановления контроля, когда это произойдет (например,SysRq команды)?
обновление: после еще нескольких тестов я уверен, что это приложения, использующие слишком много памяти и нажав своп. Даже после убийства приложения, о котором идет речь, другим требуется очень много времени, чтобы начать реагировать, как будто они были вытеснены из основной памяти. я бы очень хотел, чтобы какой-то способ автоматически ограничивать высокие программы использования памяти в основной памяти. Если он попадает своп это будет слишком медленно в любом случае, так какой смысл позволить ему продолжать.
примечание: Я не после решения конкретного приложения и не знаю заранее, когда какая-то операция будет жевать память. Я хочу решить эту проблему в масштабах всей системы. Т. е. многие программы вызывают эту. AFAIK я не возился с конфигурацией системы, и это довольно стандартная установка fedora. Я не удивлен этими замедлениями но я хочу больше контроля.
Я хотел бы, чтобы мой менеджер окон работает, и это мои последние курорты чего я надеюсь избежать. Обычно мне это нужно, только если мой GPU застрял в цикле и блокирует X. если включена, Ctrl+Alt+backspace это удобный ярлык, чтобы убить X и все ваши приложения, принимая вас обратно, чтобы войти. Более мощная команда, опять же если включена, is Alt+SysRq+K. Если это не работает, он держит кнопку питания время.
Alt+SysRq+F (спасибо, @Hastur), который убивает процессы захвата памяти довольно разрушительно, но может помочь в крайнем случае.
Update: не совсем уверен во всех последствиях здесь, но предложение @Xen2050 о ulimit
кажется, решить многие проблемы...
TOTAL_PHYSICAL_MEMORY=$(grep MemTotal /proc/meminfo | awk '{print }')
ulimit -Sv $(( $TOTAL_PHYSICAL_MEMORY * 4 / 8))
собираюсь оставить это в моем bashrc и посмотреть, как идут дела.
обновление: вещи в основном кажутся хорошими, за исключением некоторых приложений которые разделяют большие библиотеки и сопоставляют большие файлы. Даже если они потребляют едва ли фактическую память и вряд ли часто попадают в swap. Кажется, что число недостаточно низкое, чтобы убить смертельные приложения для обмена, но оставить обычные (например, 4.6 gb VIRT amarok
) работает.
связанные: https://unix.stackexchange.com/questions/134414/how-to-limit-the-total-resources-memory-of-a-process-and-its-children/174894, но все же проблема ограничения приложений в том, что начинайте часто нажимать своп.
это именно то решение, которое я ищу: возможно ли, чтобы убийца OOM вмешался раньше?