当调用CreateFile函数而没有标志FILE_FLAG_NO_BUFFERING时, 操作系统内部缓冲区的大小是多少?
如果我的缓冲区大小大于Windows的内部缓冲区,我可以 完全耗尽磁盘的吞吐量?
答案 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大小的原因。