定时收集CPU的温度和主频
最近在折腾电脑的水冷系统,从两个120冷排升级为一个120冷排外加一个2.5倍厚度360水冷排,温度一下从原来的50多度降到30多度,效果非常好。在测试过程中想找到在CPU温度和主频之间的关系,于是就写了一个简单的脚本,定时收集CPU的温度和主频,并保存到csv文件中,这样以后就可以直接通过excel打开并生成曲线图,直观容易理解。
#!/bin/bash #获取主频的平均值 function avgFreq { nrofCpu=$1 sum=0 for i in `cat /proc/cpuinfo |grep "MHz"|awk '{print $4}'|cut -c 1-4` do no1=$i sum=`echo "$sum+$no1/$nrofCpu"|bc`; done echo $sum } #判断输出文件是否存在,如果存在,则备份之 #要求文件名称包含扩展名".csv" function backupExistOutputFile { #检查要输出的文件是否已经存在,如果不存在,则直接退出此函数 outputfile=$1 if [ ! -f $outputfile ] ; then echo "no existing output file." return fi echo "backup the existing output file." #如果要输出的函数已经存在,那么备份为名称后加数字的类似名称 #例如输出文件"result.csv"已经存在,那么将其备份为"result0.csv", #如果此文件也存在,那么备份为"result1.csv",以此类推 index=0; while (true) do bakfile=`echo $outputfile|cut -d . -f 1`${index}.csv #echo $bakfile if [ -f $bakfile ] ; then ((index++)) continue else echo "mv $outputfile ${bakfile}" mv $outputfile ${bakfile} break fi done } #main #check environment sensors >> /dev/null if [ 0 != $? ] ; then echo "please install the sensors package." exit fi file_name=/tmp/tempFreq.csv backupExistOutputFile $file_name #start if [ -z $1 ] ; then interval=10 else interval=$1 fi nrofCpu=`cat /proc/cpuinfo|grep "MHz"|wc -l` while (true) do #temp=`sensors|head -n 11|tail -n 1 |awk '{print $4}' |cut -c 2-3` temp=`sensors|grep "Physical id 0:"|awk '{print $4}'|cut -c 2-3` freq=`avgFreq $nrofCpu` echo -n $temp>>$file_name echo -n ",">>$file_name echo $freq>>$file_name sleep $interval done
脚本运行的结果是生成一个csv文件,格式如下所示,不是全部内容。
30,904
30,841
31,4226
50,4400
49,4398
35,4399
31,4394
42,4397
47,4400
38,4368
44,4307
48,4400
32,4395
38,4393
31,4381
34,4391
34,4385
48,4399
34,4400
34,4384
35,4382
32,4388
36,4403
35,4394
35,4392
32,4324
34,4390
47,4388
45,4397
45,4391
33,4399
34,4390
35,4396
47,4396
50,4398
32,4396
其中cpu主频变化范围是800~4400MHz,温度范围处于30~55度之间。第一段cpu主频基本上是稳定在4400MHz,主要是因为启动了三个虚拟机(一个 win7,一个win10,一个ubuntu),其中windows虚拟机都是比较耗费cpu的,以为windows系统开机之后,经常会自动更新系统补丁或者扫描病毒等等,同样cpu温度也是比较高的,但cpu温度的变化范围明显比主频要大,原因在于,虽然主频处于最高位,但所处理的任务数量以及cpu利用率都是变化的,可以看到温度比较高的地方都是cpu利用率高的。中间一段主频范围波动比较大,主要是因为关闭了三个虚拟机,以及Google-chrome浏览器,关闭之后主机的进程数量就降低了不少,主频也会随之降低,同样温度也有一定程度的下降,当然仍然在小范围波动。最后一段cpu主频又恢复到4400MHz,这是因为win10虚拟机又启动了。从图中可以看出,cpu温度和主频之间有一定程度上的关系,但不是很明显。后面会将cpu利用率也添加到监控结果文件中,从理论上分析,cpu温度与cpu利用率的关系应该更加紧密。其实,cpu温度与cpu的功耗是直接相关的,功耗越大,当然散热越多,温度越高;然后cpu功耗是同cpu上面运行任务数量相关联的。
发表评论: