2013-02-12 7 views
4

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

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

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

+1

Я знаю только о VirtualLock http://msdn.microsoft.com/en-us/library/windows/desktop/aa366895(v=vs.85).aspx, который позволяет блокировать области памяти в физической памяти. – Eelke

+0

Запустили ли вы мониторинг производительности, чтобы убедиться, что ошибки страниц являются основным узким местом производительности? – Michael

+0

Windows может копировать _copy_ в файл страницы, спекулятивно. Не означает, что ОЗУ отбрасывается или что для приложения потребуется доступ к диску. Эта превентивная копия - единственная причина, по которой современные версии будут записываться в файл подкачки, и это фоновая запись. Согласитесь с Майклом, преждевременная оптимизация. – MSalters

ответ

4

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

+0

Я беспокоюсь, что библиотеки, которые я использую, могут по-прежнему иметь страницу. –

+0

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