Мы все испытали его - некоторую программу просят сделать что-то, что требует огромного объема памяти. Это покорно пытается выделить всю эту память, и система сразу начинает перегружаться, подкачивая бесконечно и становясь вялой или небыстро реагирующей.
Я последний раз испытал это на своем ноутбуке Ubuntu из-за сценария Matlab, пытающегося выделить смехотворно огромную матрицу. После ~5 + минуты перегрузки, я смог к Ctrl-F1 к консоли, и уничтожьте Matlab. У меня очень была бы некоторая горячая клавиша, которая дала бы мне контроль системы сразу и позволила бы мне уничтожать незаконный процесс; или, возможно, просто тихо откажитесь выделять такой большой буфер.
Что самый быстрый путь состоит в том, чтобы восстановить управление системой Linux, которая стала небыстро реагирующей или чрезвычайно вялой из-за чрезмерного свопинга?
Существует ли эффективный способ препятствовать тому, чтобы такой свопинг произошел во-первых, например, путем ограничения объема памяти, который процессу позволяют попытаться выделить?
Нажмите Alt-SysRq-F для уничтожения процесса с помощью большую часть памяти:
Вы можете нажимать Ctrl-z для приостановки программы. Затем можно сделать kill %1
(или независимо от того, что число задания, или можно использовать PID).
Можно использовать ulimit
управляйте, чтобы попытаться ограничить объем памяти, доступный процессу.
Было бы хорошо, если бы GUI имел горячую клавишу для отправки, SIGSTOP к любому приложению фокусируется!
Всегда существует классическое xkill
команда (от xorg-x11-apps-7.4-14.fc14.src.rpm в моей системе). Я предполагаю, что не должно быть слишком трудно сделать клон, который отправляет SIGSTOP вместо того, чтобы уничтожить целевое окно.