Ramdisk vs Windows中的内置IOcaching

我试图了解Windows上的内置IOcaching。 如果一个应用程序写入一个文件,然后读取/写入多个后续时间,似乎IOcaching应该允许这发生与系统内存一样快的速度? 那么Windows会逐渐将更改以非阻塞的方式写回物理磁盘?

不过,我在这个网站上看到了其他与虚拟硬盘有关的问题,用户通过将一部分系统内存挂载为磁盘驱动器,可以看到显着的收益。 如果IOcaching像我上面描述的那样工作,为什么这甚至是必要的? Windows有设置来调整?

这引出了我真正的问题:使用虚拟磁盘并手动将更改手动同步到物理磁盘,甚至几分钟或几小时之后,是否有意义?

编辑:修正了DMA与IO Cache的误解在Evan Anderson的回复中得到纠正。

我认为你直接内存访问(DMA,硬件function)的function与Windows中的cachingpipe理器提供的function相混淆。

DMA是一种允许IO设备直接访问系统内存而无需CPU干预的方法。 应用程序不使用DMA–设备驱动程序。 应用程序远离DMA进程。

应用程序的读/写请求通过IO设备途中的各个层。 cachingpipe理器将通过系统内存来处理大量的caching请求。 IO设备本身的设备驱动程序也可以实现caching。

如果您的应用程序与cachingpipe理器没有很好的交互,但是却使用RAM磁盘(通过基准testing确定),那么请务必使用RAM磁盘。 对我来说,围绕着各种技术的主观“好”来学习跳舞是没有意义的。 就生产部署而言,使用某项技术是否有一个“重点”的关键应该是基于您可以模拟的接近实际情况的基准。 当你修改操作系统,驱动程序堆栈,应用程序代码等时,你应该重做你的基准testing,因为你的旧假设可能不再成立。

我经常看到很多Windows高速caching的问题,比如不把一些最新的数据保存到caching中。 我在笔记本上的Sysinternals RamMap的caching中看到了奇怪的几天100多MB的video文件。 即使在相当长的内存不足时期

所以请确保您的数据落入caching。 你有多less高速缓冲存储器,你正在试验什么大小的文件?