在Linux系统中,ASPM(Active State Power Management)是用于管理PCIe链路电源状态的技术。可以使用如下方式实时查询PCIe设备的ASPM状态:
lspci是一个常用的工具,用于列出所有的PCI设备及其配置空间内容。要查询PCIe设备的ASPM状态,可以使用lspci命令结合-vv选项来显示详细的配置信息。
1. 使用lspci命令查询ASPM状态
lspci -vv -s
这里的是PCIe设备的总线地址,可以通过lspci命令获取。例如,假设设备地址是00:1c.0,则命令为:
lspci -vv -s 00:1c.0
在输出中,你可以找到类似于以下内容的部分:
LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes, Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 8GT/s (ok), Width x1 (downgraded)
TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
- LnkCtl 部分表示当前的ASPM设置状态,ASPM L0s Enabled表示L0s状态被启用。
- LnkSta部分表示链路的当前状态。
如上PCIe ASPM字段,每个字段的含义是什么?
LnkCtl字段:
LnkCtl是Link Control寄存器的输出,显示当前链路的控制设置:
- ASPM L0s L1 Enabled
- 含义:启用了ASPM的L0s和L1状态。
- 解释:链路可以进入L0s和L1低功耗状态,以减少电能消耗。
- L0s:链路处于浅度低功耗状态,恢复时间短。
- L1:链路处于深度低功耗状态,恢复时间稍长,但节能效果更好。
- RCB 64 bytes
- 含义:Read Completion Boundary的大小。
- 解释:这是一个优化参数,用于决定设备传输数据时的边界大小。在此例中,边界大小为64字节。
- Disabled-
- 含义:这个字段通常用于描述特定功能是否被禁用。
- 解释:Disabled-表示该字段涉及的功能没有被禁用(即默认启用)。这个具体的字段没有标识特定功能。
- CommClk+
- 含义:Common Clock Configuration。
- 解释:CommClk+表示PCIe设备使用与主板共享的时钟源,这通常有助于提高链路的稳定性和功耗管理。+表示启用,-表示禁用。
- ExtSynch-
- 含义:Extended Synchronization。
- 解释:ExtSynch-表示设备没有启用扩展同步功能,这种功能在某些高级PCIe应用中用于协调时钟和数据流。
- ClockPM-
- 含义:Clock Power Management。
- 解释:ClockPM-表示时钟电源管理功能未启用。启用此功能可以在不活动时关闭时钟以节省电能。
- AutWidDis-
- 含义:Automatic Width Disable。
- 解释:AutWidDis-表示自动链路宽度调整功能未禁用。该功能允许链路自动调整宽度以节省电能。
- BWInt-
- 含义:Bandwidth Notification Interrupt。
- 解释:BWInt-表示带宽通知中断功能未启用。这种中断可以在链路带宽变化时通知主机。
- AutBWInt-
- 含义:Automatic Bandwidth Notification Interrupt。
- 解释:AutBWInt-表示自动带宽通知中断功能未启用。此功能允许自动带宽变化时触发中断。
LnkSta 字段
LnkSta是Link Status寄存器的输出,显示当前链路的状态信息:
- Speed 8GT/s (ok)
- 含义:链路的当前数据传输速率。
- 解释:链路以8GT/s的速率运行,这表明它运行在PCIe 3.0(或更高)速率下。(ok)表示当前速率正常。
- Width x1 (downgraded)
- 含义:链路的当前通道宽度。
- 解释:链路当前以x1通道宽度运行。(downgraded)表示链路的宽度比预期的要低,通常表示可能有性能限制或硬件问题。
- TrErr-
- 含义:Training Error。
- 解释:TrErr-表示链路在训练过程中没有发生错误。-表示没有错误,+表示有错误。
- Train-
- 含义:Training。
- 解释:Train-表示链路当前不在进行训练。-表示没有训练,+表示正在进行训练。
- SlotClk+
- 含义:Slot Clock Configuration。
- 解释:SlotClk+表示链路使用共享的插槽时钟。+表示使用共享时钟,-表示使用独立时钟。
- DLActive-
- 含义:Data Link Layer Active。
- 解释:DLActive-表示数据链路层当前不处于活动状态。-表示不活跃,+表示活跃。
- BWMgmt-
- 含义:Bandwidth Management。
- 解释:BWMgmt-表示链路不支持动态带宽管理。-表示不支持,+表示支持。
- ABWMgmt-
- 含义:Asymmetrical Bandwidth Management。
- 解释:ABWMgmt-表示链路不支持非对称带宽管理。-表示不支持,+表示支持。
2. 使用setpci查询ASPM状态
你也可以使用setpci命令直接查询设备配置空间中的ASPM寄存器值:
setpci -s CAP_EXP+10.w
- CAP_EXP+10.w 读取的是PCI Express Capabilities结构中的Link Control寄存器的内容,其中的ASPM状态位(位1和0)用于控制L0s和L1状态。
例如,执行:
- setpci -s 00:1c.0 CAP_EXP+10.w // 查询setpci -s <device> CAP_EXP+10.w=0x43 // 设置
- 0x40, only L0
- 0x41, L0s only
- 0x42, L1 only
- 0x43, L1 and L0s
- setpci -s <device> CAP_EXP+10.w=0x43 // 设置