Windows中CreateFile的默认缓冲区大小是多少?

时间:2009-05-18 02:04:23

标签: winapi buffer createfile

当调用CreateFile函数而没有标志FILE_FLAG_NO_BUFFERING时, 操作系统内部缓冲区的大小是多少?

如果我的缓冲区大小大于Windows的内部缓冲区,我可以 完全耗尽磁盘的吞吐量?

3 个答案:

答案 0 :(得分:0)

它可能因Windows版本和Windows版本而异,也取决于可用RAM的数量。您应该只使用适合您应用程序的缓冲区大小进行读写操作,而不是依赖于任何特定的内容。

答案 1 :(得分:0)

这取决于您拥有多少RAM以及如何配置机器。服务器通常配置为特权系统缓存。您可以通过更改以下注册表项来更改它

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

SetSystemFileCacheSize function可用于更改缓存大小。但是,根据我的理解,设置工作集大小更像是对操作系统的暗示,而不是硬限制。

关于你的第二个问题,我不确定你的意思。我不知道缓冲区的大小会如何影响吞吐量,但我确信如果我错了,有人会纠正我。

答案 2 :(得分:0)

如果您正在使用no-buffering,那么除了您给读/写的I / O之外,I / O确实没有缓冲区。 (这不是压缩文件,这是一个不同的蜡球。)

在这种情况下会忽略系统缓存,这就是您需要(请参阅MSDN)注意对齐和I / O大小的原因。