让CPU使用率为正弦曲线
来源:互联网 发布:c语言定义数组最大长度 编辑:程序博客网 时间:2024/05/16 05:17
- //伪代码
- int main()
- {
- int start_time, current_time;
- while(1)
- {
- start_time = GetCurrentTime();
- current_time = start_time;
- while(current_time - start_time < 60)
- current_time = GetCurrentTime();
- sleep(60);
- }
- }
关键是如何获取当前时间。Windows下可以使用GetTickCount(),Linux下可以使用gettimeofday()。
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- struct timeval tv;
- longlong start_time,end_time;
- while(1)
- {
- gettimeofday(&tv,NULL);
- start_time = tv.tv_sec*1000000 + tv.tv_usec;
- end_time = start_time;
- while((end_time - start_time) < 60000)
- {
- gettimeofday(&tv,NULL);
- end_time = tv.tv_sec*1000000 + tv.tv_usec;
- }
- usleep(60000);
- }
- return 0;
- }
现在我们用这种方法实现CPU使用率的正弦曲线。
首先要确定这个曲线的函数。这个函数的最大值是1,最小值是0,因此肯定是0.5(sin(tx) + 1)。
怎么确定t呢?
我们可以认为,曲线的更新周期应该大于100ms,我们以100ms为单位,把100ms的平均使用率作为这100ms末的使用率。
假如我们希望10s能出一个完整的波形,100ms计算一次,那就需要计算100次。这样我们要准备两个大小为100的数组,分别保存循环时间和睡眠时间。
而且满足,第一个数组循环时间为0,睡眠时间为100,第50个数组循环时间为100,睡眠时间为0,第100个数组循环时间为0,睡眠时间为100.
这样我们就确定了t了。100个数组下标为横坐标,那么周期是100,t=2x3.14/100 = 0.0628.
代码如下:
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- int main()
- {
- struct timeval tv;
- longlong start_time,end_time;
- longlong busy_time[100];
- longlong idle_time[100];
- int i;
- for(i = 0; i < 100; i++)
- {
- busy_time[i] = 100000 * 0.5 * (sin(i*0.0628) + 1);
- idle_time[i] = 100000 - busy_time[i];
- }
- i = 0;
- while(1)
- {
- gettimeofday(&tv,NULL);
- start_time = tv.tv_sec*1000000 + tv.tv_usec;
- end_time = start_time;
- while((end_time - start_time) < busy_time[i])
- {
- gettimeofday(&tv,NULL);
- end_time = tv.tv_sec*1000000 + tv.tv_usec;
- }
- usleep(idle_time[i]);
- i = (i+1)%100;
- }
- return 0;
- }
效果还不错:
上面的程序都是在单CPU下完成的。如果在多CPU下,可以指定此进程只运行在某个CPU上,不再赘述了。
0 0
- 让CPU使用率为正弦曲线
- [C++]让CPU使用率曲线呈现为正弦曲线(一)
- 控制CPU使用率为正弦曲线
- CPU使用率呈现正弦曲线
- 让CPU画正弦曲线
- 让CPU使用为正弦曲线-编程之美1.1实现
- 让CPU占用率画出正弦曲线
- 让CPU占用率画出正弦曲线
- 编程之美--让CPU显示正弦曲线
- 控制CPU占用率曲线为正弦曲线
- CPU正弦曲线
- 多cpu(多核)下让cpu占用率成正弦曲线
- 编写程序 控制cpu占用率-4 绘制CPU使用率的正弦曲线
- 写程序+控制cpu占用率-4+绘制CPU使用率的正弦曲线2+C#+实现
- 编程让任务管理器中CPU占有率呈现正弦曲线
- Algorithm学习笔记 --- 编写程序怎么让cpu的使用率为50%(编程之美)
- 编写程序使windows任务管理器的CPU使用率成正弦曲线
- 写程序 控制cpu占用率-4 绘制CPU使用率的正弦曲线2 通过C#指定线程运行的 CPU
- mongodb与spring mvc结合
- 使用filter,进行用户登陆验证。
- 获取properties属性
- Linux下C++访问MySQL数据库
- eclipse修改背影颜色
- 让CPU使用率为正弦曲线
- 谁动了投资者的奶酪?
- 多线程的几种实现方法
- SecurityContextHolder.getContext().getAuthentication()去值为null
- Xcode和模拟器的清除缓存
- JStorm之Supervisor启动流程
- java将JSON字符串转换为实体类对象,基于net.sf.json实现
- VMware安装xp虚拟机
- oracle数据库导入导出命令