曾经看过《编程之美》上提到说使 CPU的使用率固定在百分之多少。然后这次刚好要用到这个东西,下面是一个简单的实现。基于多线程:

Linux 版本:

 #include <iostream>
#include <pthread.h>
#include <time.h>
#include <math.h> using namespace std; typedef long long int int64;
const int NUM_THREADS = ; // CPU 核数
int eachTime = ;
int cpuinfo = ; // 占用率 int64 GetTickCount()
{
timespec now;
clock_gettime(CLOCK_MONOTONIC, &now);
int64 sec = now.tv_sec;
int64 nsec = now.tv_nsec;
return sec* + nsec/;
} void* CPUCost(void *args)
{
std::cout << "XXXX CPUCost" << std::endl;
int busyTime = eachTime * cpuinfo / ;
//std::cout << "XXXX cpuinfo = " << cpuinfo << std::endl;
int idleTime = eachTime - busyTime;
int64 startTime = ;
while (true)
{
startTime = GetTickCount();
while((GetTickCount() - startTime) <= busyTime)
{
;
} usleep();
}
} int main(int argc, char **argv)
{
std::cin >> cpuinfo;
pthread_t t[NUM_THREADS];
for(int i = ; i < NUM_THREADS; i++)
{
int ret = pthread_create(&t[i], NULL, CPUCost, NULL);
if(ret)
{
std::cout << "XXXX create err" << std::endl;
}
} pthread_exit(NULL); return ;
}

编译方式: g++ testCPU.cc -lpthread -lrt -o testCPU

注:因为只是用来测试,所以写的很粗糙。大致的原理是对的,细节部分请大家自行优化了。

Windows 版本:

 #include<iostream>
#include<Windows.h>
#include<cmath> using namespace std; int eachTime = ;
void CPU(int busy,int idle); int main()
{
int level;
cin >> level;
int busyTime = eachTime*level / ;
int idleTime = eachTime - busyTime;
CPU(busyTime,idleTime);
return ;
}
void CPU(int busy, int idle)
{
INT64 startTime = ;
while (true)
{
startTime = GetTickCount();
while ((GetTickCount()-startTime)<=busy)
{
;
}
Sleep(idle);
}
}

注: 没有实现多线程。

Linux 控制CPU使用率的更多相关文章

  1. Java获取Linux系统cpu使用率

    原文:http://www.open-open.com/code/view/1426152165201 import java.io.BufferedReader; import java.io.Fi ...

  2. 生成CPU使用率 sin 曲线 控制cpu使用率 编程之美

    入职Oracle 以后想着把之前写过的<编程之美>中控制CPU使用率曲线的程序再写一边, 可是总是由于入职须要学习的东西太多, 没有时间. 程序早就写好了. 最终有机会贴出来了.o(∩∩) ...

  3. 如何让Linux 机器CPU使用率变高

    如何让Linux 机器CPU使用率变高 一.实现 1.单行命令搞定 for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" ...

  4. Linux平台Cpu使用率的计算

    proc文件系统 /proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为内核与进程提供通信的接口.用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的 ...

  5. Linux服务器CPU使用率较低但负载较高

    CPU使用率较低但负载较高 问题描述 Linux 系统没有业务程序运行,通过 top 观察,类似如下图所示,CPU 很空闲,但是 load average 却非常高,如下图所示. 处理办法 load ...

  6. Linux:CPU使用率100%排查方法

    Linux作为一个多任务操作系统,将每个CPU的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉. CPU使用率 Linux作为一个多任务操作系统,将每个CPU ...

  7. Linux 下 CPU 使用率与机器负载的关系与区别

    原文链接:  http://blog.chinaunix.net/uid-28541347-id-4926054.html 当我们使用top命令查看系统的资源使用情况时会看到load average, ...

  8. 查看Linux服务器CPU使用率、内存使用率、磁盘空间占用率、负载情况

    [root@server script]# vi monitor.py #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige imp ...

  9. python控制cpu使用率

    以下亲测可行. 使用方法:命令行模式 runing.py -c 2 -t 0.01 -c 指定cpu核数:不指定-c参数默认为所有核数. -t 数值越大,cpu使用率越低. runing.py &qu ...

随机推荐

  1. MySQL数据库自动备份

    1.vi /home/wangcn/auto_log.sh#!/bin/bash #Shell Command For Backup MySQL Database Everyday Automatic ...

  2. C/C++.文件是否存在

    1. 2._access, _waccess.html(https://msdn.microsoft.com/en-us/library/1w06ktdy.aspx) int _access( con ...

  3. MVC路由 路由的三种扩展 替换MVC内置的Handler

    Global.asax 是 程序入口文件 路由配置   为什么localhost:8088/Home/Index/1 能返问到我们写的 会去掉前缀跟端口号  变成Home/Index/1 用这个跟路由 ...

  4. Token和SessionStorage(会话存储对象)

    sessionStorage数据只在当前标签页共享 存在本地   关闭浏览器后会清除数据(关闭标签页不会清楚) localStorage数据会存在浏览器中  浏览器关了数据也还在 只有清除缓存才会消失 ...

  5. 虹软2.0 免费人脸识别C#类库分享

    目前只封装了人脸检测部分的类库,供大家交流学习,肯定有问题,希望大家在阅读使用的时候及时反馈,谢谢!使用虹软技术开发完成 戳这里下载SDKgithub:https://github.com/dayAn ...

  6. sort-桶排序

    void list_insert(list<int> &t,int num) { auto iter=t.begin(); for(;iter!=t.end();++iter) { ...

  7. Redis与RabbitMQ作为消息队列的比较

    简要介绍 RabbitMQ RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面表现不俗.消息中间 ...

  8. vue-cli的webpack模板项目配置文件分析,配置信息详解

    比较不错的一篇详解文章: 地址:http://blog.csdn.net/hongchh/article/details/55113751#comments

  9. Python中read()、readline()和readlines()三者间的区别和用法

    2019-01-15 10:48:43 前言 众所周知在python中读取文件常用的三种方法:read(),readline(),readlines(),今天看项目是又忘记他们的区别了.以前看书的时候 ...

  10. LeetCode--443--压缩字符串(未看)

    问题描述: 给定一组字符,使用原地算法将其压缩. 压缩后的长度必须始终小于或等于原数组长度. 数组的每个元素应该是长度为1 的字符(不是 int 整数类型). 在完成原地修改输入数组后,返回数组的新长 ...