本文主要介绍如何在挂载NVMe磁盘的Linux操作系统实例中,配置NVMe磁盘的超时时间。
注意
本实践仅针对Linux操作系统且使用NVMe磁盘的实例有效,例如i3s、ebmg3id、ebmhpcpni2l等规格。更多规格详情可查看实例规格介绍。 参数说明
使用NVMe(Nonvolatile Memory Express,非易失性内存标准)磁盘的实例,可通过如下参数配置NVMe磁盘进行I/O命令或Admin命令超时时间。
用于指定设备I/O命令(用于数据传输操作的命令,如读写磁盘)的超时时间,单位秒,默认为30秒。
当驱动检测到I/O操作超时,会唤醒超时Handler(指处理超时错误的机制或模块),根据错误处理策略,决定重试I/O操作、返回失败信息或进行设备恢复。
用于指定设备Admin命令(用于主机管理和控制SSD操作的命令,如创建I/O的提交队列)的超时时间,单位秒,默认为60秒。
当驱动检测到Admin操作超时,会唤醒超时Handler(指处理超时错误的机制或模块),根据错误处理策略,决定重试I/O操作、返回失败信息或进行设备恢复。
操作场景
提升I/O响应时间
对于需要快速响应的应用程序,您可以适当减小超时时间,提升I/O操作响应速度。
提升资源利用率
若资源紧张,需要提高资源利用率,您可以适当减小超时时间,可以更快地释放超时的I/O操作所占用的资源,以便其他任务或I/O操作可以及时获取资源,提高系统的整体效率。
增加I/O吞吐量
如需提高NVMe磁盘的I/O吞吐量,您可以适当增加超时时间,可以允许更多的I/O操作同时进行,从而充分利用 NVMe 设备的并行处理能力,提高数据传输速度和整体性能。
增加可靠性和数据完整性
对于需要高可靠且需要数据完整的场景,您可以适当增加超时时间,确保I/O操作有足够的时间完成,减少因超时导致的数据丢失或错误。
注意
超时参数原理是增大延时容忍度,即延迟发送abort(中止)命令。当超时时间设置过大,并且磁盘后续也没响应时,会导致在很长一段时间内NVMe磁盘的I/O操作没有被abort(中止),也不会进行重试,进而使得业务程序卡在了该I/O操作中,运行异常。
操作步骤
步骤一:配置超时参数
- 执行如下命令,查看grub文件是否已配置超时参数。
- 若无回显值,请执行如下命令,在grub文件中新增超时参数。
说明
请按需将命令中4294967295替换为实际超时时间,单位秒。
- 若回显如下所示,请执行如下命令,修改超时参数值。
-
- 按i键进入编辑模式,修改nvme_core.io_timeout与nvme_core.admin_timeout参数值。
-
- 按esc键,输入:wq按回车键,保存并退出文件。
- 根据操作系统与启动方式类型,执行如下命令固化超时参数配置。
步骤二:验证配置
- 如下图所示,实例I/O操作与Admin操作的超时时间均为4294967295秒。
-
- 如下图所示,实例I/O操作与Admin操作的超时时间均为4294967295秒。
-