Как намекнуть ОС, какие блоки памяти не следует переставлять на диск? - PullRequest
0 голосов
/ 19 сентября 2018

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

Например, у меня есть 2 блока памяти, оба не используются в течение некоторого времени.Но я не хочу, чтобы первый блок был перенесен на диск, потому что приложение чего-то ждет, и этот блок должен быть обработан как можно скорее.Другой блок не так важен, поэтому его можно без сомнения перенести на диск.

Возможно, кросс-платформенный способ не существует, но, возможно, существуют способы для ОС (Windows, Linux и т. Д.) Илихакерские уловки, чтобы расставить приоритеты подкачки и «пометить» определенные блоки памяти, которые следует поменять местами в последний раз?

1 Ответ

0 голосов
/ 19 сентября 2018

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

  1. Страница в диапазоне памяти навалом, если она в данный моментpaged out
  2. Не выгружайте его, если не работаете под сильным давлением памяти

mlock можно использовать, чтобы сказать «никогда не меняйте местами», но этобольше не совет в этот момент;вы сказали операционной системе никогда заменять ее, даже при сильном нагружении памяти (если слишком много процессов делают это, вы можете вызвать ошибки памяти или значительное снижение производительности, поскольку менее важная память вынуждена оставатьсярезидент за счет более важной памяти).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...