当前位置:科技动态 > Linux CPU负载和CPU使用率详解

Linux CPU负载和CPU使用率详解

  • 发布:2023-10-01 18:35

CPU负载和CPU使用率

这两者都能在一定程度上反映一台机器的繁忙程度。

cpu使用率反映了CPU当前的繁忙程度。之所以在高低之间波动,是因为占用cpu处理时间的进程可能处于io等待状态但尚未释放进入wait。

平均负载(loadaverage)是指一定时间内占用CPU时间的进程数和等待CPU时间的进程数。这里的等待CPU时间的进程是指等待被唤醒的进程,不包括处于等待状态的进程。

从上面的分析可以看出,一台机器很可能处于CPU占用率低、负载高的情况。因此,机器的繁忙程度应将两者结合起来。从实际使用情况来看,我在一台双核志强2.8GHZ、2G内存的机器上,平均负载达到50左右时,CPU使用率接近100%(应用程序有大量IO操作)。这样的话,应用还是比较流畅的,实际访问延迟也不是很高。因此,当CPU还空闲时,如何提高IO响应是降低负载的关键。很多人认为负载达到几十时机器就会很忙。我想如果此时CPU使用率比较低的话,高负载可能就不太能说明问题了。一旦CPU处理的进程处理完毕,那些等待的进程也能立即得到响应。这种情况下应该优化io读写速度。如果CPU使用率持续在90%以上,即使平均负载只有个位数(比如某个进程一直在计算),实际上机器已经很忙了~

其实上一篇文章中也写过CPU占用率低,负载高。原因是CPU占用率低,但负载却很高。负载高的原因可能是IO

CPU 负载的类比

要判断系统负载是否过重,必须了解平均负载的真正含义。下面,我根据《理解Linux CPU负载》这篇文章,尝试用最通俗的语言来解释这个问题。
首先,假设最简单的情况,你的计算机只有一个CPU,所有的运算都必须由这个CPU来完成。
所以,我们不妨把这个CPU想象成一座桥梁。桥上只有一条车道,所有车辆都必须通过这条车道。 (显然,这座桥是单向的。)
系统负载为0,表示桥上没有一辆车。

系统负载为0.5,即半桥有车。

系统负载为1.0,也就是说桥的所有路段都有车,也就是说桥是“满的”。然而,必须指出的是,到目前为止,这座桥仍然开放通车。

系统负载为1.7,表示车辆过多,桥梁已经被占用(100%),后面等待上桥的车辆是桥上车辆的70%。以此类推,系统负载为2.0意味着等待上桥的车辆数量与桥面的车辆数量一样多;系统负载为 3.0 意味着等待上桥的车辆数量是桥面上车辆数量的两倍。总之,当系统负载大于1时,后面的车辆必须等待;系统负载越大,他们必须等待过桥的时间就越长。

CPU的系统负载基本上相当于上面的类比。网桥的通行能力就是CPU的最大工作负载;桥上的车辆是等待CPU处理的进程。
如果CPU每分钟最多处理100个进程,那么系统负载0.2意味着CPU这一分钟只处理20个进程;系统负载1.0表示CPU这一分钟正好处理100个进程;系统负载为 1.7 ,意味着除了 CPU 正在处理的 100 个进程外,还有 70 个进程在排队等待 CPU 处理。
为了让计算机顺利运行,系统负载最好不要超过1.0,这样没有进程需要等待,所有进程都能第一时间处理完毕。显然,1.0是一个临界值。如果超过该值,则系统未处于最佳状态,您需要进行干预。

CPU 负载 - 多处理器

以上,我们假设您的计算机只有 1 个 CPU。如果你的电脑配备 2 个 CPU 会发生什么?
2个CPU意味着计算机的处理能力增加了一倍,可以同时处理的进程数量也增加了一倍。
仍然用桥来比喻,两个CPU意味着桥有两条车道,通行能力增加了一倍。

所以,2个CPU表示系统负载可以达到2.0,此时每个CPU达到100%工作负载。一般来说,对于一台有n个CPU的计算机来说,最大可接受的系统负载是n.0。

CPU 负载 - 多核处理器

芯片制造商往往在一个CPU内部包含多个CPU核心,称为多核CPU。
在系统负载方面,多核CPU与多CPU的效果类似,所以在考虑系统负载时,必须考虑这台计算机有多少个CPU,每个CPU有多少个核心。然后,将系统负载除以核心总数。只要每个核心的负载不超过1.0,计算机就可以正常运行。
如何知道一台电脑有多少个CPU核心?
“cat /proc/cpuinfo”命令可以查看CPU信息。 “grep -c '型号名称' /proc/cpuinfo”命令直接返回CPU的核心总数。

系统负载的经验法则

1.0 是系统负载的理想值吗?

不一定。系统管理员通常会留有一点余地。当该值达到0.7时,应引起注意。经验法则是这样的:

  • 当系统负载持续大于0.7时,必须开始排查问题出在哪里,防止情况变得更糟。
  • 当系统负载持续大于1.0时,必须想办法降低这个值。
  • 当系统负载达到5.0时,说明你的系统出现了严重问题,长时间没有响应,或者接近崩溃。您不应该让系统达到这个值。

我的机器有24个核心。那么,什么是合适的负载呢?

[support@www.sychzs.cn /home/ahao.mah/ALIOS_QA]#grep ‘型号名称’ /proc/cpuinfo | WC -l24

答案是:

[support@www.sychzs.cn /home/ahao.mah/ALIOS_QA]#echo “0.7*24” |bc16.8

最佳观察时间

最后一个问题,“平均负载”总共返回三个平均值——1分钟系统负载、5分钟系统负载、15分钟系统负载——应该参考哪个值?

如果系统负载只有1分钟大于1.0,其他两个时间段都小于1.0,这表明这只是暂时现象,问题并不严重。

如果15分钟内(调整CPU核心数后)系统平均负载大于1.0,则表明问题仍然存在,并非暂时现象。因此,您应该主要观察“15分钟系统负载”作为计算机正常运行的指标。

相关文章

最新资讯