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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
17 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Зиганшин Руслан
Компьютеру почти 11 лет, мат. плата (socket 775, поддержка только одноядерных процессоров и до 2 гб ddr2 ram) и процессор (pentium 4), как самые дорогие детали, до сих пор не заменены. Может так зависнуть при игре младшего брата в garrys mod, что переключение по ctrl+alt+f1 занимает несколько минут, а потом из-за таймаута не удаётся войти в свою учётку чтобы если не завершить зависший процесс, то хотя бы выполнить sudo reboot. Под своп выделено 2 гб на hdd. На апгрейд пока нет средств. 
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

dimas-8
может, попробовать nice-level повысить, что означает меньший приоритет? при
желании ядра покомпилять, мб патченые (bfs какой-нибудь вместо стандартного
шедулера, поиграться с частотой этого... как его... таймера, в общем)
да, про alt+SysRq+REISUB в курсе?


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

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Зиганшин Руслан
Про REISUB в курсе

20 марта 2017 г. 21:55 пользователь "dimas" <[hidden email]> написал:
может, попробовать nice-level повысить, что означает меньший приоритет? при
желании ядра покомпилять, мб патченые (bfs какой-нибудь вместо стандартного
шедулера, поиграться с частотой этого... как его... таймера, в общем)
да, про alt+SysRq+REISUB в курсе?


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


Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Eugene Berdnikov
In reply to this post by Зиганшин Руслан
On Mon, Mar 20, 2017 at 08:47:06PM +0300, Зиганшин Руслан wrote:
> Компьютеру почти 11 лет, мат. плата (socket 775, поддержка только
> одноядерных процессоров и до 2 гб ddr2 ram) и процессор (pentium 4), как
> самые дорогие детали, до сих пор не заменены. Может так зависнуть при игре
> младшего брата в garrys mod, что переключение по ctrl+alt+f1 занимает
> несколько минут, а потом из-за таймаута не удаётся войти в свою учётку
> чтобы если не завершить зависший процесс, то хотя бы выполнить sudo reboot.
> Под своп выделено 2 гб на hdd. На апгрейд пока нет средств.

 Можно через ulimit или cgroups ограничить потребление памяти игрушкой.

 Вероятно, игрушка перестанет играть, но это правильно: освободится масса
 времени, которое можно потратить либо на изучение матчасти (чтобы понять,
 почему бесплатного решения нет), либо на зарабатывание денег на апгрейд.
--
 Eugene Berdnikov

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Зиганшин Руслан
Оффтоп: С зарабатыванием небольшие проблемы: я сейчас на больничном после курса лечения в ПНД и получаю инвалидность.

20 марта 2017 г. 23:31 пользователь "Eugene Berdnikov" <[hidden email]> написал:
On Mon, Mar 20, 2017 at 08:47:06PM +0300, Зиганшин Руслан wrote:
> Компьютеру почти 11 лет, мат. плата (socket 775, поддержка только
> одноядерных процессоров и до 2 гб ddr2 ram) и процессор (pentium 4), как
> самые дорогие детали, до сих пор не заменены. Может так зависнуть при игре
> младшего брата в garrys mod, что переключение по ctrl+alt+f1 занимает
> несколько минут, а потом из-за таймаута не удаётся войти в свою учётку
> чтобы если не завершить зависший процесс, то хотя бы выполнить sudo reboot.
> Под своп выделено 2 гб на hdd. На апгрейд пока нет средств.

 Можно через ulimit или cgroups ограничить потребление памяти игрушкой.

 Вероятно, игрушка перестанет играть, но это правильно: освободится масса
 времени, которое можно потратить либо на изучение матчасти (чтобы понять,
 почему бесплатного решения нет), либо на зарабатывание денег на апгрейд.
--
 Eugene Berdnikov

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

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

Может помочь sysctl vm.vfs_cache_pressure=50 , увеличить своп (можно
использовать swapspace чтобы диск не переразмечать) , может быть ещё
уменьшить sysctl vm.swappiness . Настройки сохранять в /etc/sysctl.conf

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

yuri.nefedov
In reply to this post by Зиганшин Руслан
On Mon, 20 Mar 2017, Зиганшин Руслан wrote:

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

   Обычно, расчетное время жизни полупроводниковых устройств, исключая
   коммуникационное и специализированное оборудование, составляет
   100,000 часов - 11.5 лет. После этого срока количество
   отказов стремительно растет и ничего тут особенно не сделаешь.
   Это может быть питание, память, чипсет, процессор,.. да что угодно.

   Можно попробовать watchdog настроить, что бы корректно
   перезагружал:
   watchdog - system health checker and software/hardware watchdog handler

Ю.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Андрей-10
In reply to this post by Зиганшин Руслан
Вставлю и свои 5 копеек. У меня есть ноут древний. Ставил на него дебиан, убунту. симптомы ровно такие же, но возникали они спонтанно, то есть при любых действиях, а проблема оказалось в жестком диске. Под виндой он более менее стабильно работает, а под линем начинается такая фигня почти сразу после загрузки. Проверь винт или если есть другой, то попробуй на него перенести систему

