在windows下我们已经对系统的电源管理非常熟悉了,我们可以通过主板的高级电源管理模块实现str、std等功能。对于笔记本电脑用户使用高级电源管理方式,让笔记本电脑处于休眠状态,节省电池就更加重要。上面说的这些功能在windows平台下实现对于我们来说,可能都已经不再是困难的事情。但如果换成linux恐怕就很少有人知道了,今天我们就来介绍一下在linux操作系统下的电源管理的实现。由于许多服务器都采用了linux,电源管理的重要性也就变得非常明显了。
在x86机器中,存在两种电源管理方法:apm (advanced power management,高级电源管理)和acpi (advanced configuration and power interface,高级配置和电源接口)。apm是老标准,而acpi则提供了管理电脑和设备更为灵活的接口。linux支持这两种协议,不过有时还需要手工配置。另外,两个标准不能同时运行。缺省情况下linux运行acpi。
apm可以让你把机器处于suspend(悬挂)或standby(备用)状态,以及检查电池容量。而acpi还可以让你把外设(如:显示器、显卡、pci总线)单独断电,在节省电能方面有更多的控制。为了让电源管理功能生效,需要在bios和linux核心里要打开它,并且在linux里加载必需的应用软件。
检查系统是否支持电源管理
在较新的核心里,都包含了对acpi和apm的支持。一般地,acpi是激活的。使用dmesg来检验一下:
dmesg |egrep -i (apm|acpi)
kernel command line: vga=274 quiet console=ttys3,9600acpi=no-idleoot=/dev/hda3
acpi: core subsystem version [20010208]
acpi: subsystem enabled
acpi: system firmware supports: c2
acpi: plvl2lat=99 plvl3lat=1001
acpi: c2 enter=1417 c2 exit=354
acpi: c3 enter=-1 c3 exit=-1
acpi: not using acpi idle
acpi: system firmware supports: s0 s1 s4 s5
另外,支持acpi的系统也将增加/proc/ sys/acpi的目录。如果它存在,就表示核心已经加载acpi驱动。
具体的应用实例
建议用最新的核心(如:2.4.5)。因为旧的核心支持的特色较少,而2.2.x的核心就是支持acpi,也只有极少的功能。
1、advanced power management
apm应用包含:apmd(apm的后台服务程序)和其他的应用程序(如apm)。建议到rpmfind.net找最新的适合你使用的版本,安装和运行ok后,我们可以试验apm命令了。
apm最简单的使用就是显示机器里的电池容量。
apm
ac on-line, no system battery
如果不支持apm,就显示“no apm support in核心”。这时,先检查是否有/proc/apm。如果没有,检查是否运行安装apm后的核心。如果你把apm作为了一个模块,检查是否加载这个模块。apm还能用-s/-s分别进入备用(standby)和悬挂(suspend)状态。
图1
图1是kde系统界面,它采用apm来检查电池容量,还可以管理其他硬件的节能模式(图2),并在任务栏显示。进一步的了解可到www.linuxdoc.org。
2、acpi
linux对acpi的支持较好,而且相关的文档也比apm的要多。
acpi的权威网站是http://phobos.fs.tum.de/acpi/,其中在下载栏中包括了两个内容:acpid和pmtools,它们可以更好地优化和管理acpi。
图2
pmtools里面有个命令是pmtest,它让你检测设备。一般地,它显示你系统里的acpi设备,并能让你对它们进行“悬挂”或“备用”处理。它必须用root来运行。
/pmtools/pmtest
vga (d0)
keyboard (d0)
pci 0x0 (d0)
system 0x0 (d0)
看来,vga显示器、键盘、pci总线和系统都被识别为acpi设备。它们的状态都是d0,就是活动状态。我们可以把状态设为d1/d2 (耗电最小化)或d3 (完全关闭)。比如:
/pmtools/pmtest -d1 vga
现在显示器应该变黑。这并不会让显卡停止产生视频信号(显示器也表示有输入信号),只是把信号全部转变为黑色。/pmtools/pmtest -d0 vga可以恢复。
上面我们仅仅是举了几个例子,大家可以举一反三,管理好您的系统,充分发挥出高级电压管理功能。