Mxx*_*Mxx 5 performance hard-drive ssd iops
我在市场上为我们的服务器进行存储升级。我正在查看各种 PCIe SSD 设备的基准测试,在比较中我看到 IOPS 在不同队列深度下发生变化。这怎么可能,为什么会这样?我理解事物的方式是:我有一个最大(理论)为 100k IOPS 的设备。如果我的工作负载始终产生 100,001 IOPS,我的队列深度为 1,我说得对吗?但是,从我在基准测试中看到的情况来看,一些设备在较低的队列深度下运行速度较慢,然后在 4-64 的深度处加速,然后在更大的深度处再次减速。队列深度不是操作系统(或者可能是存储控制器)的属性,那么为什么会影响 IOPS?
简短的回答是,如果有多个 IO 请求未完成,硬盘驱动器会优化数据检索,这通常会以延迟为代价来增加吞吐量。
NCQ 会这样做,重新排序 IO 请求以优化吞吐量。
SSD:与机械驱动器的工作方式不同,因为它们具有并行闪存芯片来存储数据。即,如果您一次发出一个 IO 请求,则延迟(搜索 + 读取时间)决定 IOPS。但是,如果您一次发出 4 个请求,则 ssd 磁盘可能能够以并行或其他优化方式检索它们,并且您可能会获得 4 倍的吞吐量。
队列深度越高,优化磁盘的可能性就越大。由于 IOPS 是吞吐量的函数,因此在更高的队列深度时会增加 IOPS。
编辑:
真正的队列驻留在发出所有请求的操作系统中。也就是说,我猜想控制器驱动程序将一定数量的队列传递给控制器和磁盘,以便它们可以在优化的队列深度下工作。磁盘必须有自己的队列才能优化。
归档时间: |
|
查看次数: |
6070 次 |
最近记录: |