最近手头有一个项目需要获得不同任务CPU的占用情况,基于这个需求对CPU使用情况这一类的内容做了一些了解。
CPU使用率:一段时间内程序对CPU时间片的占用情况。所以CPU使用率只能是0-100%,不过在使用linux内核的系统中展示的CPU使用率可能因为多核累加而超过100%,这也是比较正常的情况。我们这里以单核CPU为例说明,在200ms的采样周期内,TaskA占用了50ms,TaskB占用了60ms,其余时间CPU处于空闲状态,那么这200ms的周期内CPU的使用率则为百分之55%,TaskA在该周期内对于CPU的使用率为25%,TaskB在该周期内对于CPU的使用率为30%。
CPU负载:一段时间内正在使用和等待使用CPU的平均任务数。所以CPU的负载可以是大于等于0的任何数。继续以单核CPU为例说明,CPU负载<1的时候新任务立即执行了,CPU有空闲时间;CPU负载=1的时候代表当前是满负荷运行,新任务可立即执行,CPU无空闲时间;CPU负载>1的时候代表当前不仅满负荷运行,后面还有排队等待运行的任务,后面进来的任务都会分配在任务队列中等待运行。