prom 统计容器cpu利用率_prom 统计容器cpu利用率


CPU 使用率

CPU Load

定义

程序对CPU时间片的占用情况

系统的Load是对于计算机系统执行计算任务数量的一种度量(注意关键词:amount,数量)。load average代表了一段时间内的系统平均load。

计算方式

采样两个足够短的时间t1、t2:

  • 将t1的所有cpu使用情况求和,得到s1
  • 将t2的所有cpu使用情况求和,得到s2
  • s2 - s1得到这个时间间隔内的所有时间totalCpuTime
  • 第一次的空闲idle1 - 第二次的空闲idle2,获取采样时间内的空闲时间
  • cpu使用率 = 100 * (totalCpuTime - idle) / totalCpuTime

一个空闲CPU的 load number = 0,每一个正在使用或者等待使用CPU的任务会使 load number + 1,每一个结束的任务会使 load number - 1。

系统会计算一段时间内的 exponentially damped/weighted moving average作为load average。数学公式先抛开,只看结论的话就是,load average代表着正在使用和等待使用CPU的任务数之和。

含义

代表了 cpu 的繁忙程度,是否一直在工作。

cpu这个值反应的是某个采样时间内的cpu使用情况,就是程序对CPU时间片的占用情况。

代表了 单位时间内,需要 cpu 去处理的任务个数。

系统load是处于运行状态或者不可中断状态的进程的平均数
(一个处于运行状态的进程表示正在使用cpu或者等待使用cpu, 一个不可中断状态的进程表示正在等待IO)

查看

top 命令

top 命令

各项值的具体含义

us: 用户空间占用 cpu 的百分比

sy:内核空间占用 cpu 百分比

ni:改变过优先级的进程占 cpu 百分比

id:空闲 cpu 的百分比

wa:磁盘 IO 等待占 cpu 百分比

hi:硬中断占 CPU 百分比

si:软中断占 CPU 百分比

st:虚拟 cpu 占 cpu 的百分比

CPU在过去1分钟,5分钟,15分钟的平均load。

如上图所示:

过去1分钟 load 为 2.76

过去5分钟 load 为 3.12

过去15分钟 load 为 3.51

多核的情况

top 界面按 1 ,可以看到每个 cpu 的情况。默认是 所有 cpu 加起来的一个值,因此可能超过 100%

load average是基于内核的数量决定的,可以简单的理解为每个内核load之和。按每个内核100%负载来算,4个内核,load average的值就是4。

正常情况下,cpu 使用率高,load 也会比较高。cpu 使用率低,load 也会比较低。

也有例外情况:

  1. load average低,利用率高:如果CPU执行的任务数很少,则load average会低,但是这些任务都是CPU密集型,那么利用率就会高。
  2. load average高,利用率低:如果CPU执行的任务数很多,则load average会高,但是在任务执行过程中CPU经常空闲(比如等待IO),那么利用率就会低。