系列文章:一、什么是 load averagetop 命令中 load average 显示的是最近1分钟、5分钟和15分钟的系统平均负载。 系统平均负载被定义为在特定时间间隔内运行队列中(在 CPU 上运行或者等待运行多少进程)的平均进程数。 在 Linux 中,进程分为三种状态,一种是阻塞的进程 blocked process,一种是可运行的进程 runnable process,另外就是正在运行的进程 running process。 进程可运行状态时,它处在一个运行队列 run queue 中,与其他可运行进程争夺 CPU 时间。系统的 load 是指正在运行和准备好运行的进程的总数。比如现在系统有2个正在运行的进程,3个可运行进程,那么系统的 load 就是5。load average 就是一定时间内的 load 数量。 CPU 使用率高并不总是意味着 CPU 工作繁忙,它有可能是正在等待其他子系统。在进行性能分析时,将所有子系统当做一个整体来看是非常重要的,因为在子系统中可能会出现瀑布效应。衡量 CPU 系统负载的指标是 load,load 就是对计算机系统能够承担的多少负载的度量,简单的说是进程队列的长度。 上图1个电话亭可以理解为一个 CPU 核心。从上图的过程中可以看到 load 的概念,而使用率始终100%。 理想的 CPU load 是多少这个跟你的 CPU 核心数量有关,理想情况下一个核心被一个进程占用,如果你是4个核心,那么跑4个进程,此时 Load 是4但是也不高,如果你只有2个核心,依然跑4个进程,这就意味着有一半进程在某一个时刻抢不到 CPU,这时候 Load 还是4,如果是短期状态还无所谓,如果长期是这个状态你就要注意了。 一般来说只要每个 CPU 的当前活动进程数不大于3那么系统的性能就是良好的,如果每个 CPU 的任务数大于5,那么就表示这台机器的性能有严重问题。 二、什么是 CPU 使用率使用率这个要结合时间片来说,从上图的演变可以看出影响使用率高低的因素不是 load 的多少,而是在分配给某个进程时间片时,这个进程是否使用了 CPU 的计算能力。 在第四分钟时候,分配给蓝人1分钟,但是它什么也没干,这1分钟内电话是闲置的没有被使用,所以这一分钟内的电话使用率就是0%。但是 load 是3。 当然这里就存在一个统计周期的问题,上图我们的统计周期是1分钟,而分配给每个人的最小时间单位也是1分钟。从计算机角度来说,单核心 CPU,假设1秒钟分为100个时间片,如果2个任务,第一个任务用了5个时间片执行完成,另外一个任务用了15个时间片执行完成,所以如果统计周期是1秒,那么这1秒内的 CPU 使用率就是20%。CPU 利用率高不一定负载高,CPU 利用率是一段时间内 CPU 被占用的情况。 CPU 利用率低负载高:说明等待执行的任务很多,但是通常任务多 CPU 使用率也会比较高,如果低就说明 CPU 根本没工作,那些很多的任务处于等待状态,可能进程僵死了。 CPU 利用率高负载低:说明任务少,但是任务执行时间长,有可能是程序本身有问题,如果没有问题那么计算完成后则利用率会下降。 三、什么是 load 使用率公示: load 利用率定义为每个 CPU 核心上的 load。 Referencehttps://www.cnblogs.com/lddbupt/p/5779655.html 转载请并标注: “本文转载自 linkedkeeper.com (文/张松然)” ©著作权归作者所有 |