Windows 预热磁盘缓存

Windows 预热磁盘缓存,windows,io,Windows,Io,经过今天的一些理论讨论,我决定做一些研究,但我没有发现任何结论 问题是: 我们已经编写了一个工具,可以从数TB的数据集中读取大约10Gb的图像文件。我们希望通过最小化I/O开销来加快执行时间。我们的想法是“预热”磁盘缓存,因为我们事先知道在工具执行时将从哪个目录读取。是否有任何API或方法向Windows提供此提示,以便它可以开始预热磁盘缓存,加快将来的磁盘访问,因为文件已经存在于RAM中(在我们运行此工具的机器上有很多) 我知道Windows对一个文件进行预读,但是如果我有一个包含数千个文件的

经过今天的一些理论讨论,我决定做一些研究,但我没有发现任何结论

问题是: 我们已经编写了一个工具,可以从数TB的数据集中读取大约10Gb的图像文件。我们希望通过最小化I/O开销来加快执行时间。我们的想法是“预热”磁盘缓存,因为我们事先知道在工具执行时将从哪个目录读取。是否有任何API或方法向Windows提供此提示,以便它可以开始预热磁盘缓存,加快将来的磁盘访问,因为文件已经存在于RAM中(在我们运行此工具的机器上有很多)

我知道Windows对一个文件进行预读,但是如果我有一个包含数千个文件的目录呢

我还没有找到任何直接的win32 API或命令行工具来直接执行此操作

如果我启动一个低优先级的后台线程,打开所有文件进行读取并关闭它们呢? 当然,我可以将所有文件映射到内存中,并将它们固定在RAM中,但这可能会导致I/O的主工作线程饥饿

这里的一般想法是,工具“突发”I/O请求,因为每个线程都将按顺序执行I/O和CPU处理,因此我们可以使用“空闲”I/O时间将剩余文件预加载到RAM中

(我当然可以做基准测试,我也会,但我想更多地了解它是如何工作的,以便更科学、更少迷信)