CPU
# 查看机器一共几个cpu
cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
# 查看单个cpu的物理核数
cat /proc/cpuinfo | grep "cpu cores" | uniq
# 查看总逻辑核数 cpu个数×物理核数 = 总逻辑核数
cat /proc/cpuinfo | grep "processor" |wc -l
top 按 大写的P,是cpu使用率从大到小排列
cpu全部使用也就是100%,怎么会出现超过cpu核心数 14倍的使用率呢?谁来提供额外的cpu核心数呢?
对于一个拥有96个逻辑核心的CPU来说,它的处理能力可以类比为一个96个工人的工厂,每个工人都可以独立工作。当工厂中的所有工人都在忙碌的工作时,我们说这个工厂的工作状态是100%的使用率。
然而,在某些情况下,一个工人不仅可以完成自己的任务,还可以帮助其他工人完成任务。类似的,一个逻辑核心也可以协助其他核心完成计算任务。这种情况下,我们可以认为这个核心提供了额外的处理能力,超出了它本身的处理能力,因此会导致CPU使用率高于100%。
另外,现代的CPU通常具有超线程(Hyper-Threading)技术,使得一个逻辑核心能够同时执行多个线程。在这种情况下,每个逻辑核心可以被视为两个虚拟核心,因此一个96个逻辑核心的CPU实际上可能具有192个虚拟核心。当所有虚拟核心都在工作时,CPU使用率也会高于100%。
总之,当CPU使用率高于100%时,说明CPU正在使用一些超出其本身物理核心数量的处理能力,可能是由于超线程技术、多核处理器、分布式系统等原因。
多核处理器可以比喻为一个工厂,工厂里有多个工人可以独立工作。当所有工人都在工作时,工厂的工作状态就是100%的使用率。但是,如果有一个工人可以完成多个工作岗位的任务,那么他就可以提供额外的处理能力,超出了工厂实际的工作岗位数量,这就好比多核处理器的一个核心可以执行多个线程,提供额外的处理能力。
而分布式系统则可以比喻为多个工厂联合生产,每个工厂都有自己的工人和生产线。当需要完成一个庞大的任务时,每个工厂都可以分担一部分任务,协同完成。这就好比分布式系统中的每个节点都可以分担一部分计算任务,协同完成整个系统的计算工作。因此,分布式系统可以提供更多的计算资源,从而超出了单个节点的处理能力,使得CPU使用率高于100%。
%Cpu(s): 7.1 us, 12.1 sy, 0.0 ni, 76.9 id, 3.0 wa, 0.0 hi, 0.9 si, 0.0 st
这段输出是显示当前系统的CPU使用情况。下面是各项指标的含义:
us:用户空间占用CPU的时间比例,比如运行应用程序的时间。
sy:系统空间占用CPU的时间比例,比如内核处理I/O操作的时间。
ni:nice值,表示用户定义的进程优先级,这里为0。
id:空闲CPU时间比例,即CPU处于空闲状态的时间比例。
wa:CPU等待I/O操作完成的时间比例。
hi:硬中断(Hardware IRQ)占用CPU的时间比例,比如磁盘、网卡等设备中断。
si:软中断(Software Interrupt)占用CPU的时间比例,比如系统调用等软件中断。
st:虚拟化环境中,被“抢占”的时间比例。如果不在虚拟化环境中,这个值通常为0。
一个类比的例子是想象一个厨房,厨房可以看做是CPU,炒菜的厨师就是应用程序。现在假设厨房里有一些厨师在炒菜,有些人在切菜、洗菜,还有些人在清洁锅碗瓢盆。那么我们可以类比为:
us:表示有多少厨师在炒菜。
sy:表示有多少人在切菜、洗菜等辅助工作。
ni:在这个例子中没有意义,可以理解为没有设置。
id:表示有多少时间是厨房没有厨师在工作的,空闲状态。
wa:表示有多少人在等待食材、水、电等资源,类似于等待I/O操作完成。
hi:表示有多少人在处理特殊的任务,比如负责烤箱、炉灶等硬件设备。
si:表示有多少人在处理软件中断,比如调味料、工具等。
st:在这个例子中没有意义,可以理解为没有设置。
内存
top 按大写的M是内存排序
文章解释了CPU使用率超过100%的情况,指出超线程技术允许逻辑核心协助物理核心工作,增加处理能力。多核处理器和分布式系统也能提供额外的计算资源,使得CPU使用率可能高于其物理核心数量。同时,介绍了CPU使用情况的各项指标含义。

1959

被折叠的 条评论
为什么被折叠?



