单核处理器是什么意思 单核双核四核的区别

序作为一名性能测试工程师,每当我们发现电脑变慢的时候,我们通常的标准姿势就是执行uptime或者top命令来了解系统的负载情况。比如如下图,我在命令行输入uptime命令,系统会返回一行信息。appletekimbp:~ apple$ uptime20:44 up 21 days, 6:41, 2 users, load averages: 2....

作为一名性能测试工程师,每当我们发现电脑变慢的时候,我们通常的标准姿势就是执行uptime或者top命令来了解系统的负载情况。

比如如下图,我在命令行输入uptime命令,系统会返回一行信息。

appletekimbp:~ apple$ uptime20:44 up 21 days, 6:41, 2 users, load averages: 2.85 2.33 2.91

但我想问的是,你知道上面每个输出列的意思吗?

20:44 # 当前时间up 21 days, 6:41 # 系统运行时间2 users # 正在登录用户数# 系统的平均负载,分别是1分钟、5分钟、15分钟内系统的平均负载load averages: 2.85 2.33 2.91

这一行的后半部分显示“平均负载”,它的意思是”系统的平均负载”,里面有三个数字,从中可以判断系统负载是大是小。

平均系统负载是多少?

我估计有同学会说,平均负载不就是单位时间的CPU利用率吗?上面的2.85表示CPU利用率为285%。其实不是这样的。

在Linux系统中,CPU负载值是指正在运行和处于可运行状态(读取进程执行线程对应的一组机器语言的程序指令)的作业的平均数量,或者非常重要的,睡眠但不中断(非交错睡眠状态)。也就是说,为了计算CPU负载的值,只考虑正在运行或等待CPU时间分配的进程。无论正常的休眠进程(休眠状态),僵尸或停止的进程。

简单来说,平均负载是指单位时间内可运行状态不可中断状态的平均进程数,即平均活动进程数,与CPU利用率没有直接关系。

状态码R为正在运行或可运行(在运行队列中)D为持续休眠(通常为IO) S为可中断休眠(等待事件完成)Z为无效/僵尸,被其父T终止但未停止,作业控制停止信号或因被跟踪[…]

首先这里说明一下可以运行,不能中断

runnable进程指的是正在使用CPU或者正在等待CPU的进程,也就是我们经常用ps命令看到的处于R状态(Running或者Runnable)的进程。

不可中断进程是指处于内核状态的关键进程,这些进程不能被中断。例如,等待硬件设备的I/O响应是很常见的。也就是我们在Ps命令中看到的d状态(不间断睡眠,也叫磁盘睡眠)的过程。比如一个进程在向磁盘读写数据的时候,为了保证数据的一致性,不能被其他进程打断或者中断,直到磁盘回复,此时的进程处于不间断状态。如果此时中断进程,就容易出现磁盘数据和进程数据不一致的问题。因此,不间断状态实际上是系统对进程和硬件设备的一种保护机制。所以我们可以简单的理解为,平均负载其实就是平均的活动进程数。平均活动进程数直观地理解为单位时间内的活动进程数。由于活动进程的平均数量是,理想情况下,每个CPU上只运行一个进程,因此每个CPU都得到充分利用。

以下是单核处理器计算机中不同负载值的含义:

0.00:没有任何作业正在运行或等待 CPU 执行,即 CPU 完全空闲。因此,如果正在运行的程序(进程)需要执行任务,它会向 CPU 请求操作系统,并立即为该进程分配 CPU 时间,因为没有其他进程在竞争它。0.50:没有任何作业在等待,但 CPU 正在处理以前的作业,并且它正在以 50% 的容量进行处理。在这种情况下,操作系统还可以立即将 CPU 时间分配给其他进程,而无需将其置于保持状态。1.00:队列中没有作业,但 CPU 正在以 100% 的容量处理先前的作业,因此如果新进程请求 CPU 时间,则必须将其保留到另一个作业完成或当前 CPU 插槽时间(例如,CPU tick)到期,操作系统决定哪一个是下一个给定的进程优先级。1.50:CPU 工作在其容量的 100%,15个工作中有5个请求CPU时间,即 33.33%,必须排队等待其他人耗尽他们分配的时间。因此,一旦超过1.0 的阈值,就可以说系统过载,因为它不能立即处理所请求的 100% 的工作。

那么很明显,”平均负载”的值越低,如0.2或0.3,服务器的工作负载越小,系统负载越低。

类比

知道的太多了怎么办?没事的。我们来看一个简单的类比。

我们假设一个最简单的情况。你的电脑只有一个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在这1分钟里只处理20个进程;1.0的系统负载意味着CPU在这1分钟内正好处理100个进程;1.7的系统负载意味着除了CPU正在处理的100个进程之外,还有70个进程在排队等待CPU处理。

为了让电脑流畅运行,系统负载不能超过1.0,这样就没有进程需要等待,所有进程都可以第一时间处理。显然,1.0是一个关键值。超过这个值,系统就不在最佳状态,你就要干预了。

多处理器和多核系统

在具有多个处理器或内核(多个逻辑CPU)的系统中,CPU负载值的含义取决于系统中处理器的数量。所以4处理器的电脑,在达到4.00的负载之前,不会100%使用。因此,在解释top、htop或uptime等命令提供的3个负载值时,首先要做的是将它们分开。系统中存在的逻辑CPU的数量,并从中得出结论。

比如你的电脑有2个CPU,会怎么样?两个CPU意味着计算机的处理能力增加了一倍,可以同时处理的进程数量也增加了一倍。或者用桥来比喻,两个CPU意味着桥有两个车道,通行能力翻倍。

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

芯片厂商往往在一个CPU中有多个CPU核,称为多核CPU。

