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 — 进程名称(命令名/命令行)