内核驱动 fam15h_power¶
支持的芯片
AMD Family 15h 处理器
AMD Family 16h 处理器
前缀:‘fam15h_power’
扫描地址:PCI 空间
数据表
AMD Family 15h 处理器的 BIOS 和内核开发者指南 (BKDG)
AMD Family 16h 处理器的 BIOS 和内核开发者指南 (BKDG)
AMD64 架构程序员手册第 2 卷:系统编程
作者:Andreas Herrmann <herrmann.der.user@googlemail.com>
描述¶
处理器 TDP(热设计功耗)
在固定频率和电压下,处理器的功耗会随着执行的工作负载而变化。降额功耗是运行特定应用程序时消耗的功耗。热设计功耗 (TDP) 是降额功耗的一个示例。
该驱动程序允许通过 TDP 算法读取提供 AMD Family 15h 和 16h 处理器功耗信息的寄存器。
对于 AMD Family 15h 和 16h 处理器,可以使用不同的处理器北桥功能寄存器计算以下功耗值
- BasePwrWatts
以瓦特为单位指定处理器用于 NB 和核心外部逻辑的最大功耗量。
- ProcessorPwrWatts
以瓦特为单位指定处理器可以支持的最大功耗量。
- CurrPwrWatts
以瓦特为单位指定处理器当前消耗的功耗量。
此驱动程序提供 ProcessorPwrWatts 和 CurrPwrWatts
power1_crit (ProcessorPwrWatts)
power1_input (CurrPwrWatts)
在多节点处理器上,计算的值是整个封装的值,而不是单个节点的值。因此,该驱动程序仅为多节点处理器的内部节点 0 创建 sysfs 属性。
累积功耗机制
此驱动程序还引入了一种算法,该算法应用于计算处理器在测量间隔 Tm 期间消耗的平均功耗。累积功耗机制的功能由 CPUID Fn8000_0007_EDX[12] 指示。
- Tsample
计算单元功耗累加器采样周期
- Tref
PTSC 计数器周期
- PTSC
性能时间戳计数器
- N
计算单元功耗累加器采样周期与 PTSC 周期的比率
- Jmax
最大计算单元累积功耗,由 MaxCpuSwPwrAcc MSR C001007b 指示
- Jx/Jy
计算单元累积功耗,由 CpuSwPwrAcc MSR C001007a 指示
- Tx/Ty
性能时间戳计数器的值,由 CU_PTSC MSR C0010280 指示
- PwrCPUave
CPU 平均功耗
通过执行 CPUID Fn8000_0007 来确定 Tsample 与 Tref 的比率。
N = CPUID Fn8000_0007_ECX[CpuPwrSampleTimeRatio[15:0]] 的值。
从新的 MSR MaxCpuSwPwrAcc 读取累积能量值的全范围。
Jmax = 返回的值。
在时间 x,SW 读取 CpuSwPwrAcc MSR 并采样 PTSC。
Jx = 从 CpuSwPwrAcc 读取的值,Tx = 从 PTSC 读取的值。
在时间 y,SW 读取 CpuSwPwrAcc MSR 并采样 PTSC。
Jy = 从 CpuSwPwrAcc 读取的值,Ty = 从 PTSC 读取的值。
计算计算单元在时间段 (y-x) 内的平均功耗。结果单位为微瓦
if (Jy < Jx) // Rollover has occurred Jdelta = (Jy + Jmax) - Jx else Jdelta = Jy - Jx PwrCPUave = N * Jdelta * 1000 / (Ty - Tx)
此驱动程序提供 PwrCPUave 和间隔(默认为 10 毫秒,最大值为 1 秒)
power1_average (PwrCPUave)
power1_average_interval (间隔)
power1_average_interval 可以在 /etc/sensors3.conf 文件中更新,如下所示
- 芯片 fam15h_power-*
设置 power1_average_interval 0.01
然后使用 “sensors -s” 保存它。