Сколько "интересных" советов от тех, кто не понимает сути проблемы.

Проблема тут не в неисправном железе, не в приоритетах, не в шедулере и не
в подобных "твиках" системы. Происходит тут следущее. Пока есть доступная
память и swap, то ОС активно использует и то, и другое. Но в силу каких-то
особенностей игры, со временем её потребление памяти разрастается, и она
съедает всю доступную память+swap, и запрашивает ещё чуть памяти. Если бы
игра попросила сразу много памяти, то ОС вызвала бы OOM-killer и убила бы
игрушку. Но игрушка просит совсем чуть-чуть. В этот момент Linux начинает
очень странную борьбу за память. Поскольку выгрузить данные какой-нибудь
софтины в swap более нельзя, Linux начинает выгружать из памяти код
запущенных процессов. Сделать это он имеет право даже при отсутствие
swap'а, т.к. копия этого кода есть на жестком диске и он всегда сможет
подгрузить этот код. Дальше начинается чертовщина, потому что выгруженные
процессы начинают просыпаться, и линукс обратно начинает загружать их с ЖД
в память, процесс приобретает лавинообразный характер, так как процессы
пробуждаются быстрее, чем ОС успевает их подгружать.

Весь этот процесс напоминает сцену из фильма "Собачье сердце": когда
профессор передвигался на двух стульях по затопленной квартире - чтобы
сделать очередной шаг, надо освободить первый стул, и переставить его
вперед.

Цейтнот и комп "виснет", так как, чтобы залогиниться и зайти с другой
консоли, нужно выполнить как минимум несколько процессов - подгрузить
getty, запустить процесс login, а потом shell - а все они выгружены из
памяти.

Как бороться?
1) Увеличить swap. 2 Гб явно маловато. Общие рекомендации для
пользовательского компьютера состоят в том, что своп должен быть в два раза
больше чем объем RAM. Если вас останавливает то, что нужно для это
переразбивать разделы, то можете сделать два свопа - один в существующем
разделе на 2 Гб, второй просто файлом на ЖД в любой существующей файловой
системе. Однако, если в игрухе течет память, то это лишь отсрочит сценарий,
описанный выше.

2) Ограничь игруху (или пользователя брата) в использовании памяти. Как
только она превысит лимит, то будет убита.


20 марта 2017 г., 20:47 пользователь Зиганшин Руслан <
[email protected]> написал:

> Компьютеру почти 11 лет, мат. плата (socket 775, поддержка только
> одноядерных процессоров и до 2 гб ddr2 ram) и процессор (pentium 4), как
> самые дорогие детали, до сих пор не заменены. Может так зависнуть при игре
> младшего брата в garrys mod, что переключение по ctrl+alt+f1 занимает
> несколько минут, а потом из-за таймаута не удаётся войти в свою учётку
> чтобы если не завершить зависший процесс, то хотя бы выполнить sudo reboot.
> Под своп выделено 2 гб на hdd. На апгрейд пока нет средств.
>



-- 
With best regards
  Max Dmitrichenko

Ответить