Я работаю над продуктом для резервного копирования файлов, поэтому мы часто сталкиваемся с подобным сценарием, когда наш собственный доступ к файлам заставляет менеджер кэша хранить данные, что может привести к резкому увеличению использования памяти.
По умолчанию менеджер кэша Windows будет пытаться быть полезным, читая заранее и сохраняя данные файла на случай, если они снова понадобятся.
Есть несколько разделов реестра, которые позволяют настроить поведение кэша, и некоторые из наших клиентов добились хороших результатов с этим.
XP уникален тем, что имеет некоторые серверные возможности, но по умолчанию оптимизирован для настольных программ, а не для кэширования. Вы можете включить режим системного кэширования в XP, в результате чего будет выделено больше памяти для кэширования. Это может улучшить производительность, или вы уже делаете это, и это имеет отрицательный побочный эффект! Вы можете прочитать об этом здесь
Я не могу порекомендовать пользовательский менеджер памяти, но я знаю, что большинство приложений с большим весом имеют собственное кэширование (Exchange, SQL). Вы можете наблюдать это, запустив Process Monitor.
Если вы хотите полностью запретить менеджеру кэша использовать память для кэширования ваших файлов, вы должны отключить кэширование как чтения, так и записи:
FILE_FLAG_NO_BUFFERING и
FILE_FLAG_WRITE_THROUGH
Есть и другие подсказки, которые вы можете дать CM (произвольный доступ, временный файл). Прочитайте этот документ по поведению кэширования здесь
Вы все еще можете получить хорошую производительность чтения, даже если вы отключите кэширование, но вам придется эмулировать поведение менеджера кэша, имея собственные фоновые потоки, выполняющие опережающие операции чтения
Кроме того, я бы порекомендовал перейти на ОС серверного класса, даже Windows 2003 предоставит вам больше возможностей для настройки менеджера кэша. И, конечно, если вы перейдете на Windows 7 / Server 2008, вы получите еще больше улучшений производительности при тех же физических ресурсах из-за динамического размера выгружаемого / невыгружаемого пула и улучшений рабочего набора. Есть хорошая статья на эту тему здесь