内核驱动 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)
在多节点处理器上,计算值适用于整个封装,而不适用于单个节点。 因此,驱动程序仅为多节点处理器的内部 node0 创建 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) 内计算单元的平均功耗。结果单位为 uWatt
if (Jy < Jx) // Rollover has occurred Jdelta = (Jy + Jmax) - Jx else Jdelta = Jy - Jx PwrCPUave = N * Jdelta * 1000 / (Ty - Tx)
此驱动程序提供 PwrCPUave 和 interval(默认为 10 毫秒,最大为 1 秒)
power1_average (PwrCPUave)
power1_average_interval (Interval)
可以在 /etc/sensors3.conf 文件中更新 power1_average_interval,如下所示
- chip fam15h_power-*
set power1_average_interval 0.01
然后使用 “sensors -s” 保存它。