功耗和散热#
本章提供有关 CPU 功耗和散热管理设置的信息。
C 状态#
C 状态是指 CPU 空闲功耗状态,Grace 包括以下 C 状态
C0:活动/运行状态。
这是 CPU 核心在活动状态时的状态。
C1:时钟门控状态。
当 CPU 核心执行 WFI/WFE 指令时,将进入此状态。进入/退出此状态的延迟可忽略不计。
高级配置和电源接口 (ACPI) 中的 LPI 表提供了有关 C 状态的信息,以供任何 CPU 空闲调速器(如 Linux 中的 cpuidle 框架)使用。
对于启用了 cpuidle 调速器的系统,要读取通过空闲框架进入 C1 状态的次数,请运行以下命令
$ cat /sys/devices/system/cpu/cpu<n>/cpuidle/state0/usage
State0 条目反映了 WFI 或 C1 时钟门控状态,运行以下命令以读取 cpuidle/state0 目录中的 desc 节点并确认
$ cat /sys/devices/system/cpu/cpu<n>/cpuidle/state0/desc
对于不使用 cpuidle 调速器的系统,当执行 WFI/WFE 指令时,CPU 核心仍然可以进入时钟门控状态,但不会有统计数据可用。
P 状态#
P 状态是指性能状态,Grace 不提供显式的 P 状态。相反,Grace 通过 ACPI 的 CPPC 机制公开最大和最小性能能力。CPPC 为用户和操作系统提供了在允许的范围内请求任何性能的能力,而不是离散的 P 状态。有关更多信息,请参阅CPU 性能和频率管理。
CPU 性能和频率管理#
每个 CPU 核心都可以以其自己的独立频率运行,并且频率由使用的频率策略调速器确定。Linux 提供了以下频率调速器
Performance governor:旨在获得最大性能,并将 CPU 核心的性能/频率请求设置为最大可能值。
该请求不是基于活动,而是固定在最高值。
Userspace governor:绕过内核调速器,并为用户空间应用程序提供频率控制。
要设置核心的频率,虚拟机监控程序或更高级别的软件实体可以从应用程序获取输入。内核不会根据其他信息修改频率,但会遵守基于散热的频率上限。
Schedutil governor:结合来自调度器的信息,这些信息是当前在核心上调度的线程、核心上的活动、负载估计等,以确定核心的最佳频率。
此调速器的目标是提供最佳性能,同时通过根据调度器可见的工作负载匹配频率来节省功耗。
Ondemand governor:根据 CPU 核心的尾随负载调整频率。
此调速器预测未来负载并相应地提高频率。
有关更多信息,请参阅https://linuxkernel.org.cn/doc/Documentation/cpu-freq/governors.txt。
Grace 中的默认频率调速器是 performance governor,它将核心的频率设置为最大值。最大频率通常对应于最大可能的性能,并且高于可以实现标称(持续)性能的频率。当以最大频率运行时违反散热限制时,散热管理解决方案会限制频率。有关更多信息,请参阅功耗和散热管理。
可以使用 cpupower
命令或直接使用 sysfs 接口在 Linux 服务器上管理 CPU 频率。下一节提供了一个简明指南,其中结合了设置固定频率和缩放最大频率的方法。
设置固定频率#
本节提供有关设置固定频率的信息。
``cpupower`` 命令
此命令允许您完成以下任务
切换到 userspace governor 以手动设置频率
$ sudo cpupower frequency-set -g userspace
设置所需的频率(例如,3.2 GHz = 3200000 kHz)
$ sudo cpupower frequency-set -f 3200000
``sysfs`` 方法
此命令允许您完成以下任务
切换到 userspace governor(如果支持)
$ echo userspace | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
直接设置所需的频率(将 [FREQUENCY] 替换为您的值,单位为 kHz)
$ echo [FREQUENCY] | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_setspeed
设置缩放最大频率#
本节提供有关设置缩放最大频率的信息。
``cpupower`` 命令
切换到 performance governor 以限制最大缩放频率
$ sudo cpupower frequency-set -g performance
设置缩放最大频率(例如,3.2 GHz = 3200000 kHz)
$ sudo cpupower frequency-set -f 3200000
``sysfs`` 方法
切换到 performance governor(如果支持)
$ echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
限制最大缩放频率(通过将 [MAX_FREQUENCY] 替换为您的值,单位为 kHz)
$ echo [MAX_FREQUENCY] | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq
以下是您可以用来读取当前请求和测量的设置的通用 CPU 频率命令
CPU 核心 <n> 的软件频率请求 (kHz)。
$ cat /sys/devices/system/cpu/cpu<n>/cpufreq/scaling_cur_freq
测量的频率 (kHz)。
$ cat /sys/devices/system/cpu/cpu<n>/cpufreq/cpuinfo_cur_freq
注意
这使用了 ARM 提供的 actmon (AMU),其中测量了源时钟和参考时钟,并使用该比率来计算实际频率。使用 Linux 中使用的默认测量窗口,频率读取可能存在高达 3% 的误差。为了提高精度,应在上游 Linux 代码中增加测量窗口。
GPU 和模块功耗管理#
GPU 在以下范围内提供功耗限制
限制 Grace + Hopper 超级芯片(模块)的功耗,并将其保持在提供的功耗限制内。
限制 GPU 的功耗,并将其保持在提供的功耗限制内。

