ubuntu上disable intel_pstate,使用固定频率

从Ubuntu15的某个版本开始,在使用intel某些cpu的pc上默认使用intel_pstate cpufreq driver。后果就是只有performance和powersave两个governor可用。可通过下面命令确认:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governor

powersave performance

可看到可选的governor很少,只有两种(对于非intel_pstate cpufreq driver而言,常见的governor有ondemand powersave performance conservative userspace等,有些android设备还有叫interactive的governor)。

或者用 cpufreq-info

$ cpufreq-info

cpufrequtils 008: cpufreq-info (C) DominikBrodowski 2004-2009

Report errors and bugs tocpufreq@vger.kernel.org, please.

analyzing CPU 0:

 driver: intel_pstate

 CPUs which run at the same hardware frequency: 0

 CPUs which need to have their frequency coordinated by software: 0

 maximum transition latency: 0.97 ms.

 hardware limits: 1.20 GHz - 2.80 GHz

 available cpufreq governors: performance, powersave

 current policy: frequency should be within 1.20 GHz and 2.80 GHz.

                  The governor"powersave" may decide which speed to use

                  within this range.

 current CPU frequency is 1.21 GHz.

注: 要使用cpufreq-info和后面要提到的cpufreq-set,请先安装cpufrequtils,后面会提到。

 

在使用intel_pstate cpufreq driver的情况下,即使governor是powersave或者performance,但观测发现scaling_cur_freq是一直变化的,而不是像它们的含义一样,使用最低或者最高频率。

如果要测试系统或者软件的性能,我们需要固定cpu频率。本文讲述如何在这种的pc上固定cpu频率。

 

1.       安装cpufrequtils

sudo apt-get install cpufrequtils

 

2.       Disable intel_pstate driver

in /etc/default/grub, change

GRUB_CMDLINE_LINUX_DEFAULT="quietsplash"

to

GRUB_CMDLINE_LINUX_DEFAULT="quietsplash intel_pstate=disable"

sudo update-grub

after reboot, then acpi-cpufreq driver willbe used.

 

3.       固定频率

这时sysfs下cpufreq相关的节点就是我们熟悉的文件了。

可使用powersave来使用固定的最低频率,

sudo cpufreq-set -g performance

也可使用performance governor来使用固定的最高频率

sudo cpufreq-set -g powersave

 

推荐使用userspace governor,然后设置我们期望的频率(这里假设我们要设置cpu频率为2GHz).

sudo cpufreq-set -g userspace

sudo cpufreq-set -f 2000000

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
local_irq_disable是一个宏定义,用于禁用中断。它的实现代码如下: ```c #define local_irq_disable() do { raw_local_irq_disable(); } while (0) #define raw_local_irq_disable() arch_local_irq_disable() #define arch_local_irq_disable() 与CPU架构有关 ``` 其中,raw_local_irq_disable()是一个函数,用于具体执行禁用中断的操作。而arch_local_irq_disable()是与CPU架构相关的函数,用于在特定的CPU架构上执行禁用中断的操作。具体的实现代码会根据不同的CPU架构而有所不同。 local_irq_disable的实现代码中,先调用raw_local_irq_disable()函数,然后再调用arch_local_irq_disable()函数。这样的设计是为了将具体的中断禁用操作与CPU架构相关的实现分离开来,提高代码的可移植性。 总结起来,local_irq_disable的实现代码是通过调用raw_local_irq_disable()和arch_local_irq_disable()函数来实现中断的禁用操作。具体的实现代码会根据不同的CPU架构而有所不同。\[1\]\[2\] #### 引用[.reference_title] - *1* [local_irq_enable 与 local_irq_disable 不支持嵌套](https://blog.csdn.net/u012385733/article/details/90483495)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Linux Kernel中local_irq_enable()和local_irq_disable()的实现](https://blog.csdn.net/weixin_42135087/article/details/123174867)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值