cpu节点相关信息解释(正点原子笔记)

BogoMIPS是衡量Linux处理器速度的指标,但不精确。CPU的性能可通过工作频率、最大/最小频率等参数判断。文章提到了不同调频策略,如Performance、Interactive和Powersave,以及如何调整CPU频率和添加支持的新频点。
cat /proc/cpuinfo
BogoMIPS Linux 系统中衡量处理器运行速度的一个“尺子”,处理器性能越强,主频越高,BogoMIPS 值就越大。
BogoMIPS 只是粗略的计算 CPU 性能,并不十分准确。可以通过 BogoMIPS 值来大致的判断当前处理器的性能。
目录/sys/bus/cpu/devices/cpu0/cpufreq
cpuinfo_cur_freq:当前 cpu 工作频率,从 CPU 寄存器读取到的工作频率。
cpuinfo_max_freq:处理器所能运行的最高工作频率(单位: KHz)。
cpuinfo_min_freq :处理器所能运行的最低工作频率(单位: KHz)。
cpuinfo_transition_latency:处理器切换频率所需要的时间(单位:ns)
scaling_available_frequencies:处理器支持的主频率列表(单位: KHz)。
scaling_available_governors:当前内核中支持的所有 governor(调频)类型。
scaling_cur_freq:保存着 cpufreq 模块缓存的当前 CPU 频率,不会对 CPU 硬件寄存器进
行检查。
scaling_driver:该文件保存当前 CPU 所使用的调频驱动。
scaling_governorgovernor(调频)策略,Linux 内核一共有 5 中调频策略,
①、Performance,最高性能,直接用最高频率,不考虑耗电。
②、Interactive,一开始直接用最高频率,然后根据 CPU 负载慢慢降低。
③、Powersave,省电模式,通常以最低频率运行,系统性能会受影响,一般不会用这个!
④、Userspace,可以在用户空间手动调节频率。
⑤、Ondemand,定时检查负载,然后根据负载来调节频率。负载低的时候降低 CPU 频率,
这样省电,负载高的时候提高 CPU 频率,增加性能。
scaling_max_freqgovernor(调频)可以调节的最高频率。
cpuinfo_min_freqgovernor(调频)可以调节的最低频率。
stats 目录下给出了 CPU 各种运行频率的统计情况,比如 CP
stats 目录下给出了 CPU 各种运行频率的统计情况,比如 CPU 在各频率下的运行时间以及
变频次数。
查看 stats 目录下的 time_in_state 文件可以看到 CPU 在各频率下的工作时间,命令如下:
cat /sys/bus/cpu/devices/cpu0/cpufreq/stats/time_in_state。

如何调整cpu频率让他一直工作在性能模式?

方法一:修改.config文件

 CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
 CONFIG_CPU_FREQ_GOV_POWERSAVE=y
 CONFIG_CPU_FREQ_GOV_USERSPACE=y
 CONFIG_CPU_FREQ_GOV_INTERACTIVE=y

修改为

 #CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
 CONFIG_CPU_FREQ_GOV_POWERSAVE=y
 CONFIG_CPU_FREQ_GOV_USERSPACE=y
 CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
 CONFIG_CPU_FREQ_GOV_ONDEMAND=y
修改完成以后重新编译 Linux 内核,编译之前先清理一下工程!因为我们重新修改过默认
配置文件了,编译完成以后使用新的 zImage 镜 像 文 件 重新 启动 Linux

 方法2:修改menuconfig

CPU Power Management
-> CPU Frequency scaling
-> Default CPUFreq governor
选择performance。
选择以后退出图形化配置界面,然后编译 Linux
内核,一定不要清理工程!否则的话我们刚刚的设置就会被清理掉。编译完成以后使用新的
zImage 重启 Linux,查看当前 CPU 的工作频率和调频策略。

如何添加对其他频点的支持?

cpu0: cpu@0 {
compatible = "arm,cortex-a7"
device_type = "cpu";
reg = <0>;
clock-latency = <61036>; /* two CLK32 periods */
operating-points = <
 /* kHz uV */
996000 1275000
792000 1225000
696000 1225000  /*新增频点*/
528000 1175000
396000 1025000
198000 950000
 >;
 fsl,soc-operating-points = <
/* KHz uV */
996000 1175000
792000 1175000
696000 1175000    /*新增频点*/
528000 1175000
396000 1175000
198000 1175000
 >;

设备树(device tree)机制是Linux内核从linux-3.x版本开始引进的一种机制,目的是解决内核源码的arch/arm目录下代码混乱的问题:随着ARM生态的快速发展,在内核源码的arch/arm目录下,存放着几十种arm芯片和几百个开发板相关的源文件,很多开发板和处理器的中断、寄存器等相关硬件资源都在这个目录下以.c或.h的文件格式定义。而对于内核来说,与这些硬件耦合,会导致内核代码混乱不堪,每个开发板上运行的内核镜像都必须单独编译配置,无法通用。什么时候Linux内核能像Windows镜像那样,无论你的电脑什么配置,一个Windows安装包,都可以直接下载安装运行呢?设备树机制,实现了Linux内核和硬件平台的解耦:每个硬件平台的硬件资源使用一个设备树文件(xxx.dts)来描述,而不是在arch/arm下以.c 或 .h 文件来定义。Linux内核是一个通用的内核,在启动过程中,在通过解析设备树中的硬件资源来初始化某个具体的平台。 引入设备树后,很多和内核驱动开发的工作也发生了变化:以往驱动工程师关注的头文件宏定义、寄存器定义,现在这些基本上不用关注,关注的重点则转向了如何根据硬件平台去配置和修改设备树文件。很多驱动的编程接口也发生了变化,开始慢慢使用device tree提供的编程接口去开发驱动。本期课程主要面向嵌入式开发人员,分享Linux下驱动开发所需要的设备树知识和必备技能
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值