第一行:top - 10:45:27 up 18:34 , 4 users, load average: 0.04, 0.04, 0.05
10:45:27 :当前时间
18:34 :系统运行时间
4 users:当前登录用户数
0.04, 0.04, 0.05:系统负载1分钟、5分钟、15分钟
负载是根据cpu计算的,1个cpu负载就是1.0,2个cpu负载就是2.0, 负载不超过对应的值即可(1颗cpu时负载不能超过1.0,如果是1.3,那么表示后面有进程在等待状态)
第二行:Tasks: 114 total, 2 running, 112 sleeping, 0 stopped, 0 zombie
114 total: 进程总数114
2 running: 正在运行的进程数
112 sleeping:睡眠进程数
0 stopped:停止进程数
0 zombie:僵死进程数
第三行:%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
0.3 us:用户空间占用cpu百分比
0.3 sy:内核占用cpu百分比
0.0 ni: 用户进程空间内改变过优先级的进程占用CPU百分比
99.3 id: 空闲cpu百分比
0.0 wa:等待输入和输出的cpu百分比
0.0 hi: 硬中断(Hardware IRQ)占用CPU的百分比
0.0 si: 软中断(Software Interrupts)占用CPU的百分比
0.0 st: 这个虚拟机被hypervisor偷去的CPU时间
第六行:PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 第4、5行是内存信息,这里不做赘述
PID:进程id
USER: 进程所属用户
PR:进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态
NI:nice值。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:进程使用的共享内存。共享内存大小,单位kb
S: 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比(表示单个进程占用单个cpu的百分比,如果有两颗cpu也只是显示占用单个的cpu百分比)
%MEM:进程使用的物理内存百分比
TIME:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)
total:物理内存大小
used:已使用内存
free: 空闲的内存
shared:多个进程共享的内存
buffer/cache: 缓存区大小
available:可使用的内存大小
查看内存时,有时实际使用量和free查询的不一致
如图:
top查询到的,内存使用量近200M,但free 查询到的使用量是2.2G,2G内存使用量不知在哪
[root@localhost ~]# cat /proc/meminfo | grep Huge AnonHugePages: 12288 kB HugePages_Total: 1011 #大页数量 HugePages_Free: 1011 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB #每页的大小,此处每页2M共1011页,共2G
大页内存:减少内存页数量,提高cpu命中率,适当调整能优化系统,程序耗费内存很小或者程序的访存局部性很好的情况不需要大页内存
4、nethogs 查看占用带宽的进程4.1、nethogs查看占用带宽高的进程
4.2、iftop
- =>:发送流量的方向
- <=:接收流量的方向
- TX:发送
- RX:接收
- TOTAL:全部流量
- CUM:目前累积流量
- Peak:流量峰值
- rates:平均值,2秒,10秒,40秒的平均流量
常用参数:
- -i: 指定监听的网卡 iftop -i eth0
- -n:显示ip
- -p:显示端口
- -F 显示特定网段的进出流量, iftop -F 192.168.31.0/24
5.1、iostat,用于监视系统输入输出设备和CPU的使用情况,监控系统整体
参数: -c:仅显示CPU使用情况; -d:仅显示设备利用率; -k:显示状态以千字节每秒为单位,而不使用块每秒; -m:显示状态以兆字节每秒为单位; -p:仅显示块设备和所有被使用的其他分区的状态; -t:显示每个报告产生时的时间; -V:显示版号并退出; -x:显示扩展状态。
| 字段 | 说明 |
|---|---|
| Device | 驱动名称 |
| rrqm/s | 每秒需要读取请求的数量 |
| wrqm/s | 每秒需要写入请求的数量 |
| r/s | 每秒实际读取请求的数量 |
| w/s | 每秒实际写入请求的数量 |
| rsec/s | 每秒读取扇区的数量 |
| wsec/s | 每秒写入扇区的数量 |
| rkb/s | 每秒实际读取的大小,单位为KB |
| wkb/s | 每秒实际写入的大小,单位为KB |
| avgrq-sz | 需求的平均大小扇区 |
| avgqu-sz | 需求的平均队列长度 |
| await | 等待I/O平均时间 |
| svctm | I/O需求完成的平均时间 |
| %util | 一秒中有百分之多少的时间用于 I/O 操作 |
| %user | cpu处在用户模式下的时间百分比 |
| %nice | CPU在用户态模式下,用于nice(进程调用cpu的优先级)操作,所占用CPU总时间的百分比 |
| %system | cpu在系统模式下的时间百分比 |
| %iowait | cpu等待io完成的时间 |
| %steal | 虚拟cpu占比 |
| %idle | cpu空闲时间百分比 |
- %iowait值高,表示硬盘存在I/O瓶颈
- %util值高,说明io读写较大,磁盘是否有瓶颈
- %idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量
- %idle值如果持续低于10,那么系统的CPU处理能力相对较低
5.2、iotop 检测进程io
- -o 只显示正在产生I/O的进程或线程。除了传参,可以在运行过程中按o生效
- -p 指定进程pid
- -u 指定用户
- -k 以KB为单位显示
- -c:监测cpu
- -C:多个cpu时指定cpu,dstat -C 0
- -d:磁盘统计
- -g:显示页面(分页)使用情况
- -p:显示进程状态
- -s:显示交换内存使用情况
- -r:显示 i/o 状态
- -y:显示系统状态



