Как убедиться, что файлы с отображением памяти всегда находятся в ОЗУ
-
27-10-2019 - |
Вопрос
Можно ли создать файл с отображением памяти для межпроцессной связи с гарантией того, что контент всегда хранится в оперативной памяти и не промывается в файл страницы?
В настоящее время я работаю над приложением OLAP на заказ. Основная идея состоит в том, чтобы иметь один процесс, подобный банку памяти, который содержит все данные, и несколько рабочих процессов, которые фактически выполняют расчет. Хотя обычно все работает очень плавно, время от времени существует икота производительности, когда работник пытается создать представление о части файла, который некоторое время не использовался - отсюда и мой вопрос.
Количество оперативной памяти не является проблемой (Windows/64 -бит) - мы просто не знаем, возможно ли помешать системе использовать файл страницы.
Решение
Вы, вероятно, ищете VirtualLock
функция
Блокирует указанную область виртуального адресного пространства процесса в физическую память, гарантируя, что последующий доступ к региону не будет понести ошибку страницы.