20:47, 20 Март 2017 г., Зиганшин Руслан написал (-а):
Компьютеру почти 11 лет, мат. плата (socket 775, поддержка только одноядерных процессоров и до 2 гб ddr2 ram) и процессор (pentium 4), как самые дорогие детали, до сих пор не заменены. Может так зависнуть при игре младшего брата в garrys mod, что переключение по ctrl+alt+f1 занимает несколько минут, а потом из-за таймаута не удаётся войти в свою учётку чтобы если не завершить зависший процесс, то хотя бы выполнить sudo reboot. Под своп выделено 2 гб на hdd. На апгрейд пока нет средств. 
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Lex2d aka Lex
Помониторить своп. Если зависания от его заполнения, то Zswap (уменьшит ио) и увеличить своп.

Вин ХП поставить. Оно быстрее линуксов на слабых машинах

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Max Dmitrichenko-4
In reply to this post by Зиганшин Руслан
Сколько "интересных" советов от тех, кто не понимает сути проблемы.

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

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

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

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

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


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



--
With best regards
  Max Dmitrichenko
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Коротаев Руслан
В сообщении от [Вт 2017-03-21 19:53 +0300]
Max Dmitrichenko <[hidden email]> пишет:

> Проблема тут не в неисправном железе, не в приоритетах, не в шедулере и не в
> подобных "твиках" системы. Происходит тут следущее. Пока есть доступная память
> и swap, то ОС активно использует и то, и другое. Но в силу каких-то
> особенностей игры, со временем её потребление памяти разрастается, и она
> съедает всю доступную память+swap, и запрашивает ещё чуть памяти. Если бы игра
> попросила сразу много памяти, то ОС вызвала бы OOM-killer и убила бы игрушку.
> Но игрушка просит совсем чуть-чуть. В этот момент Linux начинает очень странную
> борьбу за память. Поскольку выгрузить данные какой-нибудь софтины в swap более
> нельзя, Linux начинает выгружать из памяти код запущенных процессов. Сделать
> это он имеет право даже при отсутствие swap'а, т.к. копия этого кода есть на
> жестком диске и он всегда сможет подгрузить этот код. Дальше начинается
> чертовщина, потому что выгруженные процессы начинают просыпаться, и линукс
> обратно начинает загружать их с ЖД в память, процесс приобретает лавинообразный
> характер, так как процессы пробуждаются быстрее, чем ОС успевает их подгружать.
>
> Весь этот процесс напоминает сцену из фильма "Собачье сердце": когда профессор
> передвигался на двух стульях по затопленной квартире - чтобы сделать очередной
> шаг, надо освободить первый стул, и переставить его вперед.
>
> Цейтнот и комп "виснет", так как, чтобы залогиниться и зайти с другой консоли,
> нужно выполнить как минимум несколько процессов - подгрузить getty, запустить
> процесс login, а потом shell - а все они выгружены из памяти.
>
> Как бороться? 
> 1) Увеличить swap. 2 Гб явно маловато. Общие рекомендации для пользовательского
> компьютера состоят в том, что своп должен быть в два раза больше чем объем RAM.
> Если вас останавливает то, что нужно для это переразбивать разделы, то можете
> сделать два свопа - один в существующем разделе на 2 Гб, второй просто файлом
> на ЖД в любой существующей файловой системе. Однако, если в игрухе течет
> память, то это лишь отсрочит сценарий, описанный выше.
>
> 2) Ограничь игруху (или пользователя брата) в использовании памяти. Как только
> она превысит лимит, то будет убита. 
>
>
> 20 марта 2017 г., 20:47 пользователь Зиганшин Руслан <[hidden email]
> > написал:
>
>     Компьютеру почти 11 лет, мат. плата (socket 775, поддержка только
>     одноядерных процессоров и до 2 гб ddr2 ram) и процессор (pentium 4), как
>     самые дорогие детали, до сих пор не заменены. Может так зависнуть при игре
>     младшего брата в garrys mod, что переключение по ctrl+alt+f1 занимает
>     несколько минут, а потом из-за таймаута не удаётся войти в свою учётку
>     чтобы если не завершить зависший процесс, то хотя бы выполнить sudo reboot.
>     Под своп выделено 2 гб на hdd. На апгрейд пока нет средств. 
Не знал что линукс может выгружать код запущенных процессов без свопа,
киньте ссылку почитать про это. Однако, если такое происходит, тогда
остается единственный вариант — загружать всё в память и работать только
в ней. То есть вам нужно сделать LiveCD и загрузить его в память.

