性能监测工具top详解
3 total, 1 running, 299 sleeping, 3 stopped, 0 zombie
Cpu(s): 14.0%us, 2.6%sy, 0.0%ni, 74.8%id, 8.4%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 32865816k total, 32060704k used, 805112k free, 54072k buffers
Swap: 0k total, 0k used, 0k free, 7736108k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
121065 root 20 0 14.3g 3.8g 15m S 104.5 12.1 3:06.03 java
2547 mysql 20 0 5061m 1.8g 6216 S 10.0 5.8 1966:43 mysqld
64694 root 20 0 16.3g 7.6g 10m S 8.6 24.2 255:59.06 java
5467 root 20 0 7324m 431m 10m S 4.6 1.3 201:10.19 java
71438 root 20 0 7651m 2.0g 10m S 3.0 6.2 180:17.20 java
1266 root 20 0 0 0 0 S 2.7 0.0 0:43.53 flush-8:0
655 root 20 0 0 0 0 S 2.0 0.0 2:10.50 jbd2/sda2-8
111539 root 20 0 12.7g 1.1g 10m S 0.7 3.4 1:52.60 java
39 root 20 0 0 0 0 S 0.3 0.0 0:09.09 events/4
64690 root 20 0 19724 1228 652 S 0.3 0.0 2:32.05 surfilter-linux
80027 root 20 0 9914m 4.6g 10m S 0.3 14.6 28:46.96 java
120793 root 20 0 15164 1428 948 R 0.3 0.0 0:05.09 top
1 root 20 0 19356 1212 904 S 0.0 0.0 0:13.63 init
第一行:
涉及到2个时间,一个是系统时间,一个是机器运行的时间。
【我们应该重点关注的是机器运行的时间,Why? 有时候,重启机器能带来很多问题,你懂的!】
多少用户登录了系统?
【通过who/w/history可以查到更多信息】
3个load值是什么含义?
分别代表的是1MIN,5MIN,15MIN机器的负载情况,如何确定负载的大小呢?
需要和CPU的核数相结合来看,
比如该机器是4核CPU,那么如果load值超过了4,就意味着负载很大了!【在top下按下1可以观察出CPU的个数】
上述信息,其实也可以通过uptime命令来获取。
第二行:
主要是总共有多少个任务,重点应该关注的是僵尸状态的任务数。
第三行:
主要是CPU的一些信息。
US/SY,说的就是用户进程和系统进程使用CPU的占比。
NI,即NICE,表示被调整过线程优先级的进程占比,这个比例正常不应该很大。
ID,表示空闲;
WA表示资源等待的时间,比如在瞬时大流量下,服务打了很多日志的话,
那么这个值就会飙高,因为这会很消耗资源的。
HI,硬中断,一般就是外设引起的,
如果HI飙高的话,那么意味着外设在硬件层面出现了问题。
SI表示软中断。
ST,即steel,如果该主机是虚拟的话会有这个ST信息,
也即是该虚拟机从宿主机获取CPU的时间片的百分占比。
第四和第五行:
这里主要说2个概念性的东西:buffer 和 cache。
buffer主要是什么呢?
应该是待处理的数据,主要是处理2个系统之间速度不匹配的问题。
而cache,一般应该是结果数据的缓存,比如从DB加载一些信息供查询用。
SWAP分区,就是想利用硬盘的做一部分缓存,如果SWAP交换非常频繁的话,就是说内存不够用!
列表说明:
PID 进程ID、USER 用户、PR 优先级、VIRT 虚拟内存、RES 驻留内存、SHR 共享内存
这里需要指出的是,RES表示的是该进程实际占用的内存,而并不是申请的内存大小。
也就是说当前进程所占用的内存物理大小是 RES-SHR。