linux下给CPU增加指定百分比的压力
·
场景和目的
一台计算机会因为当前CPU的占率不同情况表现出不同的稳定性和实时性以及其他性能情况。需要编写一个程序将一个CPU或者多个CPU占用到指定值的占用率,比如50%。很多工具都是直接一颗CPU占满,意义不大。故此特地写一个代码。
源代码
#include <thread>
#include <unistd.h>
#include <signal.h>
#include <functional>
#define SLEEP_TIME 8
#define SLEEP_RATE 2
bool b_exit = false;
static void my_handler(int sig)
{
b_exit = true;
}
void cpu_run(int p_cpuid)
{
cpu_set_t set;
CPU_ZERO(&set);
CPU_SET(p_cpuid, &set);
pthread_setaffinity_np(pthread_self(), sizeof(set), &set);
int64_t t = 0;
while (!b_exit)
{
for (int i = 0; i < 1024; i++)
{
for (int j = 0; j < 1024 * 1024; j++)
{
t = 123456789;
t *= 123456789;
}
if (i % SLEEP_RATE == 0)
{
std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_TIME));
}
}
}
if (b_exit) exit(0);
}
int main()
{
signal(SIGINT, my_handler);
int cpu_num = sysconf(_SC_NPROCESSORS_CONF);
for (int i = 0; i < cpu_num; i++)
{
std::thread *p = new std::thread(std::bind(cpu_run, i));
}
std::this_thread::sleep_for(std::chrono::hours(24));
return 0;
}
使用方式
g++ main.cpp -lpthread -std=c++17
./a.out
打开另个窗口使用HTOP观察所有CPU占比。由于各种各样的CPU性能差异,可以通过调节SLEEP_TIME和SLEEP_RATE的值来达到不同的占比情况。(注意:此处默认会将所有CPU达到同一个使用率,如果不想耗费所有CPU简单修改一下代码即可)。想要结束在运行程序窗口Ctrl+C即可。
使用效果

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)