假设有 25 个进程,每个进程都想读取和索引一个大文件(例如 1GB)。硬盘驱动器的吞吐量可能达到约 100MB/秒,但这些进程之间移动所涉及的磁头移动和旋转延迟非常大,因此吞吐量可能会降低到 5MB/秒,或者仅为传统驱动器吞吐量的 5%。
如果硬盘要读取大量数据(比如 32MB)或者在进入下一个过程之前长时间(比如 200ms)读取任何数据,文件 IO 可能会以延迟为代价接近硬盘的全部吞吐量。
当延迟比吞吐量更重要时,Windows 是否有这样的功能来实现这一目标?
答案1
这就是NCQ 协议适用于。支持 NCQ 的驱动器会查看所有传入的命令并对其进行重新排序,以便更有效地处理这些命令(本质上,重新排序命令就是你要问的)。
话虽如此,我在你的示例中看到磁盘队列深度为 27,因此 NCQ 甚至无法提供帮助。这是 RAID 的问题(可能与更快的物理存储相结合)。
那里是可以在 Windows 中调整的存储参数,特别是与缓存行为相关的参数,但这对您的情况帮助不大。