Welcome to Snooda's Blog

top/vmstat等cpu iowait值含义

[| 不指定 2013/06/05 23:03]
    今天发现了一个现象。有一台io压力比较大的机器,基本iowait百分之七十左右。idle接近0。按我的理解是百分之七十的cpu都在等待或处理io。没有空闲的时间片了。

    但开启了一个视频转码服务后,iowait降到很低水平,usr和sys飙高,idle还是接近0。但此时发现视频转码和原io操作的服务均正常运行,未发生性能波动。

    马上感觉到其中的矛盾。cpu不是用完了么?为啥还能承受一个视频转码这种cpu密集的服务呢?

    
    仔细查看了一下iowait的解释。原来它的真实含义是:cpu空闲并且有进程在等待io就绪的时间。

    也就是说如果iowait很高。那么磁盘压力较大。但此时cpu是较为空闲的。此时如果运行诸如视频转码这种cpu密集型操作。是可以提高cpu利用率的。这一点在服务混布提高利用率上可以做文章。




Tags: ,
    想上无风扇电源,所以调研下电源去掉噪声后其他地方如何降噪。开始拿cpu风扇入手。cpu散热器用的最便宜的超频三青鸟3。cpu是32nm Sandy Bridge 赛扬G550,比较节能。看网络上有些人在尝试G530无风扇工作,不过都比较简单,决定自己试一下。


    有很多人是在bios中对cpu进行降频以实现降温的,想了下,感觉这种方法灵活性不足,另外太过高端。决定不采用。还是用软件的cpufreq比较简单灵活。使用sensors工具查看cpu温度。


    首先拔掉cpu风扇电源,开机滴滴报警,忽略之,进入系统。看到温度在50度左右。cpu默认工作在1.6G频率下。


    写了个死循环程序,先单核跑满,单核心运行在2.6G频率下,温度缓慢上升。慢慢上升到83度左右稳定下来。

    然后尝试双核跑满,结果温度迅速冲上90+,我看sensors里提示的温度最高值为102度。急忙停了压力,温度1s内就降到了60+。还是挺快的。

     看来默认情况下双核满载单靠散热器是不行的了。下面尝试限制最高频率后的满载测试。

     首先限制双核1.6G,满载,温度没什么变化,很正常,cpu本来就在1.6G下跑着,满不满载没啥区别。
     2G+1.6G,温度上升至70+
     2G+2G,温度缓慢上涨2-3度,看来较低频率情况下,总温度和温度较高那个核的温度相关性大,与发热总核数关系不怎么大。
     2.1G+2.1G,温度上升至80+
     由于80度就已经算是较高的温度了,所以没有继续往上测试。


     当前室温在20度左右。

     也就是说2.1G是可以无风扇长时间稳定运行的一个频率。再高就不好说了。以后有需求就搞个自动限频脚本,温度升到指定值就降低频率防止过热。


     然后看看频率对性能的影响。在网上随便扒拉了一个算某某值的命令,大致跑了下,1.6G频率下跑完需要40多秒,而2G频率下跑完只要33s,再高频率的就没有试了。看来性能还是有一些影响的。





    

  
Tags:
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]