有没有办法从 NVMe 设备获取读/写队列延迟?如果不将其拆分为读/写,那总比没有好,但理想情况下我可以分别查看它们。
我希望低于通常的毫秒级别,但目前还没有发现任何问题。
答案1
NVMe 有日志页,唯一接近您想要的内容是在日志页 02h 中找到的,它包含以下信息:
- 读取的数据单元
- 写入的数据单元
- 主机读命令
- 主机写命令
- 控制器繁忙时间
因此,您可以取主机读写命令的数量,然后将其除以控制器繁忙时间,如果您在相对较短的时间间隔内执行此操作,并从先前的值中减去当前值,您将获得该时间间隔内命令的平均时间。结果不理想,但足够接近了。
如果您使用的是 Linux,则可以使用 nvme-cli 命令来获取此数据。
以上都是内部延迟,如果您想要端到端延迟,则必须在自己的应用程序中自行测量。Linux 中的 /proc/diskstats 中有一个类似的机制,可以显示命令数量和它们的“繁忙时间”平均值。