【思考】什么是CPU利用率?

在Windows、Linux等操作系统中都可以直观的看到CPU利用率这个系统指标,那么这个指标的本质是什么呢?又是如何计算出来的?

如果要算一台发动机的利用率,可能的算法是“当前转速/极限转速”。类比于CPU的话,那该是“当前处理二进制指令的速度/处理二进制指令的极限速度”。

上面的人算法听起来还挺靠谱的,也完全可以和我们的日常使用体验对应上。不过一细想,“当前速度”可以统计出来,但是“极限速度”并不好预估。最明显的一个问题是:CPU处理不同指令的时间是不同的,也就无法预估一个精准的“极限速度”。

对于实际的CPU调度算法,一个进程会被分配一定的时间片去利用CPU。同样CPU利用率的计算方法也是“实际使用CPU的时间/总时间”。

题外话:一个线程在某一时刻最多只能被一个CPU核心所负载执行,而如果想占满该核心,只需要保证该线程在无阻塞的持续运行(并且获取时间分片不受限),而无需保证执行的是什么复杂的算法!这里是很反直觉的——简单的while(true)死循环和一个复杂的计算算法在一个时刻中对CPU的压力是相同。

所以理论上我们只要创建“CPU核心数”个线程进行无阻塞的死循环,就能占满CPU。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值