![缩短 nvme 超时以失败_早期_ - 影响?](https://linux22.com/image/220032/%E7%BC%A9%E7%9F%AD%20nvme%20%E8%B6%85%E6%97%B6%E4%BB%A5%E5%A4%B1%E8%B4%A5_%E6%97%A9%E6%9C%9F_%20-%20%E5%BD%B1%E5%93%8D%EF%BC%9F.png)
在使用 Linux 内核的 VMware Workstation 虚拟化托管平台上,我经常面临
[ 2181.746685] nvme nvme0: I/O 0 QID 4 timeout, completion polled
我怀疑这是由于虚拟NVMe控制器/VMware虚拟平台的实现存在缺陷造成的。
唉,每次出现这种情况,系统都会或多或少的阻塞30秒。考虑到这个虚拟控制器可以有效地与非常快的真实 SSD 进行通信,但它太长了。
我现在正在考虑调整 Linux NVMe 模块选项,cat /sys/module/nvme_core/parameters
将超时减少(!)到 2 秒 - 毕竟,这是一个非常快的 SSD,几乎已经达到极限,所以如果 NVMe 命令没有在2 秒,除了可疑的虚拟 NVMe 控制器之外的其他设备已关闭。
io_timeout
从 30 秒改为 2 秒有什么缺点?我预计事情会失败快点,这基本上意味着任何故障都会来得更快,这意味着任何恢复机制都会更快地触发。
我看过云供应商的文档,他们建议io_timeout
在其平台上设置为无穷大,但适用于他们的平台不一定是正确的做法我的 VMware Workstation 平台?