高级特性 - 中断合并配置(Interrupt Coalescing) (第306页)
NVME2.0协议解读 1 min read

高级特性 - 中断合并配置(Interrupt Coalescing) (第306页)

Blog Author

NVM Express® Base Specification, revision 2.0b 中,Set FeaturesGet Features 命令的部分特性与 中断配置异步事件配置 相关,以下是对这些功能的深入分析。

中断合并配置(Interrupt Coalescing)

Interrupt Coalescing 功能配置了控制器如何延迟中断的触发,目的是减少高频次中断对系统性能的影响。具体配置如下:

命令字段

  • 聚合时间(Aggregation Time,TIME)
  • 该字段指定控制器在因中断合并而延迟中断的最大时间。单位为 100 微秒 的增量。例如,值为 0h 表示没有延迟,控制器会立即触发中断。
  • 控制器可以针对每个中断向量应用不同的聚合时间,或对所有中断向量使用相同的时间设置。

  • 聚合阈值(Aggregation Threshold,THR)

  • 该字段指定每个中断向量在触发中断之前,至少需要积累的 完成队列条目数量
  • 值为 0h 表示不进行中断合并,即每个完成的命令都会立即触发中断。

应用

  • 通过这两个字段,控制器能够控制中断触发的频率,从而有效降低系统的中断处理负载,提升整体性能。

命令完成

  • Set Features 命令成功完成后,控制器会更新相关的中断合并设置,并通过 完成队列条目 返回执行状态。

中断向量配置(Interrupt Vector Configuration)

此功能允许针对特定的 中断向量 配置中断合并设置。控制器默认为每个中断向量启用中断合并设置,但对于 管理员完成队列,不支持中断合并。

命令字段

  • 中断向量(Interrupt Vector,IV)
  • 该字段指定配置设置应用于哪个中断向量。

  • 中断合并禁用(Coalescing Disable,CD)

  • 如果该位设置为 1,则该中断向量不应用任何中断合并设置。
  • 如果设置为 0,则会应用中断合并设置。

配置要求

  • 主机在发出 Set Features 命令之前,必须为指定的中断向量配置一个有效的 I/O 完成队列。如果指定的中断向量无效或未与任何 I/O 完成队列关联,控制器应中止命令并返回 Invalid Field in Command 错误代码。

命令完成

  • 控制器会在处理完相关配置后,通过 完成队列条目 返回配置结果,表示该中断向量的中断合并配置是否成功应用。

异步事件配置(Asynchronous Event Configuration)

此功能用于控制触发异步事件通知的条件。异步事件是指在特定条件下,控制器通过通知告知主机某些关键事件的发生。

命令字段

  • 发现日志页面更改通知(Discovery Log Page Change Notification)
  • 如果设置为 1,则当发现日志页面发生变化时,控制器将向主机发送通知。

  • 区域描述符变化通知(Zone Descriptor Changed Notices)

  • 该位与特定的 I/O 命令集有关,表示是否启用区域描述符变化的通知。具体的定义依赖于 I/O 命令集。

应用

  • 主机可以通过启用这些通知配置,以便在关键事件(如日志页面变化、区域描述符变化等)发生时获得及时的反馈。

命令完成

  • 控制器会在 完成队列条目 中返回异步事件配置的执行结果,通知主机事件通知设置是否成功。

总结

  1. 中断合并配置(Interrupt Coalescing)通过延迟中断和合并完成队列条目来提高性能,特别是在处理大量 I/O 请求时,减少系统的中断负担。

  2. 中断向量配置允许主机针对每个中断向量设置是否应用中断合并功能,以实现更细粒度的控制。

  3. 异步事件配置使主机能够控制哪些事件(如日志页面更改、区域描述符变化等)会触发异步通知,从而确保系统能够及时响应关键的状态变化。

这些配置为主机和控制器之间提供了更多的灵活性和性能优化选项,尤其是在高负载和实时响应要求高的应用场景中。