📅  最后修改于: 2023-12-03 15:26:21.116000             🧑  作者: Mango
no_turbo是一个编写C语言程序的工具,它可以让你更加方便地控制程序运行时的CPU频率。一般来说,CPU会根据需要自行调整频率以保证最佳性能,但是在一些情况下,如温度超高、风扇坏掉等,CPU需要被限制低频率以避免过热或崩溃。no_turbo可以让你在这类情况下手动控制CPU频率,增强程序的稳定性。
使用no_turbo很简单,只需在C程序中添加以下代码段:
#define _GNU_SOURCE
#include <sched.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/time.h>
#include <sys/resource.h>
void set_no_turbo(void){
pid_t pid = getpid();
cpu_set_t cpuset;
CPU_ZERO(&cpuset);
CPU_SET(0, &cpuset); //限制只在第0个CPU上运行
if (sched_setaffinity(pid, sizeof(cpuset), &cpuset) < 0) {
perror("sched_setaffinity");
}
struct rlimit rlim;
if (getrlimit(RLIMIT_CPU, &rlim) != 0) {
perror("getrlimit");
} else {
rlim.rlim_cur = rlim.rlim_max / 2; //将CPU使用时间限制在其最大时间的一半
if (setrlimit(RLIMIT_CPU, &rlim) != 0) {
perror("setrlimit");
}
}
}
这段代码使用了sched_setaffinity和setrlimit两个系统调用,分别用于限制只在第0个CPU上运行,并将CPU使用时间限制在其最大时间的一半。使用之后,程序运行时将不会自动调整CPU频率,而是一直运行在低频模式下,以保证程序的稳定性。
由于no_turbo直接影响CPU频率,使用前务必确认CPU温度、电流等参数都在正常范围内,否则可能会导致CPU过热或崩溃。此外,当CPU负载较高时,no_turbo也可能导致程序的性能下降,因此不建议在性能要求较高的情况下使用。
no_turbo是一个非常实用的工具,可以保证程序在一些特殊情况下的稳定性。使用前要仔细考虑可能存在的问题,以避免不必要的损失。