预热磁盘缓存

时间:2018-05-16 22:39:29

标签: windows io

经过一些理论上的讨论,我决定做一些研究,但我没有找到任何结论。

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

我知道Windows会对单个文件进行预读,但如果我有一个包含数千个文件的目录会怎么样?

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

如果我启动低优先级后台线程,打开所有文件以进行读取和关闭,该怎么办? 我当然可以将所有文件映射到内存并将它们固定在RAM中,但这可能会使I / O的主要工作线程处于饥饿状态。

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

(我当然可以进行基准测试,我会,但我想更多地了解这是如何工作的,以便更科学,更少货物化。)

0 个答案:

没有答案