cpu利用率和平均负载学习

转自:https://blog.csdn.net/gu_study/article/details/81942939

https://blog.csdn.net/Poo_Chai/article/details/80913671

1.CPU利用率

Utilization= work_time/total_time;
total_time=work_time+idle_ime;

指CPU工作时间占总时间的比重,总时间由一段连续时间内的CPU工作时间长度和CPU空闲时间长度组成。

单处理器中,线程1,先工作10ms,线程2再工作30ms,之后CPU空闲60ms。则此100ms时间段内,CPU的利用率就是40%。

CPU利用率越低越好:

CPU在开同样程序的情况下,利用率越低说明CPU性能越好,处理能力越强,一般CPU利用率高的时候,系统将变得非常卡,甚至死机。

2.CPU平均负载(load average)

指某段时间内占用cpu时间的进程和等待cpu时间的进程数,这里等待cpu时间的进程是指等待被唤醒的进程,不包括处于wait状态进程(wait是主动进入等待状态)。

在Linux中,进程分为三种状态,一种是阻塞的进程blocked process(等待I/O设备的数据或者系统调),一种是可运行的进程runnable process,另外就是正在运行的进程running process。【怪怪的,那意思是wait状态也是阻塞的一种?】

进程可运行状态时,它处在一个运行队列run queue中,与其他可运行进程争夺CPU时间。 系统的load是指正在运行和准备好运行的进程的总数。比如现在系统有2个正在运行的进程,3个可运行进程,那么系统当前的load就是5。

2.1 多核CPU负载

在系统负荷方面,多核CPU与多CPU效果类似,所以考虑系统负荷的时候,必须考虑这台电脑有几个CPU、每个CPU有几个核心。然后,把系统负荷除以总的核心数,只要每个核心的负荷不超过1.0(即100%),就表明电脑正常运行。查看CPU逻辑核数命令:

cat /proc/cpuinfo |grep "processor"|wc -l

一般当系统负荷持续大于0.7,需要调查原因。例子:

#grep 'model name' /proc/cpuinfo | wc -l
24

#echo "0.7*24" |bc
16.8

多核CPU在计算平均负载时会除以核数。

 3.top命令中cpu占用率是如何计算的?

 转自:https://www.cnblogs.com/gatsby123/p/11127158.html,这篇博客非常牛,讲的很清楚。

%CPU  --  CPU Usage
           The task's share of the elapsed CPU time since the last screen update, expressed as a percentage of total CPU time.

某个进程的CPU使用率就是这个进程在一段时间内占用的CPU时间占总的CPU时间的百分比。某个开启多线程的进程1s内占用了CPU0 0.6s, CPU1 0.9s, 那么它的占用率是150%。(总的cpu占用率是在每个cpu占用率之和:60%+90%=150%)

某进程cpu使用率 = 该进程cpu时间 / 总cpu时间。

文件/proc/pid/stat中可以得出进程自启动以来占用的cpu时间。

 

posted @ 2020-10-12 20:55  lypbendlf  阅读(321)  评论(0编辑  收藏  举报