cpufreq变频子系统
来源:互联网 发布:手机nfc写入软件 编辑:程序博客网 时间:2024/04/26 05:24
早在2.6内核之初,linux就已经开始支持变频节能技术,实现了一个cpufreq内核子系统来兼容市面上的变频CPU技术。该子系统引入了governor和driver的概念,如下图:
cpufreq子系统实现了策略和机制分离的设计架构。
CPU-specific drivers(又称为scaling_driver),它是具体的变频机制实现,如intel为speedstep-centrio或最新的ACPI P-states驱动;所用驱动的查看命令为:cat /sys/devices/system/cpu/cpuXXX/cpufreq/scaling_driver
governor是一个CPU平台无关的管理层,实现一个CPU频率策略选择,在内核中共实现了5种,当前使用的情况,可通过如下命令查看:
cat /sys/devices/system/cpu/cpu<n>/cpufreq/scaling_governor
可在menuconfig中配置:CONFIG_CPU_FREQ,CONFIG_CPU_FREQ_GOV_PERFORMANCE, CONFIG_CPU_FREQ_GOV_POWERSAVE, CONFIG_CPU_FREQ_GOV_USERSPACE, CONFIG_CPU_FREQ_GOV_ONDEMAND, CONFIG_CPU_FREQ_GOV_CONSERVATIVE来选择是否开启cpufreq模块,以及选择何种governor,当然也可以根据自己的CPU来选择相应的scaling driver.
a. /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq实现的是当前cpu的运行频率,开启变频功能的时候可能会不停的变,其值是通过scaling_driver直接读写CPU的频率寄存器,在intel的xeon上是读取MSR_IA32_PERF_STATUS寄存器获得的
b./sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq是governor使用的频率即决策出来的频率,最终需要调用scaling driver来设置它为CPU实际的工作频率,因此与cpuinfo_cur_freq存在一个时间差,但最终是同一个值
c./proc/cpuinfo中显示的频率值和scaling_cur_freq是一致的
内核编译阶段可以选择系统默认的governor,也可在linux shell下动态设置当前的governor为performance(每个CPU都需要设置),这样每个核都会稳定工作在最高频率:
echo performance > /sys/devices/system/cpu/cpu<n>/cpufreq/scaling_governor (n从0到N-1,N为系统中的CPU个数);比如在某些支持TurboMode技术的Intel处理器上选择这个governor可以进一步提高性能。
如果想设定某一个中间的固定频率可以选用userspace的governor:
1)echo userspace > /sys/devices/system/cpu/cpu<n>/cpufreq/scaling_governor(所有CPU都要改)。
2) 1)步骤完成后,在cpufreq下会出现一个scaling_setspeed,直接把频率echo进去就可以了(所有CPU都要改)。
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies,可以查看可支持的频率。
userspace一般配合用户态daemon程序使用,如上图中的cpuspeed程序,可以根据cpu的当前使用率来动态调整cpu的当前频率(userspace可通过scaling_setspeed文件设置),试图达到最高的performance/watt。
同一时间不同核的频率CPU硬件会保证是相同的,变频功能的开启除了内核配置外,还需要BIOS开启变频选项。
当出现性能较差问题而百思不得其解的时候,你可以关注一下cpufreq,或许就是你的问题原因所在。
http://blog.chinaunix.net/uid-7295895-id-3076467.html- cpufreq变频子系统
- cpufreq变频子系统
- cpufreq变频子系统
- Linux的cpufreq(动态变频)技术
- Linux的cpufreq(动态变频)技术
- Linux的cpufreq(动态变频)技术
- Linux内核的cpufreq(变频)机制
- Linux的cpufreq(动态变频)技术
- Linux的cpufreq(动态变频)技术
- Linux的cpufreq(动态变频)技术
- Linux的cpufreq(动态变频)技术
- cpufreq子系统专题
- Cpufreq
- cpufreq
- Cpufreq
- 减少 Linux 电耗,第 1 部分: CPUfreq 子系统
- 变频电路
- 变频电源
- 数据结构第二天----名词意思的探索篇
- memcached小试牛刀
- SQLServer迁移到MySql
- Unable to execute dex: java.nio.BufferOverflowException
- oozie自带示例的运行
- cpufreq变频子系统
- XMPP协议实现原理介绍
- RESTful API 设计最佳实践
- 软件工程文档编写总结
- 一只小爬虫
- sscanf字符串的处理
- 应用中获取Root权限(已经Root过的机器)
- js&as之间方法的调用
- SPOJ WILLITST