Увеличивается использование кэша Windows для программы создания файлов, написанной на C - PullRequest
2 голосов
/ 09 ноября 2011

У меня есть небольшая тестовая программа, которая создает миллионы файлов (для целей тестирования) в тысячах папок.Это код C с fopen и fclose вызовами.

Этот код прекрасно работает в Linux ( RHEL , SUSE ), но в Windows используется памятьувеличивается с увеличением количества создаваемых файлов (около миллиона файлов).Использование системной памяти увеличивается почти до 8 ГБ (емкость системы), и программа становится очень медленной (я полагаю, из-за подкачки и выхода из страниц).

В настоящее время требования к памяти программы остаются постоянными на уровне около несколькихМб хотя (что и ожидается).Я заметил, что использование кеша в памяти быстро увеличивается по мере того, как программа прогрессирует и продолжает расти в течение всей жизни программы.Как я могу сказать Windows не кэшировать эти файлы или папки и возможно ли это вообще?

1 Ответ

1 голос
/ 09 ноября 2011

Просто предположение, но вы можете просто уничтожить / заполнить файловый кеш файлами, которые больше не нужно использовать. Это замедлит работу системы, поскольку она должна читать файлы с диска. Также диск будет использоваться, пока он это делает.

Можно попробовать использовать Win32 API и CreateFile с флагом файла FILE_FLAG_NO_BUFFERING, чтобы не кэшировать файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...