linux下用top命令查看cpu利用率超过100%

 这里显示的所有的cpu加起来的使用率,说明你的CPU是多核,你运行top后按大键盘1看看,可以显示每个cpu的使用率,top里显示的是把所有使用率加起来。

注意:

按下1后显示的是逻辑cpu的个数,并不代表cpu的真实核数。

按下1后可以看到我的机器的CPU是双核的。%Cpu0,%Cpu1。

 这里我们也可以查看一下CPU信息:在命令行里输入:

cat /proc/cpuinfo

 这里可以看到cpu cores : 2。


附录一:查看CPU核数,引用自(Centos下查看cpu核数

【1】查看CPU型号:cpu型号是E7-4820

[root@node1 ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
    32  Intel(R) Xeon(R) CPU E7- 4820  @ 2.00GHz

【2】查看物理cpu个数:物理核心数是2核

[root@node1 ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniq|wc -l
2

【3】查看逻辑cpu的个数:逻辑cpu个数是32个

[root@node1 ~]# cat /proc/cpuinfo | grep "processor" |wc -l
32

【4】查看cpu是几核:cpu是8核

[root@node1 ~]# cat /proc/cpuinfo | grep "cores"|uniq
cpu cores       : 8

附录二:top命令显示详解,引用自(Linux中的top信息

top - 11:09:00 up 324 days, 17:24,  1 user,  load average: 0.38, 0.38, 0.37
Tasks: 136 total,   1 running, 135 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.9 us,  0.5 sy,  0.0 ni, 98.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16267100 total,  1142448 free,  7907452 used,  7217200 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  7969352 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 5466 elastic+  20   0 7503920 1.508g  39564 S   4.0  9.7   4:46.62 java
 9544 root      20   0 1306232 190444   6404 S   2.0  1.2   4425:19 mongod
  314 root      20   0  9.767g 2.185g  15568 S   1.3 14.1  48:34.56 java
12447 kibana    20   0 1293128 116832   7316 S   1.0  0.7   1061:09 node

第一行:

 top - 11:09:00 up 324 days, 17:24, 1 user, load average: 0.38, 0.38, 0.37

对应的信息:系统当前时间 up 系统到目前为止运行的时间, 当前系统的登陆用户数量,load average后面的三个数字分别表示距离现在一分钟,五分钟,十五分钟的负载情况。 

注意:load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第二行:任务进程

Tasks: 136 total,   1 running, 135 sleeping,   0 stopped,   0 zombie

对应的信息:tasks表示任务(进程),136则表示现在有136个进程,其中处于运行中的有1个,135个在休眠(挂起),stopped状态即停止的进程数为0,zombie状态即僵尸的进程数为0个。

第三行:CPU状态信息

%Cpu(s):  0.9 us,  0.5 sy,  0.0 ni, 98.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

依次对应:

us——用户空间(user)占用cpu的百分比
sy——内核空间(system)占用cpu的百分比
ni——改变过优先级(niced)的进程占用cpu的百分比
id——空闲(idolt)CPU百分比
wa——IO等待(wait)占用cpu的百分比
hi——IRQ 硬中断(Hardware)占用cpu的百分比
si——软中断(software)占用cpu的百分比
st——被hypervisor偷去的时间

第四行:当前内存状态信息, 单位都是KiB

KiB Mem : 16267100 total, 1142448 free, 7907452 used, 7217200 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 7969352 avail Mem

显示的信息与命令 free 显示的信息相同

对应信息:

Mem——物理内存总量(16G)
free——空闲内存总量(1G)
used——使用中的内存总量
buff/cache—— 用作内核缓存的内存量

注:使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心,

buff/cached代表了buff和cache总共用了多少,buff代表buffer cache占了多少空间,由于它主要用来缓存磁盘上文件的元数据,所以一般都比较小,跟cache比可以忽略不计;

cache代表page cache和其它一些占用空间比较小且大小比较固定的cache的总和,基本上cache就约等于page cache,page cache的准确值可以通过查看/proc/meminf中的Cached得到。由于page cache是用来缓存磁盘上文件内容的,所以占有空间很大,Linux一般会尽可能多的将空闲物理内存用于page cache。

第五行:当前内存状态信息, 单位都是KiB

Swap——交换区总量
free——空闲交换区总量
used——使用的交换区总量
avail Mem—— 表示可用于进程下一次分配的物理内存数量,这个大小一般比free大一点,因为除了free的空间外,系统还能立即释放出一些空间来。

对于内存监控,在top里我们要时刻监控swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。正常情况下swap应该很少被使用,used值比较大说明交换空间被使用的比较多,如果通过vmstat命令看到swap in/out的比较频繁的话,说明系统内存严重不足,整体性能已经受到严重影响。

第六行:各进程的监控

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

依次对应:
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