跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

怎么在Linux利用Sar-M监控系统特定物理核心的温度与频率波动资源情况

sar -m 不支持监控单个物理核心的温度与频率,仅提供系统级温度(如封装/主板)和CPU域频率;需用 sensors 查核心温度、turbostat 或 sysfs 获取核心频率。 sar -m 本身不支持直接监控 CPU 温度或单个物理核心的实时温度与频率波动。 这是关键前提:sar 的 -m 选项(从 sysstat 12.7.0 起引入)仅用于报告 电源管理类指标 ,如 CPU 瞬时/平均频率(
FREQ
)、风扇转速(
FAN
)、输入电压(
IN
)和设备温度(
TEMP
)。但它的
TEMP
子项是 系统级汇总温度 (如主板、SoC 或封装级),并非按物理核心(Core 0/1/2…)区分的独立温度值;其
FREQ
子项也仅反映当前 CPU 域的运行频率,无法绑定到具体物理核心并追踪其动态波动。 要真正监控“特定物理核心”的温度与频率,需分两路配合使用 1. 核心温度:用 sensors + 定位 coretemp 安装并初始化 lm-sensors:
sudo apt install lm-sensors && sudo sensors-detect
(接受默认选项) 运行
sensors
,查找含
coretemp-isa-
的芯片名(如
coretemp-isa-0000
) 该芯片下会列出
Package id 0
(整颗 CPU 封装温度)、
Core 0
、
Core 1
等——这些就是各物理核心的独立温度 想持续观察?用
watch -n 1 sensors
每秒刷新一次 2. 物理核心频率:靠 /sys/devices/system/cpu/ + perf 或 turbostat CentOS Linux 7.9.2009 CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。 下载 Linux 内核不直接暴露每个物理核心的实时运行频率到 sysfs;但可通过
/sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
查当前标称频率(单位 kHz),注意它可能滞后或被节能策略平滑 更准确的方法是使用
turbostat
(来自 linux -tools-common):
sudo turbostat --interval 1 -I 10
,输出中
Avg_MHz
列即为每个逻辑 CPU(可结合
lscpu
映射到物理核心)的平均频率 若需毫秒级采样或关联性能事件,可用
perf stat -C 0 -e cycles,instructions sleep 1
推算实际工作频率 sar -m TEMP 和 FREQ 能做什么? 它们提供的是 系统层面的辅助参考值 :
sar -m TEMP 1 5
输出类似
TEMP0
、
TEMP1
的温度读数,通常对应主板传感器或 CPU 封装(Package),可用于判断整体散热趋势,但不能告诉你 Core 3 是否比 Core 0 高 8°C
sar -m FREQ 1 5
显示
FREQ0
(当前瞬时频率)和
AVGFREQ
(区间平均频率),反映 CPU 当前工作档位,适合看是否降频,但无法区分是哪个核心在高频跑 二者都依赖硬件支持(如 Intel RAPL、ACPI _TZD),老旧平台可能无输出 组合建议:轻量级长期记录方案 若需长期跟踪某物理核心温度+频率联动关系,推荐脚本化采集: 用
sensors | awk '/Core 0/ {print $3}' | tr -d '+' | sed 's/°C//'
提取 Core 0 温度 用
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
获取 cpu0 当前频率 将两者时间戳对齐写入日志,再用 gnuplot 或 pandas 可视化波动曲线 避免用 sar -m 替代核心级指标——它不是设计来干这个的

相关文章