GPU 和模块功耗管理#
这是通过 GPU 中的自动功率控制完成的,因为 GPU 监控 Grace、模块和 GPU 的功率遥测。模块范围内的功耗限制监控消耗的 Grace 功率,这会从模块功耗限制中移除功率,并将剩余功率提供给 GPU。
GPU 可以在新的功耗限制下工作,也可以坚持为 GPU 显式设置的限制,其中以两个限制中较低的那个为准。这可以有效地平衡 Grace 和 GPU 之间的功耗,通过机会性地提高 GPU 功耗预算来提高整体应用程序性能。GPU 通过使用 DVFS 实现功耗限制。
系统 |
旋钮 |
描述 |
---|---|---|
GPU |
nvidia-smi -q -d POWER |
转储模块和 GPU 功耗遥测 |
GPU |
nvidia-smi -pl <limit in Watt> -sc 0 |
设置 GPU 的限制。如果此限制低于通过“自动功率控制”评估的限制,则将应用于 GPU |
GPU |
nvidia-smi -pl <limit in Watt> -sc 1 |
设置模块的限制 |
以下是 NVSMI 日志的输出
nvidia@localhost:~$ nvidia-smi -q -d POWER
==============NVSMI LOG==============
Timestamp : Fri Oct 6 22:46:55 2023
Driver Version : 535.122
CUDA Version : 12.2
Attached GPUs : 1
GPU 00000009:01:00.0
GPU Power Readings
Power Draw : 77.61 W
Current Power Limit : 900.00 W
Requested Power Limit : 900.00
Default Power Limit : 900.00 W
Min Power Limit : 100.00 W
Max Power Limit : 900.00 W
Power Samples
Duration : 2.36 sec
Number of Samples : 119
Max : 78.26 W
Min : 76.65 W
Avg : 77.48 W
Module Power Readings
Power Draw : 147.49 W
Current Power Limit : 1000.00 W
Requested Power Limit : 1000.00 W
Default Power Limit : 1000.00 W
Min Power Limit : 200.00 W
Max Power Limit : 1000.00 W
功耗和散热管理#
Grace 提供以下类型的散热管理类型
限制功耗并将其保持在提供的功耗限制内。
基于热传感器 (Tj) 的管理。
功率遥测#
本节提供有关 Grace 功率遥测的信息,以及将 Grace 功率遥测与 Intel 和 AMD 功率遥测进行比较的指南。当与其他 CPU 架构进行功率效率比较时,这可能很有用。
Grace 功率遥测#
Grace 通过 hwmon 公开功率遥测,hwmon 使用 ACPI 功率计接口。您可以通过以下方式之一读取功率遥测信息
显示功率计的名称。
这提供了有关在 hwmon 节点 X 上报告哪个功率的信息。
cat /sys/class/hwmon/hwmonX/device/power1_oem_info
显示 hwmon 节点 X 上以微瓦 (µW) 为单位的功耗,默认情况下是过去 50 毫秒间隔的平均功率
cat /sys/class/hwmon/hwmonX/device/power1_average
显示 hwmon 节点 X 上以毫秒为单位的功率统计间隔
cat /sys/class/hwmon/hwmonX/device/power1_average_interval
更改 hwmon 节点 X 上以毫秒为单位的功率统计间隔(默认为 50)
echo <value> | sudo tee /sys/class/hwmon/hwmonX/device/power1_average_interval
下表提供了有关可用功率遥测的信息。
注意
要查看 hwmon sysfs 节点,您需要在 kconfig 中使用 CONFIG_SENSORS_ACPI_POWER=m
。
有关补丁的更多信息,请参阅NVIDIA Grace 平台支持软件补丁和配置指南。
下表提供了有关可用功率遥测的信息。
系统 |
遥测 |
详细信息 |
---|---|---|
Grace 超级芯片 |
Grace 功耗插槽 0 |
插槽 0 的总功耗,包括 DRAM 功耗和稳压器损耗。 |
CPU 功耗插槽 0 |
插槽 0 的 CPU 轨功耗。 |
|
SysIO 功耗插槽 0 |
SOC 轨功耗。 |
|
Grace 功耗插槽 1 |
插槽 1 的总功耗,包括 DRAM 功耗和稳压器损耗。 |
|
CPU 功耗插槽 1 |
插槽 1 的 CPU 轨功耗。 |
|
SysIO 功耗插槽 1 |
SOC 轨功耗。 |
|
Grace Hopper 超级芯片 |
模块功耗 插槽 0 |
的总功耗 CG1 模块,包括 DRAM 功耗和稳压器损耗。这还包括 GPU 和 GPU HBM 功耗。 |
Grace 功耗插槽 0 |
Grace 插槽的功耗。 |
|
CPU 功耗插槽 0 |
CPU 轨功耗。 |
|
SysIO 功耗插槽 0 |
SOC 轨功耗。 |

