LinuxTina动态调压调频配置与实现

2024-04-26 03:32

本文主要是介绍LinuxTina动态调压调频配置与实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

动态调压调频功能配置菜单:

修改后,对应的.config DEFAULT 策略发生变化:

默认原来的策略是:

或者直接串口写入 echo performance >/sys/devices/system/cpu/cpufreq/policy0/scaling_governor动态修改。 

查看支持的功耗策略:

[jenkins@localhost ~]$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
performance powersave
[jenkins@localhost ~]$

最大最小频率

[jenkins@localhost ~]$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_min_freq
800000
800000
800000
800000
800000
800000
800000
800000
800000
800000
800000
800000
800000
800000
800000
800000
[jenkins@localhost ~]$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq
4900000
4900000
4900000
3600000
3600000
3600000
3600000
4900000
4900000
4900000
4900000
4900000
4900000
4900000
4900000
4900000

和lscpu的输出是match的

在某服务器主机上的显示:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave
powersave

用工具查看和配置

$ cpupower frequency-info
analyzing CPU 0:driver: intel_pstateCPUs which run at the same hardware frequency: 0CPUs which need to have their frequency coordinated by software: 0maximum transition latency:  Cannot determine or is not supported.hardware limits: 800 MHz - 4.90 GHzavailable cpufreq governors: performance powersavecurrent policy: frequency should be within 800 MHz and 4.90 GHz.The governor "performance" may decide which speed to usewithin this range.current CPU frequency: Unable to call hardwarecurrent CPU frequency: 3.80 GHz (asserted by call to kernel)boost state support:Supported: yesActive: yes

设置

$ sudo cpupower frequency-set -g performance
Setting cpu: 0
Setting cpu: 1
Setting cpu: 2
Setting cpu: 3
Setting cpu: 4
Setting cpu: 5
Setting cpu: 6
Setting cpu: 7
Setting cpu: 8
Setting cpu: 9
Setting cpu: 10
Setting cpu: 11
Setting cpu: 12
Setting cpu: 13
Setting cpu: 14
Setting cpu: 15

或者用脚本

#!/bin/bash
cpunum=$(cat /proc/cpuinfo | grep processor | wc -l)
for i in `seq 0 $[$cpunum-1]`
dosudo echo performance > /sys/devices/system/cpu/cpu${i}/cpufreq/scaling_governor
done

动态查看

$ watch grep \"cpu MHz\" /proc/cpuinfo

$ sudo cpupower monitor|Nehalem                    || Mperf              || Idle_Stats
CPU | C3   | C6   | PC3  | PC6  || C0   | Cx   | Freq || POLL | C1   | C2   | C30|  0.00|  1.20| 83.14|  0.00||  0.03| 99.97|  3660||  0.00|  0.00|  0.00| 99.971|  0.00|  1.20| 83.14|  0.00||  0.05| 99.95|  3752||  0.00|  0.00|  1.73| 98.212|  0.00|  0.00| 83.14|  0.00||  0.01| 99.99|  3808||  0.00|  0.00|  0.00| 99.983|  0.00|  0.00| 83.14|  0.00||  0.01| 99.99|  3771||  0.00|  0.00|  0.00| 99.984|  0.00|  0.00| 83.14|  0.00||  0.01| 99.99|  3673||  0.00|  0.00|  0.00| 99.985|  0.00|  0.00| 83.14|  0.00||  0.01| 99.99|  3599||  0.00|  0.00|  0.00| 99.986|  0.00|  0.00| 83.14|  0.00||  0.05| 99.95|  3784||  0.00|  0.00|  0.00| 99.947|  0.00|  0.00| 83.14|  0.00||  0.01| 99.99|  3790||  0.00|  0.00|  0.00| 99.988|  0.00|  1.49| 83.14|  0.00||  0.10| 99.90|  3768||  0.00|  0.01|  2.87| 97.019|  0.00|  1.49| 83.14|  0.00||  0.02| 99.98|  3472||  0.00|  0.00|  0.00| 99.9810|  0.00|  0.57| 83.14|  0.00||  0.43| 99.57|  3762||  0.00|  0.00|  0.00| 99.5711|  0.00|  0.57| 83.14|  0.00||  0.05| 99.95|  3718||  0.00|  0.00|  0.54| 99.4012|  0.00| 97.06| 83.14|  0.00||  0.15| 99.85|  3579||  0.00|  0.04| 27.68| 72.1313|  0.00| 95.86| 83.14|  0.00||  0.16| 99.84|  3585||  0.00|  0.37|  3.48| 96.0014|  0.00| 99.86| 83.14|  0.00||  0.10| 99.90|  3587||  0.00|  0.00|  1.65| 98.2515|  0.00| 99.83| 83.14|  0.00||  0.10| 99.90|  3586||  0.00|  0.00|  2.34| 97.56