Возьмите готовый [1] на базе например Xfce, там всё как обычно, только
рутовый раздел запакован и сжат в Squashfs. Распакуйте, сделайте chroot,
удалите офис (и всё что считаете лишним, так как у вас всего 2 ГБ),
добавьте вашу игрушку и снова запакуйте. Теперь загружайтесь с
параметром toram (загрузить в память).

Но прежде чем заморачиваться с LiveCD, попробуйте отключить своп совсем
и посмотреть что будет. У меня был комп AMD A4 2 ядра и 2 Гб оперативки
я решил провести эксперимент с cgroups [2]. Ограничил браузер Chrome
одним ядром и одним гигабайтом оперативки, но разрешил своп и начал
открывать вкладки новостных сайтов, дабы создать нагрузку. В какой-то
момент, он начал свопить, когда своп достиг примерно 25% от оперативки,
зависло всё, так же как и у вас, зайти в консоль и вырубить его занимало
несколько минут.

Так что увеличение свопа не вариант, можно порекомендовать zRam [3], но
у вас мало оперативки, если игрушка активно свопит, то это всё равно не
поможет.

[1]: https://www.debian.org/CD/live/index.ru.html
[2]: https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt
[3]: https://ru.wikipedia.org/wiki/ZRam

--
Коротаев Руслан
https://blog.kr.pp.ru

smime.p7s (6K) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Max Dmitrichenko-4

21 марта 2017 г., 23:08 пользователь Коротаев Руслан <[hidden email]> написал:

Не знал что линукс может выгружать код запущенных процессов без свопа,
киньте ссылку почитать про это.

Пройдите по ссылке ниже. Узнайте сначала что такое anonymous mapping, потом file backed mapping, затем перейдите к вопросу What is thrashing?


--
With best regards
  Max Dmitrichenko
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Max Dmitrichenko-4
In reply to this post by Коротаев Руслан


21 марта 2017 г., 23:08 пользователь Коротаев Руслан <[hidden email]> написал:
Однако, если такое происходит, тогда
остается единственный вариант — загружать всё в память и работать только
в ней. То есть вам нужно сделать LiveCD и загрузить его в память.

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


--
With best regards
  Max Dmitrichenko
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Igor Savlook
In reply to this post by Max Dmitrichenko-4
Тут видимо еще и дело в том что все разделы и своп находятся на одном
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 | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Max Dmitrichenko-4


22 марта 2017 г., 14:39 пользователь Igor Savlook <[hidden email]> написал:
Тут видимо еще и дело в том что все разделы и своп находятся на одном
hdd. Собсно можно чуток увеличить скорость перенеся своп на другой hdd.

Скорость можно. Состояние системы, когда она свалилась в такой штопор, - нет. Вы отсрочите его наступление просто на некоторое количество времени. То есть условно так система ложилась, когда игруха выделяла себе гигабайт памяти, а так она ляжет, когда она выделит на 50 мегабайт больше.

--
With best regards
  Max Dmitrichenko
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Коротаев Руслан
In reply to this post by Max Dmitrichenko-4
В сообщении от [Ср 2017-03-22 14:00 +0300]
Max Dmitrichenko <[hidden email]> пишет:

> Пройдите по ссылке ниже. Узнайте сначала что такое anonymous mapping, потом
> file backed mapping, затем перейдите к вопросу What is thrashing?
>
> [1] https://landley.net/writing/memory-faq.txt

Меня просто смутило: «Linux начинает выгружать из памяти код запущенных
процессов. Сделать это он имеет право даже при отсутствие swap'а, т.к.
копия этого кода есть на жестком диске и он всегда сможет подгрузить
этот код».

Я понял это так, не хватает памяти, почему бы не выгрузить рабочий
процесс, например иксы. Теперь всё прояснилось — когда памяти не
хватает, ядро начинает выделять память за счет страничного кэша (page
cache). О страничном кэше можно почитать здесь [1].

[1]: https://habrahabr.ru/company/smart_soft/blog/228937/

--
Коротаев Руслан
https://blog.kr.pp.ru

smime.p7s (6K) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

Max Dmitrichenko-4
22 марта 2017 г., 16:44 пользователь Коротаев Руслан
<[hidden email]> написал:
>
>
> Меня просто смутило: «Linux начинает выгружать из памяти код запущенных
> процессов. Сделать это он имеет право даже при отсутствие swap'а, т.к.
> копия этого кода есть на жестком диске и он всегда сможет подгрузить
> этот код».

А что вас в этом смутило?

> Я понял это так, не хватает памяти, почему бы не выгрузить рабочий
> процесс, например иксы.

Вы поняли правильно. В FAQ, который я указал, это написано явным образом:

  Since every executable program
  and shared library is a file backed mapping, this means the system yanks
  executable pages, which is generally faults back in fairly rapidly since
  they tend to get used a lot.

> Теперь всё прояснилось — когда памяти не
> хватает, ядро начинает выделять память за счет страничного кэша (page
> cache). О страничном кэше можно почитать здесь [1].

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

--
With best regards
  Max Dmitrichenko
Loading...