一、背景介绍
在Linux系统中,CPU频率和电压的调节可以通过多种方式实现,这些调节通常通过修改/sys/devices/system/cpu/cpu0/cpufreq/
目录下的文件来完成,可以设置scaling_governor
来选择不同的电源管理策略,如性能模式(performance)或省电模式(powersave),还可以通过调整scaling_setspeed
来直接设置CPU的频率。
二、常用工具及其安装配置
1.cpupower
cpupower
是由Intel开发的一个开源项目,主要用于基于Intel CPU的Linux系统,它提供了用户友好的接口,用于调整CPU的工作状态(P-state),以实现节能或提升性能的目的。
安装方法:
apt-get install linux-cpupower -y
使用方法:
cpupower -c all frequency-set -g performance # 设置所有CPU为性能模式 cpupower -c all frequency-set -g powersave # 设置所有CPU为节能模式 cpupower -c all frequency-info # 查看当前所有CPU的信息 watch -n 1 cpupower monitor # 实时监控CPU频率
2.throttled
throttled
是一个逆向工程的工具,可以调整部分Intel CPU机型的功耗及电压,适用于需要精细控制CPU电压的用户。
安装方法:
sudo apt install git build-essential python3-dev libdbus-glib-1-dev libgirepository1.0-dev libcairo2-dev python3-venv python3-wheel git clone https://github.com/erpalma/lenovo-throttling-fix.git sudo ./lenovo-throttling-fix/install.sh
配置文件修改:
sudo vim /etc/lenovo_fix.conf
示例配置:
[UNDERVOLT.BATTERY] CPU核心电压 core = -125 缓存电压 cache = -125
注意:所有电压值必须是负值,表示降压。
3. 自定义脚本
对于高级用户,可以通过编写自定义脚本来更灵活地控制CPU频率和电压,以下是一个示例脚本,用于读取和设置CPU信息。
获取CPU信息:
void get_cpu_info(cpufreq_info_struct *cpu_num, int cpu_num) { char file[54]; FILE *fp; sprintf(file, "/sys/devices/system/cpu/cpu%d/cpufreq/scaling_cur_freq", cpu_num); fp = fopen(file, "r"); if (fp == NULL) { printf("Error reading scaling_cur_freq file. "); exit(1); } else { fscanf(fp, "%i", &cpu_num->cur_freq); fclose(fp); } }
设置CPU信息:
void set_cpu_info(cpufreq_struct *cpu_info, int cpu_num) { char file[54]; char str[20]; FILE *fp; sprintf(file, "/sys/devices/system/cpu/cpu%d/cpufreq/scaling_governor", cpu_num); fp = fopen(file, "w"); if (fp == NULL) { printf("Error writing scaling_governor file. "); exit(1); } else { fprintf(fp, "%s", cpu_info->governor); fclose(fp); } sprintf(file, "scaling_setspeed"); fp = fopen(file, "w"); if (fp == NULL) { printf("Error writing scaling_setspeed file. "); exit(1); } else { fprintf(fp, "%s", cpu_info->set_speed); fclose(fp); } }
三、常见问题与解答
Q1:cpupower
工具无法识别我的CPU怎么办?
A: 确保你的系统是基于Intel CPU的,并且已经安装了最新的内核和cpupower
版本,如果问题依旧,可以尝试更新BIOS或者查阅硬件厂商的支持文档。
Q2: 如何验证throttled
是否生效?
A: 你可以使用i7z
工具来测试CPU的频率和电压变化,安装并运行i7z
后,观察不同电源状态下的CPU电压值是否按照配置文件中的设置进行了调整。
Q3: 自定义脚本中的错误处理机制是什么?
A: 在自定义脚本中,错误处理主要依赖于文件操作的返回值检查,如果文件打开失败,程序会打印错误信息并退出,这是一种基本的错误处理机制,确保在出现问题时能够及时发现并采取措施。
希望以上内容能够帮助你在Linux系统中有效地进行CPU电压调节,如果你有任何疑问或需要进一步的帮助,请随时提问。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1483959.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复