Отключение файла подкачки только для приложения?

У меня есть приложение реального времени, работающее на сервере с ужасным временем доступа к диску (фактическая скорость передачи велика, но запрос доступа к диску может занять несколько секунд, прежде чем он будет предоставлен).

Windows перемещает память в файл подкачки, даже если доступно много физической памяти, поэтому обычным приложениям может потребоваться доступ к диску, даже если они никогда не пытаются получить доступ к диску явно.

Есть ли способ прагматически отключить файл подкачки для приложения, а не отключать файловую систему подкачки в масштабе всей системы?


person Mr. Smith    schedule 12.02.2013    source источник
comment
Я знаю только VirtualLock msdn. microsoft.com/en-us/library/windows/desktop/, который позволяет блокировать области памяти в физической памяти.   -  person Eelke    schedule 12.02.2013
comment
Запускали ли вы мониторинг производительности, чтобы убедиться, что сбои страниц являются узким местом в производительности?   -  person Michael    schedule 12.02.2013
comment
Windows может спекулятивно копировать память в файл подкачки. Это не означает, что оперативная память сбрасывается или что приложению потребуется доступ к диску. Эта упреждающая копия — единственная причина, по которой современные версии будут записывать в файл подкачки, и это фоновая запись. Согласен с Михаилом, преждевременная оптимизация.   -  person MSalters    schedule 12.02.2013
comment
@MSalters Я не могу найти веб-источники, в которых говорится, что копирование выполняется в отдельном потоке.   -  person Mr. Smith    schedule 12.02.2013
comment
@Mr.Smith: Это потому, что это не будет сделано с использованием потока пользовательского режима в вашем процессе.   -  person MSalters    schedule 12.02.2013


Ответы (1)


Вы можете использовать VirtualLock, чтобы заблокировать указанную область. виртуального адресного пространства процесса в физическую память, гарантируя, что последующий доступ к региону не приведет к ошибке страницы.

person Richard Harrison    schedule 12.02.2013
comment
Я беспокоюсь, что библиотеки, которые я использую, могут по-прежнему вызывать ошибку страницы. - person Mr. Smith; 12.02.2013
comment
согласился, что общие библиотеки DLL могут быть проблемой, однако можно использовать методы проводника процессов, чтобы также заблокировать эти разделы. Хотя это действительно другой вопрос. - person Richard Harrison; 13.02.2013