Linux下CPU的手动频率设定
2021/11/9 7:13:26
本文主要是介绍Linux下CPU的手动频率设定,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
众所周知的是,CPU的频率和它的实际性能特别是整数运算能力上有着相当强的关联性。但同时CPU的频率也跟它的功耗成正比,而功耗是有一个TDP的热功耗上限。根据当下多核CPU、多任务的趋势我们很容易就联想到在一个系统上如果存在多个任务,我们是否可以通过为不同任务设置不同的CPU频率的方法区分优先级?也就说CPU的频率是否可以作为一种可用资源来任意分配? 答案是肯定的! 不过由于CPU频率的设定是基于CPU不同的核心而言,在这个层级上来说并没有系统或者任务的概念,所以要想达到我们之前说的任务级别的频率分配需要通过任务-核心的绑定来实现。具体的手段其实非常丰富,从taskset命令,cgroup,vm,container技术都有CPU-set的设定,在这里我就不多赘述,主要还是讲如何为每个CPU核心设定不同的频率。 首先要讲的是几个CPU频率相关的技术。 · Speedstep: 似乎最早出现在“迅驰”笔记本CPU上,现在已经在所有Intel CPU上实现。它允许CPU在空载的情况下自动降低频率以节约宝贵的电力。 · Turbo:奔4时代的技术,turbo技术允许CPU在较高负载且热功耗允许的情况下主动升频 · PCPS: Xeon v4之后的技术,继承了前面两个技术的特点允许系统为每一个物理核心(core)设定不同的频率。 以上3种技术中最重要的PCPS需要Linux kernel 4.7以后的版本,比如我这里用的4.13.[root@localhost cpu]# cd /sys/devices/system/cpu/cpufreq [root@localhost cpufreq]# ls boost policy10 policy13 policy16 policy19 policy21 policy24 policy27 policy5 policy8 policy0 policy11 policy14 policy17 policy2 policy22 policy25 policy3 policy6 policy9 policy1 policy12 policy15 policy18 policy20 policy23 policy26 policy4 policy7 |
/sys/devices/system/cpu/cpufreq 是具体的CPU 频率管理入口,每一个policy*子文件夹都对应了系统的一个core。比如我们需要设定core0的频率,则直接进入policy0目录即可。
[root@localhost cpufreq]# cd policy0 [root@localhost policy0]# ls -l total 0 -r--r--r--. 1 root root 4096 Jan 17 02:49 affected_cpus -r--r--r--. 1 root root 4096 Jan 17 02:49 bios_limit -r--------. 1 root root 4096 Jan 17 02:49 cpuinfo_cur_freq -r--r--r--. 1 root root 4096 Jan 17 02:49 cpuinfo_max_freq -r--r--r--. 1 root root 4096 Jan 17 02:49 cpuinfo_min_freq -r--r--r--. 1 root root 4096 Jan 17 02:49 cpuinfo_transition_latency -r--r--r--. 1 root root 4096 Jan 17 02:49 freqdomain_cpus -r--r--r--. 1 root root 4096 Jan 17 02:49 related_cpus -r--r--r--. 1 root root 4096 Jan 17 02:49 scaling_available_frequencies -r--r--r--. 1 root root 4096 Jan 17 02:49 scaling_available_governors -r--r--r--. 1 root root 4096 Jan 17 02:49 scaling_cur_freq -r--r--r--. 1 root root 4096 Jan 17 02:49 scaling_driver -rw-r--r--. 1 root root 4096 Jan 17 03:00 scaling_governor -rw-r--r--. 1 root root 4096 Jan 17 02:49 scaling_max_freq -rw-r--r--. 1 root root 4096 Jan 17 02:49 scaling_min_freq -rw-r--r--. 1 root root 4096 Jan 17 02:49 scaling_setspeed |
路径下有多个文件,首先需要确定该CPU是否支持PCPS
[root@localhost policy0]# cat scaling_available_governors conservative userspace powersave ondemand performance |
scaling_available_governors保存了系统支持的电源策略,如果你曾经在桌面版本的Linux配置过电源的话应该很熟悉这几个模式。不过这里除了传统的conservative (保守),powersave(节能) ondemand(请求) performance(性能)4种模式之外,还特别的多了一个userspace模式,这说明系统可以支持PCPS. 我们看一下这颗CPU究竟支持哪些频率设定,scaling_available_frequencies文件保存了对应的内容。
[root@localhost policy0]# cat scaling_available_frequencies 2501000 2500000 2400000 2300000 2200000 2100000 2000000 1900000 1700000 1600000 1500000 1400000 1300000 1200000 1100000 1000000 |
[root@localhost policy0]# cat scaling_cur_freq 1000000 |
看了一圈了,开始设定CPU0的频率,其实也很容易的。
[root@localhost policy0]# echo userspace > scaling_governor [root@localhost policy0]# echo 200000 > scaling_setspeed [root@localhost policy0]# cat scaling_cur_freq 2000000 |
这篇关于Linux下CPU的手动频率设定的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南