У меня система с большим объемом памяти. Прямо сейчас, чтобы предотвратить подкачку одного приложения, я полностью отключил файл подкачки. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу максимально использовать память для одного процесса, который меня волнует. Я хочу отключить разбиение на страницы для одного процесса, чтобы он никогда не выгружался и мог использовать большую часть (95%?) Памяти; все остальные процессы должны быть выведены на страницу. Прямо сейчас мы используем ~ 80% доступной памяти с отключенным файлом подкачки, но мы знаем, что нас не волнует, что эти процессы отправляются в файл подкачки. Это не программа с открытым исходным кодом, которую я запускаю, поэтому я не могу изменить код для использования других вызовов .NET / Windows для предотвращения разбиения на страницы.
Я думаю, что в Linux это называется «swappiness».
Вы не можете сказать O.S. хранить данные процесса в памяти; процесс может сделать это сам, если у него есть право «блокировать страницы в памяти», но он должен запрашивать это явно в коде; в противном случае Windows будет выгружать страницу по своему усмотрению.
Если вы полностью отключите файл подкачки, Windows просто зарезервирует для себя часть памяти и начнет отклонять запросы на выделение памяти, когда уже используется слишком много памяти.
Если вы оставите файл подкачки включенным (как это действительно необходимо), у вас нет абсолютно никакого контроля над тем, что и когда будет выгружено.
В любом случае, вы должны больше доверять диспетчеру памяти: его задача - выгружать неиспользуемые / ненужные данные, и если процесс активно обращается к своей памяти, очень мало шансов, что он будет выгружен. Если, конечно, использование памяти не настолько велико, что система просто не может с этим справиться; но если это так, вам действительно стоит подумать о том, чтобы добавить больше памяти в ящик.