在系统负载方面,多核CPU和多CPU差不多,所以在考虑系统负载的时候,一定要考虑这台电脑有多少个CPU,每个CPU有多少个核心。然后,将系统负载除以核心总数。只要每个核心的负载不超过1.0,就说明电脑运行正常。怎么知道一台电脑有多少个CPU核?

延伸阅读:性能基础的CPU、物理核、逻辑核的概念和关系

CPU利用率

如果我们观察在给定的时间间隔内经过CPU的不同进程,那么当CPU执行每个进程对应的指令时,利用率百分比将代表相对于该时间间隔的时间部分。但这种计算只运行进程,而不运行那些等待的进程,无论它们是在队列中(可运行状态)还是处于睡眠状态但不中断(例如,等待输入/输出操作结束)都被考虑在内。所以这个指标可以让我们知道哪些进程对CPU的挤压最大,但是如果系统状态过载或者利用不足,就无法给出真实的系统状态图。

在现实中,我们经常混淆平均负载和CPU利用率。由上可知,平均负载是指单位时间内处于可运行状态和不可中断状态的进程数量。所以它不仅包括正在使用CPU的进程,还包括正在等待CPU和I/O的进程,CPU利用率,我们从上面的解释中知道,是单位时间内的繁忙程度,不一定对应平均负载。例如:

CPU 密集型进程,使用大量 CPU 会导致平均负载升高,这时候两者是一致的。I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高。大量等待 CPU 的进程调度也会导致平均负载很高,此时的 CPU 使用率也会比较高。

注意/输出(I/O)操作

本文反复强调不间断睡眠状态很重要(第一图D),因为有时候你可以在电脑里找到非常高的负载值,但是不同运行进程的利用率比较低。如果不考虑这种状态,你会觉得情况莫名其妙,不知道怎么处理。当一个进程在等待一个资源的释放,并且它的执行不能被中断时,例如,当它在等待一个不中断的I/O操作时,这个进程在这种状态下完成(并不是所有的都是不中断的)。通常,这是由于磁盘故障、网络文件系统(如NFS故障)或大量使用非常慢的设备(如USB 1.0 pendrive)造成的。

在这种情况下,我们将不得不使用替代工具,如iostat或iotop,它们将指示哪些进程正在执行更多的I/O操作,以便我们可以终止这些进程或为它们分配更低的优先级(nice命令),从而将更多的CPU时间分配给其他更关键的进程。

一些技巧

有时候系统过载超过1.0的负载值并不是问题,因为即使有一些延迟,CPU也会处理队列中的作业,负载会再次降低到1.0以下的值。但是,如果系统的持续负载值大于1,则意味着它无法吸收执行中的所有负载,因此它的响应时间会增加,系统会变得缓慢和无响应。高于1的高值,尤其是最近5分钟和15分钟的平均负荷,是明显的症状。要么我们需要改进计算机的硬件,通过限制用户对系统的使用来节省更少的资源,要么通过多个相似节点之间的负载来划分。

因此,我们提出以下建议:

>=0.70:没有任何反应,但有必要监控 CPU 负载。如果在一段时间内保持这种状态,就必须在事情变得更糟之前

进行调查

。>=1.00:

存在问题

,您必须找到并修复它,否则系统负载的主要高峰将导致您的应用程序变慢或无响应。>=3.00:你的系统变得

非常慢

。甚至很难从命令行操作它来试图找出问题的原因,因此修复问题需要的时间比我们之前采取的行动要长。你冒的风险是系统会更饱和并且肯定会崩溃。>=5.00:

你可能无法恢复系统。你可以等待奇迹自发降低负载,或者如果你知道发生了什么并且可以负担得起,你可以在控制台中启动 kill -9 <process_name> 之类的命令 ,并祈求它运行在某些时候,以减轻系统负荷并重新获得其控制权。否则,你肯定别无选择,只能重新启动计算机。

本文来自半邊陽光投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/621771.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 07-06
下一篇 07-06

相关推荐

  • 生茶和熟茶有什么作用区别

    1、普洱生茶和熟茶的区别和功效,很多人都爱喝茶,但是茶的种类实在是太多了,刚入门喝茶的茶友可能分不清的就是生普洱和熟普洱的区别了,这两种茶汤看似是很像的,下面就为大家分享普洱生茶和熟茶的区别和功效,我们一起来看看吧 普洱生茶。2、生茶富含茶多酚,性属清凉,有

    2023-07-29 10:17:01
    892 0
  • 手游渠道服和官服有什么区别 两者对比分析不同处

    通常游戏会按照苹果服、硬核服、安卓服的划分方式来划分服务器。仅仅是因为钱!比如你在苹果App Store下载的游戏充值到10元,苹果的口袋里就有3元,而你在App Store下载的游戏也会部分充值到腾讯的口袋里。同样的,如果在定位器厂商拥有的商店下载,每个品牌代扣的费用也不一

    2023-07-29 09:47:01
    829 0
  • 社保卡是银行卡吗 和银行卡有什么区别

    居民参加社保后,可在社保中心**社保卡。如果是职工社保,那么一般都有单位统一发放。如果是居民社保,可能需要你自己去社保中心申请。而且改革后社保卡还有金融功能,那么社保卡是银行卡吗?一般来说,社保卡不完全是银行卡。社保卡既有社保账户,也有金融账户。是双账户,所

    2023-07-29 08:50:01
    188 0
  • 烘培与烘焙的区别

    下面将介绍,关于【烘培与烘焙的区别】问题回答概况: 1、烘焙:用火烘干(茶叶、烟叶等)。2、烘培:指在物料燃点之下通过干热的方式使物料脱水变干变硬的过程。3、烘培是方言,并不在汉语词语里记载,也就是说没有这个词语,但是民间有使用的,就变成了约定俗成的词了。4

    2023-07-29 05:12:01
    229 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信