CPU占用率是什么?
这是昨晚上在朋友圈发的一个讨论
回答的问题很多
因为这个问题,我晚上也没早睡,就想把这个讲清楚
说这个问题之前我们先了解下时间片调度算法,因为用这个来讲比较清楚。
CPU可以执行任务,CPU给哪个进程执行,哪个进程就可以占用CPU去做它想做的事情,如果进程的优先级比较低,调度器每次调度的时候,就容易被高优先级的进程插队,这个进程实际上占有CPU的时间就会比较短。
什么是CPU是利用率呢?
先说下,这个指的是有操作系统的情况下,有多任务系统,那系统有一个调度室,调度室分配给进程的使用CPU时间T1,进程在被调度时,进程实际占用CPU时间T2,T2/T1就是这个进程的CPU占用率了。
如果我们这样写代码
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("%d:Cpu start...\n",getpid());
while(1)
{
sleep(1);
}
return 0;
}
这时候的CPU占用率是
如果我们代码修改成这样
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i=0;
printf("%d:Cpu start...\n",getpid());
while(1)
{
for(i=0;i<100000000;i++)
{}
sleep(1);
}
return 0;
}
CPU 占用率如下
如果我把代码修改成这样
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i=0;
printf("%d:Cpu start...\n",getpid());
while(1)
{
for(i=0;i<100000000;i++)
{}
//sleep(1);
}
return 0;
}
CPU占用率如下:
关于这个问题,还有很多回复
至于能不能出现超过100%的CPU占用率,在多核的情况下肯定是可以的,至于单核是不会出现这个情况的。
欢迎一起交流
评论