设置为performance之后,频率锁定在/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq.

关于动态调压调频的内核实现方法,可以关注核心注册跳压调频注册函数cpufreq_register_driver,设置__cpufreq_driver_target函数中.

change governer callstack.

可以看到,通过修改配置的方式实际上是将CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND关闭,并且打开CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE.

调整后,看下图就可以知道,系统在空载的情况下,CPU仍然是1.2G运转。

CPU:  0.0% usr  0.7% sys  0.0% nic 99.2% idle  0.0% io  0.0% irq  0.0% sirq
Load average: 0.00 0.00 0.00 1/58 929
[7m  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND[0m877     1 root     S     1144  0.4   0  0.2 adbd887     1 root     R      676  0.2   0  0.2 /sbin/swupdate-progress -w920   877 root     S      916  0.3   0  0.0 /bin/sh894     1 root     S      916  0.3   0  0.0 -/bin/sh929   920 root     R      916  0.3   0  0.0 top1     0 root     S      912  0.3   0  0.0 /sbin/init665     2 root     SW       0  0.0   0  0.0 [kworker/0:2]3     2 root     SW       0  0.0   0  0.0 [kworker/0:0]7     2 root     SW       0  0.0   0  0.0 [rcu_preempt]5     2 root     SW       0  0.0   0  0.0 [kworker/u2:0]6     2 root     SW       0  0.0   0  0.0 [ksoftirqd/0]880     2 root     SW       0  0.0   0  0.0 [file-storage]12     2 root     SW       0  0.0   0  0.0 [kworker/u2:1]462     2 root     SW       0  0.0   0  0.0 [spi0]262     2 root     SW       0  0.0   0  0.0 [oom_reaper]11     2 root     SW       0  0.0   0  0.0 [kdevtmpfs]268     2 root     SW<      0  0.0   0  0.0 [kblockd]266     2 root     SW<      0  0.0   0  0.0 [bioset]308     2 root     SW       0  0.0   0  0.0 [irq/329-axp2101]304     2 root     SW       0  0.0   0  0.0 [kworker/0:1]
root@(none):/sys/kernel/debug/clk# cat clk_summary[Jclock                         enable_cnt  prepare_cnt        rate   accuracy   phase
----------------------------------------------------------------------------------------osc48m                                   0            0    48000000          0 0osc48md4                              0            0    12000000          0 0usbohci0_12m                       0            0    12000000          0 0pll_periph0div25m                        0            0    25000000          0 0ephy_25m                              0            0    25000000          0 0hosc                                    13           13    24000000          0 0csi_master0                           0            0    24000000          0 0dcxo_out                              0            0    24000000          0 0spwm                                  0            0    24000000          0 0cpurapbs2                             0            0    24000000          0 0cpurcpus                              1            1    24000000          0 0cpurahbs                           1            1    24000000          0 0cpurapbs1                       2            2    24000000          0 0cpurpio                      1            1    24000000          0 0stwi                         1            1    24000000          0 0csi_master1                           0            0    24000000          0 0mipi_host0                            1            1    24000000          0 0usbphy0                               1            1    24000000          0 0ths                                   1            1    24000000          0 0gpadc                                 1            1    24000000          0 0spi2                                  0            0    24000000          0 0spi1                                  0            0    24000000          0 0sdmmc2_rst                            0            0    24000000          0 0sdmmc2_bus                            0            0    24000000          0 0sdmmc2_mod                            0            0    24000000          0 0sdmmc1_rst                            0            0    24000000          0 0sdmmc1_bus                            0            0    24000000          0 0sdmmc1_mod                            0            0    24000000          0 0sdmmc0_rst                            1            1    24000000          0 0sdmmc0_bus                            1            1    24000000          0 0dbgsys                                0            0    24000000          0 0avs                                   0            0    24000000          0 0apb2                                  1            1    24000000          0 0twi3                               0            0    24000000          0 0twi2                               0            0    24000000          0 0twi1                               0            0    24000000          0 0twi0                               0            0    24000000          0 0uart3                              0            0    24000000          0 0uart2                              0            0    24000000          0 0uart1                              0            0    24000000          0 0uart0                              1            1    24000000          0 0hoscd2                                0            0    12000000          0 0pll_csi                               0            0   336000000          0 0csi_top                            0            0   336000000          0 0pll_audio                             4            4    22579200          0 0codec_1x                           1            1    22579200          0 0i2s0                               1            1    22579200          0 0codec_4x                           0            0    22579200          0 0i2s1                               0            0    22579200          0 0pll_audiox2                        0            0    45158400          0 0pll_audiox4                        0            0    90316800          0 0pll_video0                            2            2    99000000          0 0dspo                               0            0    99000000          0 0tcon_lcd                           1            1    99000000          0 0mipi_dphy0                         1            1    24750000          0 0pll_video0x4                       0            0   396000000          0 0pll_uni                               3            4   600000000          0 0eise                               0            0   600000000          0 0isp                                0            0   300000000          0 0ve                                 0            1   600000000          0 0de                                 1            1   300000000          0 0g2d                                1            1   300000000          0 0pll_unix2                          1            1  1200000000          0 0sdmmc0_mod                      1            1   300000000          0 0pll_periph0                           4            4   600000000          0 0spi0                               1            1   100000000          0 0cpurapbs2_pll                      0            0   600000000          0 0cpurcpus_pll                       0            0   600000000          0 0nna_rst                            0            0   600000000          0 0apb1                               2            2   100000000          0 0pio                             1            1   100000000          0 0pwm                             1            1   100000000          0 0ahb3                               2            2   200000000          0 0display_top                     1            1   200000000          0 0usbotg                          1            1   200000000          0 0usbehci0                        0            0   200000000          0 0usbohci0                        0            0   200000000          0 0gmac                            0            0   200000000          0 0psi                                1            1   200000000          0 0ahb2                            0            0   200000000          0 0ahb1                            2            2   200000000          0 0iommu                        1            1   200000000          0 0hstimer                      0            0   200000000          0 0dma                          1            1   200000000          0 0periph32k                          0            0       32768          0 0pll_periph0x2                      0            0  1200000000          0 0nna                             0            0  1200000000          0 0ce                              0            0   300000000          0 0pll_ddr0                              0            0  1584000000          0 0sdram                              0            0  1584000000          0 0mbus                               0            0   396000000          0 0pll_cpu                               0            0  1200000000          0 0cpu                                0            0  1200000000          0 0cpuapb                          0            0   300000000          0 0axi                             0            0   400000000          0 0iosc                                     0            0    16000000          0 0losc                                     1            1       32768          0 0losc_out                              1            1       32768          0 0cpurowc                               0            0       32768          0 0
root@(none):/sys/kernel/debug/clk#

补充:

值得一提的是,这种动态调压调频的策略和配置方案并非ARM独有的,mainline的X84 make menuconfig的时候的配置几乎和ARM一样

如果关闭CPU 调频,可以直接关闭CONFIG_CPU_FREQ配置:

一些有用的调试节点:

intel x86 pc cpufreq hander register:


结束! 

这篇关于LinuxTina动态调压调频配置与实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/936596

相关文章

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

OpenCV图像形态学的实现

《OpenCV图像形态学的实现》本文主要介绍了OpenCV图像形态学的实现,包括腐蚀、膨胀、开运算、闭运算、梯度运算、顶帽运算和黑帽运算,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起... 目录一、图像形态学简介二、腐蚀(Erosion)1. 原理2. OpenCV 实现三、膨胀China编程(

通过Spring层面进行事务回滚的实现

《通过Spring层面进行事务回滚的实现》本文主要介绍了通过Spring层面进行事务回滚的实现,包括声明式事务和编程式事务,具有一定的参考价值,感兴趣的可以了解一下... 目录声明式事务回滚:1. 基础注解配置2. 指定回滚异常类型3. ​不回滚特殊场景编程式事务回滚:1. ​使用 TransactionT

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J