top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。top有两种交互模式的选项:
命令行选项和运行时选项。多核CPU命令: mpstat -P ALL 和 sar -P ALL
一、查看top版本信息如下:
[root@resines ~]# top -vh
procps-ng version 3.3.10
Usage:
top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
二、top命令行选项:
top [ -d delay ] [ -n iter ] [ -i ] [ -b ]
- -d delay : 统计信息更新的时间间隔;
- -n interations: 退出前迭代的次数。
- p : 通过指定监控进程ID来仅仅监控某个进程的状态。 例如:top -p 1563
- -i : 是否显示空闲进程;
- -b : 批量模式运行;
[root@resines ~]# top -p 1563 -n 1
top - 17:08:14 up 17:21, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 7995716 total, 7035892 free, 194700 used, 765124 buff/cache
KiB Swap: 5242876 total, 5242876 free, 0 used. 7537008 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1563 etcd 20 0 10.753g 41964 26224 S 0.0 0.5 16:33.87 etcd
三、运行时选项
[root@resines ~]# top
top - 17:10:29 up 17:23, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 403 total, 1 running, 402 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 7995716 total, 7035784 free, 195060 used, 764872 buff/cache
KiB Swap: 5242876 total, 5242876 free, 0 used. 7536900 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 191836 6988 2572 S 0.0 0.1 0:35.15 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.14 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.06 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.21 migration/0
top - 17:10:29 up 17:23, 1 user, load average: 0.00, 0.01, 0.05
依次对应:系统当前时间 up 系统到目前为止i运行的时间, 当前登陆系统的用户数量, load average 三个数字分别表示距离现在一分钟,五分钟,十五分钟的负载情况。 这行信息与命令uptime显示的信息相同
注意:load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
Tasks: 403 total, 1 running, 402 sleeping, 0 stopped, 0 zombie
tasks表示任务(进程),403 total则表示现在有403 个进程,其中处于运行中的有2个,402 个在休眠(挂起),stopped状态即停止的进程数为0,zombie状态即僵尸的进程数为0个。
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
- us : user 用户空间占用cpu的百分比
- sy : system 内核空间占用cpu的百分比
- ni : niced 改变过优先级的进程占用cpu的百分比
- id : 空闲cpu百分比
- wa : IO wait IO等待占用cpu的百分比
- hi : Hardware IRQ 硬中断 占用cpu的百分比
- si : software 软中断 占用cpu的百分比
- st : 被hypervisor偷去的时间
KiB Mem : 7995716 total, 7035784 free, 195060 used, 764872 buff/cache
物理内存总量(8G),空闲内存总量(7.1G),使用中的内存总量(1.9G),缓冲内存量 ,使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心
KiB Swap: 5242876 total, 5242876 free, 0 used. 7536900 avail Mem
依次对应:交换区总量(5.2G),空闲交换区总量(5.2G),使用的交换区总量(0G),可用交换取总量
对于内存监控,在top里我们要时刻监控swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
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 : 进程名称(命令名/命令行)
备注: 查询更多按 "h" 帮助