Grace 功率遥测传感器#

Grace 超级芯片遥测传感器#
如上表所述,报告的插槽总功耗包括 CPU 功耗、DRAM 功耗和稳压器损耗。同样,报告的 CPU 核心功耗包括稳压器损耗。稳压器损耗占 TDP 功耗限制的 15%。DRAM 功耗可以根据下表中的公式,基于总流量进行估算。
DRAM 功耗 (mW, 不包括 稳压器 损耗): -a*DRAM_BW_GBps^2 + b*DRAM_BW_GBps + c
配置 |
a |
b |
c |
---|---|---|---|
128 GB,4266 MHz |
00.0000136 |
28.9 |
2334 |
128 GB,3200 MHz |
00.0000175 |
28.3 |
2043 |
512 GB,3200 MHz |
00.0000603 |
56.2 |
3396 |
DRAM 带宽可以使用Grace CPU 性能指标中描述的 PMU 指标来确定。
比较 Grace 和 Intel® 功率遥测#
Intel® CPU 通过 Intel® Performance Counter Monitor (Intel® PCM) API 公开功率遥测。当将 Grace CPU 的功耗与 Intel® CPU 进行比较时,可以使用这些 API 来收集可比较的指标。PCM API 在 GitHub 上提供,网址为 intel/pcm。
有关更多信息,请参阅以下文档
可以运行 PCM 的 pcm-power 实用程序来收集多个间隔的性能指标以及每个间隔的持续时间。例如,要以一秒间隔捕获一分钟的样本,请运行以下命令
sudo pcm-power 1.00 -i=60 -silent
对于每个间隔,pcm-power 都会打印每个插槽(S0、S1)的功耗,包括 CPU 功耗和 DRAM 功耗
$ sudo pcm-power -silent 1.0 -i=60 | grep '^S.; Consumed
S0; Consumed energy units: 3563683; Consumed Joules: 217.51; Watts: 217.51
S0; Consumed DRAM energy units: 533250; Consumed DRAM Joules: 32.55; DRAM Watts: 32.55
S1; Consumed energy units: 3350361; Consumed Joules: 204.49; Watts:204.49
S1; Consumed DRAM energy units: 597938; Consumed DRAM Joules: 36.50;DRAM Watts: 36.50

