Linux系统的电能消耗正在日益成为大型数据中心工作人员所关心的顶级问题之一。加利福尼亚大学最近的一份调查显示,在数据中心的增长的电能消耗中,有90%的来自于价格在25000美元
以下的服务器,而这种服务器上运行的则大多是Linux操作系统。
但是一直以来,Linux内核开发者的精力都集中在系统的性能和正确性上,而将硬件的节能功能放置不用。
幸运的是,今年这种情况终于得到改变,问题得到了一定的解决。一个跨越很多不同项目的开发者联盟开始关注一个看似不错的基于文本的工具PowerTOP。PowerTOP的作者是Arjan van de Ven,一个在Intel工作的Linux开发者。
通过一个被称作“tickless”的“无滴答”空闲循环机制,Linux系统可以进入低耗能状态,并保持这种状态,不用每隔一段时间来处理内部计时器。不过,任何做一些不必要工作的程序将会唤醒这个计算机,而停止节能状态。
据PowerTOP的文档解释,如果当前的处理器长期处于闲置状态,可以节约很多电能,这样可以让你的笔记本电池具有更长的寿命,或者让你的数据中心消耗更少的电能。但是,Linux系统除了内核外,还包括很多其他软件,其中很多可以调节的东西。用户不容易看到正在进行的工作,因此这种情况下一些行为得不到最优化,很多电能被浪费掉。
换句话说,在Linux系统上很多软件就像这样一种人,他们在进入屋子后把电灯打开,但是后来当他们离开后,却没有把灯关上。而PowerTOP可以帮助我们把这些软件找出来。
当Van de Ven在今年5月第一次推出PowerTOP的时候,Intel曾相应推出了一个网站描述这个工具可以实现的一些节能方法。其中许多已经进行了简单的修正,诸如从闪烁鼠标切换到非闪烁鼠标,但是大多情况是和节能无关的编程。
举个例子来说,根据这个站点,如果这个X服务器支持X屏保伸展,一个常见的应用程序也将每隔5秒询问X服务器,这个X服务器是否支持这个功能,这种情况在应用程序启动后会一直保持不变。”
既然PowerTOP在x86系统上,一个叫做高精度时钟(HPET)的硬件功能使得硬件更长时间处于睡眠状态成为可能。在渥太华的Linux研讨会上,Intel的开发者Len Brown解释了在x86系统上集中不同的定时器的不同之处。一个内置于处理器中的定时器不负责唤醒处理器,因为当处理器休眠后它也休眠。另一个计时器是可编程控制的间隔定时器,只可以设置为27毫秒或更少的时间。而HPET在处理器进入睡眠状态后,它依然处于唤醒状态,可以被设置多大3秒的时间,但是大多数BIOS关闭了对HPET的支持。
