Каков размер буфера по умолчанию для CreateFile в Windows? - PullRequest
0 голосов
/ 18 мая 2009

Когда функция CreateFile вызывается без флага FILE_FLAG_NO_BUFFERING, Каков размер внутреннего буфера операционной системы?

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

Ответы [ 3 ]

0 голосов
/ 11 июня 2009

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

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Control \Session Manager \Memory Management] LargeSystemCache

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

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

0 голосов
/ 28 августа 2010

Если вы используете без буферизации, на самом деле нет буфера для ввода / вывода, кроме того, который вы дали для чтения / записи. (Это за исключением сжатых файлов, которые представляют собой другой шарик воска.)

В этом случае системный кеш игнорируется, поэтому вам необходимо (см. MSDN ) быть осторожным с выравниванием и размером вашего ввода / вывода.

0 голосов
/ 18 мая 2009

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

...