[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Как предотвратить жёсткие зависания компьютера в ресурсоёмких играх?



Тут видимо еще и дело в том что все разделы и своп находятся на одном
hdd. Собсно можно чуток увеличить скорость перенеся своп на другой hdd.

On Tue, 2017-03-21 at 19:53 +0300, Max Dmitrichenko wrote:
> Сколько "интересных" советов от тех, кто не понимает сути проблемы.
> 
> Проблема тут не в неисправном железе, не в приоритетах, не в шедулере
> и не в подобных "твиках" системы. Происходит тут следущее. Пока есть
> доступная память и swap, то ОС активно использует и то, и другое. Но
> в силу каких-то особенностей игры, со временем её потребление памяти
> разрастается, и она съедает всю доступную память+swap, и запрашивает
> ещё чуть памяти. Если бы игра попросила сразу много памяти, то ОС
> вызвала бы OOM-killer и убила бы игрушку. Но игрушка просит совсем
> чуть-чуть. В этот момент Linux начинает очень странную борьбу за
> память. Поскольку выгрузить данные какой-нибудь софтины в swap более
> нельзя, Linux начинает выгружать из памяти код запущенных процессов.
> Сделать это он имеет право даже при отсутствие swap'а, т.к. копия
> этого кода есть на жестком диске и он всегда сможет подгрузить этот
> код. Дальше начинается чертовщина, потому что выгруженные процессы
> начинают просыпаться, и линукс обратно начинает загружать их с ЖД в
> память, процесс приобретает лавинообразный характер, так как процессы
> пробуждаются быстрее, чем ОС успевает их подгружать.
> 
> Весь этот процесс напоминает сцену из фильма "Собачье сердце": когда
> профессор передвигался на двух стульях по затопленной квартире -
> чтобы сделать очередной шаг, надо освободить первый стул, и
> переставить его вперед.
> 
> Цейтнот и комп "виснет", так как, чтобы залогиниться и зайти с другой
> консоли, нужно выполнить как минимум несколько процессов - подгрузить
> getty, запустить процесс login, а потом shell - а все они выгружены
> из памяти.
> 
> Как бороться? 
> 1) Увеличить swap. 2 Гб явно маловато. Общие рекомендации для
> пользовательского компьютера состоят в том, что своп должен быть в
> два раза больше чем объем RAM. Если вас останавливает то, что нужно
> для это переразбивать разделы, то можете сделать два свопа - один в
> существующем разделе на 2 Гб, второй просто файлом на ЖД в любой
> существующей файловой системе. Однако, если в игрухе течет память, то
> это лишь отсрочит сценарий, описанный выше.
> 
> 2) Ограничь игруху (или пользователя брата) в использовании памяти.
> Как только она превысит лимит, то будет убита. 
> 
> 
> 20 марта 2017 г., 20:47 пользователь Зиганшин Руслан <ziganshinruslan
> @gmail.com> написал:
> > Компьютеру почти 11 лет, мат. плата (socket 775, поддержка только
> > одноядерных процессоров и до 2 гб ddr2 ram) и процессор (pentium
> > 4), как самые дорогие детали, до сих пор не заменены. Может так
> > зависнуть при игре младшего брата в garrys mod, что переключение по
> > ctrl+alt+f1 занимает несколько минут, а потом из-за таймаута не
> > удаётся войти в свою учётку чтобы если не завершить зависший
> > процесс, то хотя бы выполнить sudo reboot. Под своп выделено 2 гб
> > на hdd. На апгрейд пока нет средств. 
> > 
> 
> 
> 
> -- 
> With best regards
>   Max Dmitrichenko


Reply to: