Linux下实现CPU使用率正弦曲线
Linux下实现CPU使用率正弦曲线
编程之美第一道题目就是如何让CPU使用率曲线成为一条正弦曲线,本文在Linux下实现这个效果。
程序运行时间
一个进程的运行时间大致分为user time,kernel time和waiting time
三个时间加起来就是进程从开始到结束用的时间。
user time是进程在用户空间执行的时间
kernel time是进程在内核空间执行的时间
waiting time是进程等待IO或者其他事件所用的时间
例如
- int main()
- {
- int i;
- for(i = 0; i < 100000000; i ++) //用户空间执行
- getpid(); //系统调用,内核空间执行
- //scanf和printf是C标准库里的,还要调用Linux的系统调用read和write
- scanf("%d\n",&i);
- printf("%d\n",i);
- return 0;
- }
- while(1)
- {
- for(i = 0; i < 100000; i ++); //CPU忙,占用的时间是user time
- usleep(10000); //CPU闲,属于waiting time
- }
- int main()
- {
- int i;
- while(1)
- {
- for(i = 0; i < n; i++);
- usleep(m);
- }
- return 0;
- }
- .L2:
- movl $0, -8(%ebp)
- jmp .L3
- .L4:
- addl $1, -8(%ebp)
- .L3:
- cmpl $3999999, -8(%ebp)
- jle .L4
- movl $60000, (%esp)
- call usleep
- jmp .L2
|
评论暂时关闭