场景和目的

一台计算机会因为当前CPU的占率不同情况表现出不同的稳定性和实时性以及其他性能情况。需要编写一个程序将一个CPU或者多个CPU占用到指定值的占用率,比如50%。很多工具都是直接一颗CPU占满,意义不大。故此特地写一个代码。

源代码

#include <thread>
#include <unistd.h>
#include <signal.h>
#include <functional>#define SLEEP_TIME 8
#define SLEEP_RATE 2bool 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即可。

使用效果

linux下给CPU增加指定百分比的压力相关推荐

  1. linux 多核cpu监控,Linux 下多核CPU知识

    1. 在Linux下,如何确认是多核或多CPU: #cat /proc/cpuinfo 如果有多个类似以下的项目,则为多核或多CPU: processor  : 0 ...... processor  ...

  2. linux怎么增加cpu负载,Linux下的CPU平均负载

    linux下的CPU平均负载 一.注销登陆过的用户 先用w命令查看该用户tty号,然后用fuser -k tty号(或显示pts/*)就可以踢出了 先用w命令查看在线用户 然后 pkill -kill ...

  3. linux下的CPU、内存、IO、网络的压力测试

    linux下的CPU.内存.IO.网络的压力测试 要远程测试其实很简单了,把结果放到一个微服务里直接在web里查看就可以了,或者同步到其他服务器上 一.对CPU进行简单测试: 1.通过bc命令计算特别 ...

  4. linux下查看cpu负载及分析

    linux下查看cpu负载有两个命令可以看:uptime 和 top. 其中load average的三个值分别表示1分钟.5分钟.15分钟的CPU负载情况,是运维需要经常关注的 那么怎么确定这些值展 ...

  5. linux模拟cpu过载,linux下模拟CPU占用100%小程序

    linux下模拟CPU占用100%小程序 来源:https://blog.csdn.net/lin434406218/article/details/54694900 一.单个核100% 代码kill ...

  6. linux下限制CPU使用率的3种方法 (转)

    在租的云服务器上架了一个获取BTCC实时交易数据的服务器程序,因为用了一个while死循环处理数据信息,所以云服务器上的处理器占用率一直在90%多,这两天邮箱里一直收到服务器CPU占用率过高的邮件,在 ...

  7. linux在指定行添加内容,linux下利用shell在指定的行添加内容的方法

    linux下利用shell在指定的行添加内容的方法 在linux的一些配置中总会要进行某个文件中的某行的操作,进行增加,修改,删除等操作. 而这里主要是进行的是指定的行添加数据的操作: 脚本如下: s ...

  8. linux下限制CPU使用率的3种方法

    转载:http://blog.163.com/song_0803/blog/static/4609759720091014106684/ linux下限制CPU使用率的3种方法 1,apache本身的 ...

  9. Ubuntu16.04安装(个鬼鬼)linux下的cpu温度监控软件 lm-sensors,设置cpupower

    感觉好惨,毕设一波三折换了两回题目--进度条显示为∞.还能怎么办,继续做啊--现在是先做这个比较稳的简单的把实验先搞完.准备工作一安装im-sensors 安装linux下的cpu温度监控软件 lm- ...

最新文章

  1. 操作系统中的进程与线程
  2. (五)stm32工程代码HardFault异常查错调试方法
  3. thinkphp 学习 (资料收集)
  4. openssl创建CA并签发证书
  5. 驾乘华为云 成就 AI 开发者的不凡
  6. 模型保存的方法-----保存整个模型
  7. android studio 新建的项目无法绘制界面
  8. 抓包与发流软件与网络诊断
  9. Aerial为苹果而生,一款炫酷的Mac屏幕保护程序
  10. Winform SplitContainer控件可调整大小
  11. 01.第一个html文件.html
  12. 计算机网络技术班级16字口号,十六字班级加油口号
  13. Android:通过systrace进行性能分析及使用-详细
  14. 计算机组成原理_选择
  15. 计算机流水线重要知识,计算机组成与体系结构——流水线相关知识点(常考计算)...
  16. casewhen多条件查询_Mybatis(三)- MyBatis 多条件查询和模糊查询实例
  17. 学生信息数据库中的表
  18. FDC2214调试笔记(1)——为什么FDC2214输出的会是0x00000000或者0xffffffff?
  19. 群晖|半洗白后moments正常显示人像、主题、预览
  20. JavaMail API 详解

热门文章

  1. three.js 模型详解和外部模型详解
  2. Ubuntu下安装拳皇97
  3. I - Keylogger Gym - 101078I——模拟队列+栈
  4. 苹果11自带测试软件,9款旗舰系统对比 iPhone 11居然不是最好用的
  5. 服务器主板u3芯片配i3CP0,【铭瑄B75评测】寝室限网怎么办? 主板化身无线路由器-中关村在线...
  6. Be accepted for inclusion in the IEEE INFOCOM 2018 technical program
  7. 作为一个移动应用开发者,我们的创意应当避免走向低俗
  8. Java大佬是怎样炼成的3-4
  9. 2012-03-28-1
  10. java 自定义taglib_[JSP]自定义标签库taglib