
记本电脑的电源管理功能之ACPI篇呵呵,文笔不好,请别见笑,现在把我所了解的有关笔记本电源管理方面的ACPI技术简单写写,供网友们参考,写得不全或有误,请补贴指正,多谢。
也许用过笔记本的人都有用过这样的功能:当你想离开笔记本电脑去做一些比较耗时的工作时,你通常都会让笔记本电脑进入待机模式(Standby)或休眠模式(Hibernation),但是你知道这时候你的笔记本电脑什么元件正在工作?什么元件已经停止工作?不同状态的功耗是多少了吗?了解这些对于现在我们保护我们自己的爱机的元件寿命和都在提倡的节电和环保都有很多积极的意义,好了,废话少说进入正题:
ACPI 是E文“Advanced Configuration and Power interface ”的缩写,是由 INTEL,MICROSOFT,TOSHIBA所共同制定的 是为了在 *** 作系统和硬件之间有一个共同的电源管理接口 以改进以前在电源管理上由各别的厂商所制定的不统一接口
ACPI改善了原有的通过BIOS来进行电源管理的模式(APM),提供了一个比较优秀的电源管理模式和配置管理的接口规范ACPI为从原有的硬件到ACPI兼容硬件之间进行有序的过渡提供了一种有效的方式,且它还允许在一台机器当中共存ACPI和APM管理机制,已备需要时使用
另外,新的系统架构还突破了当前即插即用接口介面的局限性,对其进行了扩展ACPI为原来的母板配置接口进行了改善,使其能够支持这些高级的系统架构并以更有效的状态运行
ACPI 由 Win98 及 WNT50 开始支持 把电源管理的功能整合到 *** 作系统中 藉由统一的接口来控制所有硬件的电源 *** 作 从 Notebook 到桌上型和服务器均包含在此规格内,是 *** 作系统直接进行电源管理(OSPM)中的关键
所有的状态可分为 G ( Global) , D ( Device ) , S ( Sleeping ) , C ( CPU )
Global 是指所有系统 又可分为:
G0 - Working 工作状态 使用者程序可正常的执行 但是设备可以动态分配它们自己的状态 在没有用到此设备时 此设备可进入其它非工作状态。该状态下,系统实时响应外部事件(该状态下,不能拆装机)
G1 - Sleeping 此状态下系统销耗较小的电源 没有任何使用者的程序在执行系统看起来就像在关机状态因为此时显示屏幕是被关闭的 只要有任何唤醒激活的事件传达进入系统即很快会回复到工作状态 (该状态下,不能拆装机)
G2/S5 - Soft Off 此状态下系统只保留非常少的电源 没有任何使用者和 *** 作系统的程序在执行 这个状态下需要较长的时间来回复到工作状态 (该状态下,不能拆装机)
G3 - Mechanical Off 整个系统的电源均关闭 没有任何电流通过系统 系统只能重新打开电源供应器的开关来激活 此状态下电源的消耗为零
Global 状态摘要
系统状态 在运
行软件 唤醒时间 电源消耗 OS重启 安全拆装 电子方式退出状态
G0 - Working YES 0 LARGE NO NO YES
G1 - Sleeping NO >0 SMALL NO NO YES
G2/S5 - Soft Off NO LONG VERY NEAR0 YES NO YES
G3 - Mechanical Off NO LONG RTC BATTERY YES YES NO
Device 是指一些设备 例如调制解调器 , 硬盘, 光驱等 又可分为:
D0 - Fully-On 正常工作下
D1 可节省较少的功耗,仍然保持ACTIVE的设备功能较D2要多的多,该状态由设备本身所决定,有些设备不能进入D1 STATE。
D2 某些功能被关闭 可省较多的电源 该状态由设备本身所决定,有些设备不能进入D2 STATE。
D3 - Off 此状态下设备的电源完全被移出, 所以下次电源再一次被供应时需要 *** 作系统重新再对这个设备作一次设定(此状态下设备不对地址线进行译码)该状态需要最长的唤醒时间,所有的设备都可以进入该状态。
Device 状态摘要
设备状态 电源消耗 设备活动功能 唤醒时间
D0 – Fully On 依据 *** 作需要而定 All None
D1 D0>D1>D2>D3 >D2 <D2
D2 D0>D1>D2>D3 <D1 >D1
D3 - Off 0 None 需要完全初始化和重新加载
Sleeping 是指在 G1 下系统进入睡眠状态 又可分为:
S0 - Full on 正常工作下,所有设备全开,功耗一般会超过80W
S1 – Sleeping(POS)Power on Suspend,浅休眠状态,在此状态下可很快的回复系统的运作, 系统(CPU OR CHIPSET)的内容均没有遗失,但是CPU已经停止工作,其他的部件仍然正常工作,这时的功耗一般在30W以下。(其实有些CPU降温软件就是利用这种工作原理)
S2 - Sleeping 类似 S1 但是 CPU 和 Cache 的内容巳遗失 系统回复后 *** 作系统需要维护 CPU 和 Cache 的内容。这时CPU处于关闭状态,总线时钟也被关闭,但其余的设备仍然运转,唤醒事件发生后,首先由CPU 的reset信号开始动作。
S3 – Sleeping(STR) Suspend to RAM,除了内存的资料外其余 CPU , Cache , Chipset 的内容均遗失 内存的内容由硬件维护,唤醒事件发生后,首先由CPU 的reset信号开始动作。这时的功耗不超过10W。
S4 - Sleeping(STD) Suspend to DISK,此状态有最低的功耗, 最长的唤醒时间,所有的设备均被关闭。系统主电源关闭,但是系统信息会存入硬盘,硬盘仍然带电并可以被唤醒。
S5 - Soft Off 即是G2 的状态,和 S4 类似。连电源在内的所有设备全部关闭,但 *** 作系统不维护任何内容,该状态下需要一个完整彻底的启动过程来重新唤醒系统,BIOS使用一个不同的状态值来区分S4和S5两种状态唤醒时是否将需要从保存的内存镜像来启动。这时的功耗为0。
CPU工作状态可分为 :
C0 CPU 正常执行指令
C1 有最低的唤醒时间 在该状态下的硬件唤醒时间必须足够小,这样 *** 作软件在决定是否使用该设备时可以完全忽略掉该状态下的硬件唤醒时间。除了将处理器置于一个非执行指令电源状态外且该状态下软件完全不受影响。
C2 较 C1 更节省功耗,该状态下有比C1稍长的唤醒时间,这是由ACPI系统固件所决定的, *** 作软件可以依据这个信息来决定CPU该在什么时候由C2状态进入C1状态。除了将处理器置于一个非执行指令电源状态外且该状态下软件完全不受影响。
C3 较 C1和C2节省更多功耗,该状态下的唤醒时间最长, 这是由ACPI系统固件所决定的, *** 作软件可以依据这个信息来决定CPU该在什么时候由C3状态进入C2状态,在该状态下,处理器的缓存内容仍然保持,但是忽略任何侦听。 *** 作软件负责保持缓存内容的一致性。
有的。
具体步骤:
1、默认情况下系统节拍率选择100Hz。
2、设置好后在Linux内核源码根目录下的config文件中可见系统节拍率被设置为100Hz。
3、Linux内核会使用CONFIGHZ来设置自己的系统时钟,文件includeasmgenericparamh。
Linux内核使用全局变量jiffies来记录系统从启动以来的系统节拍数,系统启动的时候会将jiffies。
有几个概率需要了解
1时间周期(Clock Cycle)的频率:晶体振荡器在1秒以内时钟周期的个数=1秒以内时钟脉冲的个数,Linux里面用
#define CLOCK_TICK_RATE 1193180 / Underlying HZ /
单位为HZ
2时钟滴答(Clock Tick):
当PIT通道0的计数器减到0值时,它就在IRQ0上产生一次时钟中断,也即一次时钟滴答。PIT通道0的计数器的初始值决定了要过多少时钟周期才产生一次时钟中断。
3时钟滴答的频率(HZ):1秒以内产生时间滴答个数
HZ在arm和i386上定义为100,ALPHA和IA62为1024 ,IBM Power PC为1000
i386 1个时钟滴答时间为1000ms/100=10ms。
4时钟滴答的时间间隔(tick)
long tick = (1000000 + HZ/2) / HZ; / timer interrupt period / 单位为us ,tick=10ms,也可以通过HZ来计算
linux中#define TICK_SIZE= tick
1s=1,000,000us
(5)宏LATCH:Linux用宏LATCH来定义要写到PIT通道0的计数器中的值,它表示PIT将没隔多少个时钟周期产生一次时钟中断。
LATCH=(1秒之内的时钟周期个数)÷(1秒之内的时钟中断次数)=(CLOCK_TICK_RATE)÷(HZ)
Linux为取整 #define LATCH=(CLOCK_TICK_RATE + HZ/2) / HZ。
时钟周期理解:时钟脉冲,电平从0到1(或者相反)。
CLOCK_TICK_RATE和HZ都是 频率 :1秒以内时钟周期 频率 ,1秒以内时钟滴答 频率 。
TSC使用CPU频率,在现代计算机中CPU可能降频也可能超率,TSC时钟不准确。
顺序为HPET > APCI PMT>PIC>TSC
local cpu APIC只在单CPU场景上使用,如进程调度时间
参考:
>
在一台计算机上我们有两个时钟:一个称之为硬件时间时钟(RTC),还有一个称之为系统时钟(System Clock)。
系统时钟就是 *** 作系统的kernel所用来计算时间的时钟 它从1970年1月1日00:00:00 UTC时间到目前为止秒数总和的值。
在Linux下,系统时间在开机的时候会和RTC硬件时钟同步(synchronization),之后也就 各自独立运行 了。
系统运行期间,则通过其他硬件时钟源进行tick计算(tsc、hpet、acpi_pm)。
RTC(real time clock)通过主板(CMOS)的电磁供电,精确到秒。用户可手工设置RTC时间。
1 强制跃迁同步
ntpdate -u xxxxxxxx
xxxxxxxx 为ntpServer地址,如 ntpaliyuncom
注意:此时本机的ntpd不能启动,否则执行 ntpdate会报socket占用
2 将系统时间同步到硬件时钟
hwclock -w
3 启动ntpd,后续平滑同步
systemctl start ntpd
注意:此时本机的不能在ntpd运行期间执行ntpdate,否则会报socket占用
NTP服务器时间监控脚本
>
第一步,选择最好的NTP服务地址
具体命令为ntpdate -q IP地址或域名
广东地区NTP优选结果如下:
①time4cloudtencentcom
②server timeasiaapplecom
③server cnntporgcn
④server ntpaliyuncom
⑤server cnpoolntporg
检查BIOS主板时间的命令
hwclock -r
NTP服务启停命令
sudo systemctl start/stop ntpd
检查查看ntp服务器有无和上层ntp连通
ntpstat
查看ntp服务器与上层ntp的状态
ntpq -pn
===server选项格式===
server host [ key n ] [ version n ] [ prefer ] [ mode n ] [ minpoll n ] [ maxpoll n ] [ iburst ]
其中host是上层NTP服务器的IP地址或域名,随后所跟的参数解释如下所示:
◆ key: 表示所有发往服务器的报文包含有秘钥加密的认证信息,n是32位的整数,表示秘钥号。
◆ version: 表示发往上层服务器的报文使用的版本号,n默认是3,可以是1或者2。
◆ prefer: 如果有多个server选项,具有该参数的服务器优先使用。
◆ mode: 指定数据报文mode字段的值。
◆ minpoll: 指定与查询该服务器的最小时间间隔为2的n次方秒,n默认为6,范围为4-14。
◆ maxpoll: 指定与查询该服务器的最大时间间隔为2的n次方秒,n默认为10,范围为4-14。
◆ iburst: 当初始同步请求时,采用突发方式接连发送8个报文,时间间隔为2秒。
===同步硬件时钟===
ntp服务,默认只会同步系统时间。
如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,
在/etc/sysconfig/ntpd文件中,添加SYNC_HWCLOCK=yes这样,就可以让硬件时间与系统时间一起同步。
允许BIOS与系统时间同步,也可以通过hwclock -w 命令。
hwclock命令用来查询和设置硬件时钟。
hwclock -r 读取并打印硬件时钟
hwclock -s 将硬件时钟同步到系统时钟
hwclock -w 将系统时钟同步到硬件时钟
系统时钟与硬件时钟
在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。
参考文档:
Linux服务器NTP客户端配置——>
设置好时间要用 hwclock -w (长参数是 --systohc )同步回硬件时钟。
时间按说应该在关机时同步回硬件时钟的。Linux 只在开机时读取硬件时钟,整个运行中就靠系统运行的软时钟工作,不会在去读取硬件时钟。所以应该不需要这个 *** 作。
如果你的计算机时钟跑快,你要看看到底是关机时跑快还是开机时跑快。
如果关机跑快,那就是主板时钟的频率发生器坏了。导致实际运行频率超过额定频率。这只能拿去修理,如果修复,需要做焊接的。建议换新。
如果是开机时跑快,那就是系统驱动有问题,没有正确的从主机上获得计时用的频率发生器的数据。(计算机有两个频率发生器,一个是时钟专用的,一个是系统运行时计时专用的。后者精度高,系统运行时用这个计时)。当然也不排除这个计时器坏了。
这个问题貌似现在只能是升级或者降级系统。或者检查内核是不是用了什么补丁或者一些设置不合适导致计时器工作不正常。这东西应该是没有驱动可以装的。
我建议还是上 ntp 的定时同步,这样计算机会在每次同步后恢复到正确时间。
以上就是关于怎样设置ACPI可以提高本本性能全部的内容,包括:怎样设置ACPI可以提高本本性能、有没有办法可以获取linux开发板的硬件定时器频率、硬件时钟等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)