每天学习一个命令: top 显示Linux任务
top 命令提供了正在运行的linux系统的动态实时的监控信息。常用与排查系统性能问题。
top常用命令
命令格式:top [-] [d] [p] [q] [c] [C] [S] [n]
参数说明:d
: 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。 top -d 1
,则top每隔1秒刷新显示一次p
: 通过指定监控进程ID来仅仅监控某个进程的状态。top -p 16091
只看某一个进程的c
: 显示整个命令行而不只是显示命令名
在top命令的显示窗口,我们还可以输入以下字母,进行一些交互:h
或?
: 显示帮助画面,给出一些简短的命令总结说明。q
: 退出程序。M
: 根据驻留内存大小进行排序。这个要记住P
: 根据CPU使用百分比大小进行排序。这个要记住T
: 根据时间/累计时间进行排序。
举例
1 | top |
top 命令区分为两个部分,上面为统计部分,下面为进程信息。
系统统计信息
第一行
top - 11:11:40 up 4 days, 20:30, 2 users, load average: 0.89, 0.96, 3.77
系统时间,已运行天数,登录用户数,1分钟,5分钟,15分钟系统平均负载
第二行
Tasks: 969 total, 2 running, 682 sleeping, 0 stopped, 1 zombie
运行的任务数,总量:969;运行中:2;睡眠:682;停止:0;僵尸进程:1;
第三行
%Cpu(s): 11.3 us, 6.2 sy, 0.0 ni, 82.3 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
us
: (user)用户空间占用CPU百分比sy
: (system)系统空间占用CPU百分比ni
: (nice)改变过优先级的进程占用CPU百分比id
: (idle)处于空闲状态占用CPU百分比hi
: (Hardware interrputs) 硬中断占用CPU百分比si
: (Software interrputs) 软中断占用CPU百分比st
: (Steal Time) 虚拟机窃取CPU时间是虚拟 CPU 在管理程序为另一个虚拟处理器提供服务时等待真实 CPU 的时间百分比
需要关注
us, sy, wa
这3个值占用是否高。多少算高?us
一般超过75%就算高,sy
一般超过30%就算高,wa
超过5%就算高。
第四行
KiB Mem : 33008723+total, 24753566+free, 15236984 used, 67314576 buff/cache
total
: 物理内存总量free
: 空闲内存used
: 已使用内存buff/cache
: 缓冲/缓存的内存
buffer
: (写)缓冲区是系统两端处理速度的平衡。通常来说硬盘的写入的速度是性能瓶颈,引入缓冲区是为了减少短期内突发的I/O的影响。举个栗子,vim 编辑器并不是每输入一个字符就保存一次,默认是先保存到buffer中,用户触发:w
命令进行保存时再写入到磁盘。cache
: (读)缓存区是处理两端速度不匹配的一种折中策略。主要原因是CPU和内存直接的速度差异越来越大。如果假的内存可以和CPU做的一样快,cache就可以不用了。
第五行
KiB Swap: 0 total, 0 free, 0 used. 31221619+avail Mem
Swap
: 交换分区信息total
: 交换分区总量free
: 交换分区空闲used
: 已使用的空间avail
: 可用的交换分区
交换分区通常我们说的虚拟内存,是在硬盘中划分一个分区出来。当物理内存不够用的时候,内核就会释放
buffers/cache
里一些长时间不使用的程序,然后将这些程序临时放到Swap
分区中。
进程信息
PID
: 进程idUSER
: 进程所有者用户名PR
: 优先级。数值越大优先级越高NI
: nice值,负值表示高优先级,正值表示低优先级VIRT
: 进程使用的虚拟内存总量,单位KB。VIRT=SWAP+RESSWAP
: 进程使用的虚拟内存中被换出的大小,单位KBRES
: 进程使用的、未被换出的物理内存大小,单位KB,RES=CODE+DATASHR
: 共享内存大小,单位KBS
: 进程状态。D表示不可中断的睡眠状态;R表示运行;S表示睡眠;T表示跟踪/停止;Z表示僵尸进程。%CPU
: 上次更新到现在的CPU占用百分比%MEM
: 进程使用的物理内存百分比TIME+
: 进程使用的CPU时间总计,单位1/100秒COMMAND
: 命令名/命令行