Linux rapl 指标集
编辑Linux rapl 指标集
编辑此功能为 Beta 版,可能会发生更改。其设计和代码不如正式 GA 功能成熟,因此按“原样”提供,不提供任何保证。Beta 功能不受正式 GA 功能的支持 SLA 约束。
RAPL 指标集报告 Intel 的 RAPL (Running Average Power Limit) API 报告的以瓦特为单位的功耗。实际上,RAPL 用于设置 CPU 的功耗限制,但它也可以用于监控功耗。
自 Sandy Bridge 以来,大多数 Intel CPU 上都以某种形式提供了 RAPL,但是,此实现需要通过 /dev/cpu/[CPU]/msr
公开 Intel MSR(特定于模型的寄存器)的 Linux 发行版。您可以通过运行以下命令来检查您的 Linux 发行版和 CPU 是否支持 RAPL
sudo rdmsr 0x606
如果该命令返回一个十六进制值,例如 a1003
,则表示支持 RAPL。
RAPL 将 CPU 分为四个域,每个域对应于硬件本身的组件:Package
、DRAM
、PP0
(通常是内核的集体功耗)和 PP1
(通常是集成 GPU)。并非所有 CPU 都提供所有软件包,并且 RAPL 指标集将报告它找到的所有 RAPL 域。
msr-safe 使用
编辑此指标集还支持 msr-safe,它允许用户在没有 root 权限的情况下访问 MSR 设备。linux 模块配置中的 rapl.use_msr_safe
标志将启用 /dev/cpu/[CPU]/msr_safe
设备的使用。
对于现有的 msr-safe 安装,以下允许列表将打开所有 RAPL MSR 进行读取
0x00000606 0x0000000000000000 # "SMSR_RAPL_POWER_UNIT" 0x00000610 0x0000000000000000 # "SMSR_PACKAGE_POWER_LIMIT" 0x00000611 0x0000000000000000 # "SMSR_PACKAGE_ENERGY_STATUS" 0x00000613 0x0000000000000000 # "SMSR_PACKAGE_PERF_STATUS" 0x00000614 0x0000000000000000 # "SMSR_PACKAGE_POWER_INFO" 0x00000618 0x0000000000000000 # "SMSR_DRAM_POWER_LIMIT" 0x00000619 0x0000000000000000 # "SMSR_DRAM_ENERGY_STATUS" 0x0000061b 0x0000000000000000 # "SMSR_DRAM_PERF_STATUS" 0x0000061c 0x0000000000000000 # "SMSR_DRAM_POWER_INFO" 0x00000638 0x0000000000000000 # "SMSR_PP0_POWER_LIMIT" 0x00000639 0x0000000000000000 # "SMSR_PP0_ENERGY_STATUS" 0x0000063a 0x0000000000000000 # "SMSR_PP0_POLICY" 0x0000063b 0x0000000000000000 # "SMSR_PP0_PERF_STATUS" 0x00000640 0x0000000000000000 # "SMSR_PP1_POWER_LIMIT" 0x00000641 0x0000000000000000 # "SMSR_PP1_ENERGY_STATUS" 0x00000642 0x0000000000000000 # "SMSR_PP1_POLICY"
有关指标集中每个字段的描述,请参阅导出的字段部分。
以下是此指标集生成的示例文档
{ "@timestamp": "2017-10-12T08:05:34.853Z", "event": { "dataset": "linux.rapl", "duration": 115000, "module": "linux" }, "linux": { "rapl": { "core": 0, "dram": { "joules": 38106.59, "watts": 5.912 }, "package": { "joules": 25764.9984, "watts": 11.5784 }, "pp0": { "joules": 27353.5644, "watts": 2.7159 } } }, "metricset": { "name": "rapl", "period": 10000 }, "service": { "type": "linux" } }