Intel 功率遥测传感器#
如上图所示,每个插槽的功耗不包括稳压器损耗,因此与可用功率遥测表中所述的 CPU 功耗插槽 0 和 CPU 功耗插槽 1 遥测不可直接比较。要将 Intel CPU 功耗与 Grace CPU 功耗进行比较,请去除 Grace 稳压器损耗。
有关通过 sysfs 中的 Linux powercap 内核接口提供的功耗指标的更多信息,请参阅Power Capping Framework。
要仅测量核心的功耗,不包括稳压器损耗或 DRAM 功耗,每个 CPU 的指标可在以下位置获得
对于 CPU 0
cat /sys/class/powercap/intel-rapl/intel-rapl:0/intel-rapl:0:0/energy_uj
对于 CPU 1
cat /sys/class/powercap/intel-rapl/intel-rapl:1/intel-rapl:1:0/energy_uj
这些计数器提供每个 CPU 消耗的微焦耳的运行总数。
来自此接口的测量结果与可用功率遥测表中描述的 CPU 功耗插槽 0 和 CPU 功耗插槽 1 遥测相当。
比较 Grace 和 AMD 功率遥测#
AMD 的 AMD μProf 软件包包括提供功率遥测的实用程序。当您将 Grace CPU 的功耗与 AMD CPU 进行比较时,可以使用这些 API 来收集可比较的指标。
要下载并安装 AMD μProf,请访问 https://www.amd.com/en/developer/uprof.html。
有关可用指标的平台特定信息,请参阅AMD μProf 用户指南。
要捕获每个插槽功耗的测量值 60 秒,每秒测量一次,请运行以下命令
AMDuProfCLI-bin timechart --event socket=0-1,power --interval 1000 --duration 60 -o powerOutput
生成的输出文件(采用 CSV 格式)将在命令输出中报告,例如
Live Profile Output file : /home/nvex/powerOutput/AMDuProf-SWP-Timechart_Aug-05-2023_00-03-29/timechart.csv
它包含每个间隔的 CSV 格式的功率测量值,每个插槽一列,例如
RecordId,Timestamp,socket0-package-power,socket1-package-power
1,0:3:30:462, 95.56, 91.05
2,0:3:31:462, 95.09, 90.63
3,0:3:32:462, 95.17, 90.23
4,0:3:33:462, 95.70, 90.70

AMD 功率遥测传感器#
有关测量 AMD 处理器 DRAM 功耗的指南取决于平台实施细节。请联系您的平台供应商,以获取有关测量功耗以与 Grace 的 LPDDR5x 功率读数进行比较的指南。
AMD μProf 还允许捕获每个核心的功耗利用率测量值。例如,在 64 核 AMD 处理器上
AMDuProfCLI-bin timechart --event core=0-63,power --interval 1000 --duration 60 -o powerOutput
生成的文件包含每个间隔的 CSV 格式的功率测量值,每个核心一列。将这些核心相加即可获得所有核心的总功率输出,以确定 CPU 的总功耗。如上图所示,此测量值不包括稳压器损耗。当从 Grace CPU 测量值中去除稳压器损耗时,总功率与可用功率遥测表中描述的 Grace CPU 轨功耗 CPU 功耗插槽 0 或 CPU 功耗插槽 1 遥测相当。
功耗限制#
功耗限制限制了平均功耗,通常根据系统的散热能力进行设置。当平均功耗超过此限制时,Grace 会限制功率。用户可以将功耗限制降低到 BIOS 中设置的默认值以下。此设置通过 Hwmon 节点公开,可以应用于插槽总功耗。功耗限制仅可在插槽级别应用,而不能在 vdd_cpu 或 vdd_soc 功率级别应用。
要设置功耗限制,请运行以下命令
echo <power value in micro Watts> > /sys/class/hwmon/hwmonX/device/power1_cap
对于 Grace Hopper 超级芯片系统,Grace CPU 的功耗限制允许 Hopper GPU 消耗更多功率,这可以提高 GPU 密集型应用程序的性能。GPU 的功耗限制可以根据GPU 和模块功耗管理应用。
CPU 温度管理#
ACPI 散热管理 (Tj) 使用来自温度传感器的遥测数据,以确保没有局部热点超过工作温度。功耗限制确保插槽/模块的平均功耗等于或低于系统的散热能力。但是,这并未考虑基于核心之间工作负载分布的不对称功率分配。ACPI 表提供了被动和临界温度限制,散热调速器尝试限制 CPU 以将温度保持在或低于被动温度限制。如果温度超过临界温度限制,则会启动关机。
要读取用于 ACPI 软件节流的关键和被动跳变点
cat /sys/class/thermal/thermal_zone*/trip_point_0_type
cat /sys/class/thermal/thermal_zone*/trip_point_0_temp
cat /sys/class/thermal/thermal_zone*/trip_point_1_type
cat /sys/class/thermal/thermal_zone*/trip_point_1_temp
要修改这些值,请更新 ACPI 表。
注意
我们建议您不要更改默认值。
如果降低被动跳变点,则可能会更频繁地发生节流,这会影响性能。
如果提高被动跳变点,则软件可能并非始终稳定在温度下,这会导致更激进的硬件节流,并可能降低性能。
GPU 温度#
对于使用 nvidia-smi 的 GPU 温度,要获取温度输出,请运行 nvidia-smi -q -d TEMPERATURE
命令。
此步骤获取当前温度和与温度相关的限制。