服務器節能的“坑”
現在服務器制造商提供的服務器,通常都具備節能功能。這個功能通常是通過調整CPU的主頻來實現的。
具有“節能”功能的CPU,設計有N個“能級”,稱為‘C-states’,這里有一篇詳細介紹的文章。大致意思是說,就是通過調整CPU主頻,使CPU處理不同的C-states(通過設置C-states,使CPU工作在不同的主頻),從而達到控制電能消耗。合理地使用這個特性,可以達到“節能”的目的。
而實現情況是,如何“合理”地使用,是件困難的事兒,需要結合自己的業務特點進行不斷地調整。另外需要說明的是,主頻調整的過程對系統的性能是有影響的。
另外,風扇的轉速也可以為了節能而進行適當的控制。
大多數用戶,恐怕都不會關心“節能”問題。只有當服務器的數據達到一定規模,電費需要單獨付費的用戶,才會關心。
但是,很多服務器通常默認情況下就開啟了這些功能 ,根據配置的不同以及系統配置的不同,最壞的情況就是CPU總是工作在最節能狀態,這時的頻率并沒有達到CPU的極限值。
之前在測試CPU性能的時候,就發現E5600的性能比E5500還不如的怪現象,現在想想,恐怕也是這個“節省”這個問題引起的。
不需要“節能”的用戶,為了得到更好的“性能”,應該在BIOS中將所有節能功能都關閉,這個根據不同的設備商,配置項不盡相同。
已經在線上的設備,怎么檢查這個問題呢?
如上圖所示,E5530處理器的主頻應該是2.4G,但是下面顯示的cpu MHz(實時更新的)卻是1.6G。這說明了這臺機器的CPU工作在節能狀態,說明了BIOS中開啟了“節能”功能 。
另外還有一個查看CPU頻率的工具:RHEL5上包名為cpufreq-utils,RHEL6上包名為cpufrequtils。
其中有cpufreq-info:
cpufreq-apref:
有時這個工具會無法工作,好像將/etc/init.d/cpuspeed服務打開,就可以了(沒有細究)。假如啟了cupspeed還是不支持,那就是真的不支持了。
下面說說,BIOS開啟了節能(很多很種方式、模式,Dell的叫PROFILE),機器已經在線上了,不能關機調整,又發現CPU工作在降頻狀態,能不能補救呢?
可以使用cpuspeed服務試試,在/etc/sysconfig/cpuspeed中,將GOVERNOR設置為performance,然后啟動cpuspeed服務,再觀察CPU的主頻,看是否恢復到***頻率,假如不行,很不興,你的BIOS中設置的節能模式,不能由os控制。只能調整BIOS,重啟系統了。