首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏linux驱动个人学习

    CPUFreq驱动

    CPUFreq的核心层位于drivers/cpufreq/cpufreq,c下,它为各个SoC的CPUFreq驱动的实现提供了一套统一的接口,并实现了一套notifier机制,可以在 CPUFreq的策略和频率改变的时候向其他模块发出通知 CPUFreq核心层提供了如下API以供SoC注册自身的CPUFreq驱动: int cpufreq_register_driver(struct cpufreq_driver *driver_data ) 其参数为一个cpufreq_driver结构体指针,实际上,cpufreq_driver封装了一个具体的SoC的CPUFreq驱动的主体,该结构体形如代码如下所示。 /cpufreq/s5pv210-cpufreq.c设置name为s5pv210, drivers/cpufreq/omap-cpufreq.c设置name为omap;falgs是一些暗示性的标志,譬如 cpufreq-bench工具可以帮助工程师分析采用CPUFreq后对系统性能的影响; CPUFreq通知 CPUFreq子系统会发出通知的情况有两种:CPUFreq的策略变化或者CPU运行频率变化。

    2.1K30发布于 2018-07-30
  • 来自专栏影像技术栈

    性能功耗专题 | 深入浅出CPUFreq

    CPUfreq核心层其实就是一个中间层,向下提供不同类型CPU驱动的框架接口(注册cpufreq_driver驱动),向上提供不同调频governor的算法接口(注册cpufreq_governor) CPUFreq 框架层 从图四的CPUFREQ软件框架图可以看出,框架层是一个虚拟中间层(cpufreq.c cpufreq_stats.c cpufreq_times.c freq_table.c提供基本函数 ,统计cpufreq相关信息),提供了承上启下的能力。 struct cpufreq_policy中各个字段变量的描述如下: 我们从一个简单的命令开始,来整体看一下CPUFREQ框架。 CPUFreq 驱动层 核心提供API cpufreq_register_driver来用于注册具体的cpufreq的驱动。

    3.3K53编辑于 2022-10-08
  • 来自专栏linux驱动个人学习

    linux cpufreq framework(5)_ARM big Little driver

    2)bL_cpufreq_register bL_cpufreq_register位于“drivers/cpufreq/arm_big_little.c”中,主要负责如下事情: a)执行一些初始化动作 b)调用cpufreq_register_driver接口,注册名称为bL_cpufreq_driver的cpufreq driver。 有关cpufreq driver以及cpufreq_register_driver的描述可参考“Linux cpufreq framework(2)_cpufreq driver”。 4)bL_cpufreq_init bL_cpufreq_driver被注册后,cpufreq core就会调用bL_cpufreq_init接口,完成后续的初始化任务,该接口比较重要,是arm big 通知,cpufreq driver会重新注册bL_cpufreq_driver。

    1.3K20编辑于 2023-05-03
  • 来自专栏全志嵌入式那些事

    FAQ_全志平台Tina3.0.7 RXXX cowbell方案启动时cpufreq报错且无法生成cpufreq节点

    FAQ_全志平台Tina3.0.7 RXXX cowbell方案启动时cpufreq报错且无法生成cpufreq节点 【软件版本】Tina 3.0.7 cowbell方案 【现象】 启动时报错: [ 3.434693 +0x154/0x3bc) [ 3.548616] [<c030847c>] (sunxi_cpufreq_init) from [<c0304ca4>] (cpufreq_online+0x160/0x604 ) [ 3.558112] [<c0304ca4>] (cpufreq_online) from [<c03051ac>] (cpufreq_add_dev+0x54/0x7c) [ 3.567121] ] [<c030421c>] (cpufreq_register_driver) from [<c0635c94>] (sunxi_cpufreq_initcall+0x20/0x44) [ 3.598836 ) [ 3.781820] [<c0304ca4>] (cpufreq_online) from [<c03051ac>] (cpufreq_add_dev+0x54/0x7c) [ 3.790828]

    36310编辑于 2024-02-02
  • 来自专栏全志嵌入式那些事

    全志平台他Tina系统linux4.9打开调频策略cpufreq后编译错误问题

    /atina/lichee/linux-4.9/drivers/cpufreq/sunxi-cpufreq.c:279: undefined reference to `arisc_dvfs_cfg_vf_table /sunxi-cpufreq.c b/drivers/cpufreq/sunxi-cpufreq.c index ff74e07..f0480a2 100644 --- a/drivers/cpufreq /sunxi-cpufreq.c +++ b/drivers/cpufreq/sunxi-cpufreq.c @@ -188,8 +188,9 @@ static int sunxi_set_cpufreq_and_voltage (struct cpufreq_frequency_table *table, memcpy((void *)kvir, (void *)cpufreq_dvfs_table, num * /cpufreq/scaling_cur_freq

    38410编辑于 2024-02-02
  • 来自专栏蓝天

    获取cpu频率的代码

    linux自带的一个命令,可用来将进程绑定到指定CPU 相关的函数有: sched_setaffinity, CPU_CLR, CPU_ISSET, CPU_SET, CPU_ZERO // cpufreq 库可在/usr/lib目录下找到 // 编译: g++ -g -o x x.cpp -lcpufreq // 需要以root用户执行以下代码 //#include <cpufreq.h #ifndef _CPUFREQ_H extern "C" int cpufreq_cpu_exists(unsigned int cpu); extern "C" unsigned long cpufreq_get_freq_kernel(unsigned int cpu); extern "C" unsigned long cpufreq_get_freq_hardware (unsigned int cpu); extern "C" int cpufreq_get_hardware_limits(unsigned int cpu, unsigned long *min

    3.2K20发布于 2018-08-10
  • 来自专栏小陈运维

    使用cpufrequtils查看调整cpu频率及模式

    # 查看某个核心详细信息 cpufreq-info -c 0 # 查看CPU当前频率 cpufreq-info -f # 查看CPU当前模式 cpufreq-info -p # 查看CPU支持的模式 cpufreq-info -g # 省电模式 cpufreq-set -g powersave # 默认模式 cpufreq-set -g ondemand # 性能模式 cpufreq-set -g performance # 单独设置CPU频率 cpufreq-set -c 0 -f 4.1GHz cpufreq-set -c 1 -f 4.1GHz cpufreq-set -c 2 -f 4.1GHz cpufreq-info 查看当前cpu状态 参数: 参数 值 说明 -c CPU序号 查看所指定cpu状态 -f 查看cpu当前频率 -l 查看cpu最高频率和最低频率 -p 查看当前cpu模式 -g 查看当前支持的CPU运行模式 -m 带单位的输出 cpufreq-set 设置cpu模式及频率 参数 值 说明 -c CPU序号 设置修改指定cpu -d 频率 设置cpu最小运行频率

    2.9K20编辑于 2023-10-31
  • 来自专栏全志嵌入式那些事

    全志R8平台 fantasy调频策略配置方法

    修改文件 linux3.4.39/include/linux/cpufreq.h — a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h cpufreq_gov_interactive; define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_interactive) -#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_FANTASYS ) -extern struct cpufreq_governor cpufreq_gov_fantasys; -#define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_fantasys ; +#define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_fantasy) endif 修改kernel_menuconfig 选择 fantasy /cpufreq/scaling_min_freq 设定dvfs中最大频率的节点:/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 4.

    25910编辑于 2024-02-02
  • 来自专栏机器人课程与技术

    Ubuntu设置CPU频率cpufrequtils

    安装: sudo apt install cpufrequtils 安装完成之后: cpufreq-aperf cpufreq-info cpufreq-set 如果要设置为性能模式: 命令是 :sudo cpufreq-set -g performance 查看CPU设置后效果: $ cpufreq-info cpufrequtils 008: cpufreq-info (C) Dominik -f 2.53Ghz cpufreq-info cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009 Report errors 该软件包主要有2个程序: /usr/bin/cpufreq-info /usr/bin/cpufreq-set 它基本上是使用Sys界面的一种用户友好的选择。 使用 cpufreq-set 命令的具体案例: 设置 CPU 的最大频率: sudo cpufreq-set -c 0 -u 2.6GHz 设置 CPU 的最小频率: sudo cpufreq-set

    4.6K21编辑于 2023-02-26
  • 来自专栏ADAS性能优化

    基于调度器的 CPU 调频机制--schedutil

    CPU 调频策略 CPU 调频模块主要分为 3 块: CPUFreq 框架 为所有支持CPUfreq 提供了通用的代码基础结构和用户空间API。 它定义了其他组件在其中运行的基本框架 CPUFreq Governor CPU 调频的策略。 CPU 在什么样负载,什么样的场景下应该跑多少频率,都是通过 CPUFreq Governor 采取一定策略来决定的 CPUFreq 驱动 更新CPUFreq Governor 的决定到CPU HW , 所以 cpufreq governor 完全没必要自己去做负载采样,应该从内核调度器那里获取。而基于调度器的 cpufreq governor 就是这样引出来的。 dirver ,从而完成CPUfreq的快速切换。

    11.4K30编辑于 2022-05-13
  • 来自专栏LINUX阅码场

    深入理解Linux电源管理

    CPUFreq框架由3部分组成,CPUFreq Govenor、CPUFreq Core和CPUFreq Driver。 *policy); }; linux-src/drivers/cpufreq/cpufreq.c int cpufreq_register_driver(struct cpufreq_driver * 代码如下: linux-src/drivers/cpufreq/cpufreq_performance.c static struct cpufreq_governor cpufreq_gov_performance 代码如下: linux-src/drivers/cpufreq/cpufreq_powersave.c static struct cpufreq_governor cpufreq_gov_powersave ; intel_cpufreq.attr = hwp_cpufreq_attrs; intel_cpufreq.flags |= CPUFREQ_NEED_UPDATE_LIMITS

    8K51编辑于 2022-09-28
  • 来自专栏全志嵌入式那些事

    全志平台方案CPU频率切频稳定性测试

    312M  240M   120M  60M 调频策略选的是userspace,就是用户想跑多少就跑多少: echo userspace > /sys/devices/system/cpu/cpu0/cpufreq /scaling_governor echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq echo 60000 > / sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq while [ ${test_count} -le ${test_count_total} /scaling_setspeed echo -e "\nSET CPU FREQ :" cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq /scaling_setspeed echo -e "\nSET CPU FREQ :" cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

    66710编辑于 2024-02-02
  • 来自专栏小陈运维

    查看调整cpu频率及模式

    有些物理服务器使用默认频率进行运行,这时可以使用该工具进行就该CPU的核心频率 安装: apt install cpufrequtils yum install cpufrequtils 使用: # 查看全部核心详细信息 cpufreq-info # 查看某个核心详细信息 cpufreq-info -c 0 # 查看CPU当前频率 cpufreq-info -f # 查看CPU当前模式 cpufreq-info -p # 查看CPU支持的模式 cpufreq-info -g # 省电模式 cpufreq-set -g powersave # 默认模式 cpufreq-set -g ondemand # 性能模式 cpufreq-set -g performance # 单独设置CPU频率 cpufreq-set -c 0 -f 4.1GHz cpufreq-set -c 1 -f 4.1GHz cpufreq-set -c 2 -f 4.1GHz ...... cpufreq-info 查看当前cpu状态 参数: 参数 值 说明 -c CPU序号 查看所指定cpu状态 -f

    1.5K10编辑于 2023-10-30
  • 来自专栏嵌入式Linux系统开发

    Linux 电源管理子系统

    1、CPUFreq 驱动 CPUFreq 子系统位于 drivers/cpufreq 目录下,负责进行运行过程中 CPU 频率和电压的动态调整,即 DVFS(Dynamic Voltage Frequency CPUFreq 的核心层位于 drivers/cpufreq/cpufreq.c 下,它为各个 SoC 的 CPUFreq 驱动的实现提供了一套统一的接口,并实现了一套 notifier 机制,可以在 总而言之,系统的状态以及 CPUFreq 的策略共同决定了 CPU 频率跳变的目标,CPUFreq 核心层并将目标频率传递给底层具体 SoC 的 CPUFreq驱动,该驱动修改硬件,完成频率的变换,如图所示 用户空间一般可通过/sys/devices/system/cpu/cpux/cpufreq 节点来设置 CPUFreqCPUFreq 后对系统性能的影响。

    4.9K31编辑于 2021-12-27
  • 来自专栏人人都是极客

    Linux 电源管理子系统

    1、CPUFreq 驱动 CPUFreq 子系统位于 drivers/cpufreq 目录下,负责进行运行过程中 CPU 频率和电压的动态调整,即 DVFS(Dynamic Voltage Frequency CPUFreq 的核心层位于 drivers/cpufreq/cpufreq.c 下,它为各个 SoC 的 CPUFreq 驱动的实现提供了一套统一的接口,并实现了一套 notifier 机制,可以在 总而言之,系统的状态以及 CPUFreq 的策略共同决定了 CPU 频率跳变的目标,CPUFreq 核心层并将目标频率传递给底层具体 SoC 的 CPUFreq驱动,该驱动修改硬件,完成频率的变换,如图所示 用户空间一般可通过/sys/devices/system/cpu/cpux/cpufreq 节点来设置 CPUFreqCPUFreq 后对系统性能的影响。

    3.9K20编辑于 2022-10-08
  • 来自专栏山河已无恙

    Linux性能调优之用电调优(Power Usage Tuning)

    ┌──[root@liruilongs.github.io]-[/usr/lib/modules/4.18.0-193.el8.x86_64/kernel/drivers/cpufreq] └─$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ┌──[root@liruilongs.github.io]-[/usr/lib/modules /4.18.0-193.el8.x86_64/kernel/drivers/cpufreq] └─$ modprobe cpufreq_ondemand ┌──[root@liruilongs.github.io /cpu/cpu0/cpufreq/scaling_governor ┌──[root@liruilongs.github.io]-[/usr/lib/modules/4.18.0-193.el8.x86 _64/kernel/drivers/cpufreq] └─$ 常见策略我们简单来看下。

    5.2K30编辑于 2023-01-30
  • 来自专栏全志嵌入式那些事

    FAQ_全志平台Tina系统改用gpt分区表后系统启动异常问题解决方法(Waiting for root device /dev/nand0p3...)

    +0x154/0x3bc) [ 4.084470] [<c03088ac>] (sunxi_cpufreq_init) from [<c03050d4>] (cpufreq_online +0x160/0x604) [ 4.093964] [<c03050d4>] (cpufreq_online) from [<c03055dc>] (cpufreq_add_dev +0x54/0x7c) [ 4.102971] [<c03055dc>] (cpufreq_add_dev) from [<c02218bc>] (subsys_interface_register +0x114/0x1f0) [ 4.124111] [<c030464c>] (cpufreq_register_driver) from [<c0634b84>] (sunxi_cpufreq_initcall +0x20/0x44) [ 4.134680] [<c0634b84>] (sunxi_cpufreq_initcall) from [<c0009a5c>] (do_one_initcall

    41610编辑于 2024-02-02
  • 来自专栏FPGA/ARM/DSP技术专栏

    瑞芯微RK3568J如何“调节主频”,实现功耗降低?一文教会您!

    Target# cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq图片图2执行如下命令,修改CPU主频和主频模式。 Target# echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governorTarget# echo 1104000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeedTarget# cat /sys/devices/system/cpu/cpufreq 图片图6可通过修改"Default CPUFreq governor"选项配置CPU主频模式,本次操作修改为powersave主频模式。 Target# cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freqTarget# cat /sys/devices/system/cpu

    3K00编辑于 2023-10-09
  • 来自专栏FPGA/ARM/DSP技术专栏

    瑞芯微RK3568J如何“调节主频”,实现功耗降低?一文教会您!

    Target# cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq图2执行如下命令,修改CPU主频和主频模式。 Target# echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governorTarget# echo 1104000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeedTarget# cat /sys/devices/system/cpu/cpufreq 可通过修改"Default CPUFreq governor"选项配置CPU主频模式,本次操作修改为powersave主频模式。图7配置完毕后,选中<Save>,按Enter键保存配置选项。 /cpufreq/policy0/scaling_governor设备树配置方法各主频模式最高使能主频为1.4(1.416)GHz,如需修改performance或userspace主频模式使能的主频,

    90210编辑于 2024-07-30
  • 来自专栏linux驱动个人学习

    CPU调速器schedutil原理分析

    cpufreq:根据cpu负载,选择满足性能需求的最低的电压/频率对(也叫OPP,Operating Performance Points)。 2. cpufreq总体框架简介 介绍完CPU电源管理的常用手段,我们简单回顾下cpufreq的总体架构和各模块的作用,以及体现的软件思想。 2.2 cpufreq软件思想介绍 cpufreq体现的一些软件设计思想,在Linux kernel中其他模块中也很常见,值得我们学习和借鉴: 分层思想。 这个函数每个policy都会执行到,可能会同时执行,产生竞争条件,最终会在cpufreq_init_governor函数中被调用。 所有共用policy都要循环执行struct sugov_cpu sg_cpu变量的初始化 调用cpufreq_add_update_util_hook接口,向scheduler注册回调函数,在cpufreq_update_util

    7.8K31编辑于 2023-03-08
领券