Linux 史上最全top命令及参数详解

一.top简介

top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。在Linux操作系统中,top是使用最频繁,也是比较全的一个命令。Top命令类似于Windows系统的任务管理器工具。它对于所有正在运行的进行和系统负荷提供不断更新的概览信息,包括系统负载、CPU利用分布情况、内存使用、每个进程的内容使用情况等信息。

二.top命令

1.top -d:number代表秒数 默认5秒 刷新一次
[root@localhost ~]# top -d 3
2.top -b:以批次的方式执行top
[root@localhost ~]# top -b
3.top -b: ‘批量模式’,用来将输出重定向到指定文件,一般配合-n 指定输出几次统计信息
[root@localhost ~]# top -n 3 -b > /tmp/top.tmp
4.top -c: 显示产生进程的完成命令
[root@localhost ~]# top -c
5.top -p: 指定pid 多个pid以‘逗号’分开,只显示指定pid进程的状态
[root@localhost ~]# top -p 45532
6.top显示的页面命令
P:以CPU的使用资源排序显示
M:以内存的使用资源排序显示
N:以pid排序显示
T:由进程使用的时间累计排序显示
k:给某一个pid一个信号。可以用来杀死进程
r:给某个pid重新定制一个nice值(即优先级)
q:退出top(用ctrl+c也可以退出top)。

三.top页面显示的参数含义

下面是top页面截图

请添加图片描述

top前五行统计信息

第一行: top - 10:10:15 up 8:06, 4 users, load average: 0.00, 0.00, 0.00

第1行是任务队列信息,其参数如下

内容含义
10:10:15当前时间
up 8:06系统运行时间 格式为时:分
4 users当前登录用户数
load average: 0.00, 0.00, 0.00系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

【提示】:top给出的系统运行时间,反应了当前系统存活多久,对于某些应用而言,系统需要保证7*24小时的高可用性,这个字段信息就能很好的衡量系统的高可用性。


第二行:Tasks: 215 total, 1 running, 214 sleeping, 0 stopped, 0 zombie

第2行是行为进程信息,其参数如下

|

内容含义
215 total进程总数
1 running正在运行的进程数
214 sleeping睡眠的进程数
0 stopped停止的进程数
0 zombie僵尸进程数

【提示】:在linux操作系统中,一般有以下5种状态的进程信息:D:不可中断睡眠态(通常出现在IO阻塞)、R:运行态、S:睡眠态、T:已停止、z:僵尸态


第三行:%Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

第3行是CPU的信息,其参数如下

内容含义
0.0 us表示 CPU 在用户运行的时间百分比,通常用户 CPU 高表示有应用程序比较繁忙。典型的用户程序有:数据库、Web 服务器等。
0.0 sy表示 CPU 在内核态运行的时间百分比(不包括中断),通常内核态 CPU 越低越好,否则表示系统存在某些瓶颈。
0.0 ni表示用 nice 修正进程优先级的用户进程执行的 CPU 时间。nice 是一个进程优先级的修正值,如果进程通过它修改了优先级,则会单独统计 CPU 开销。
99.9 id表示 CPU 处于空闲态的时间占比,此时,CPU 会执行一个特定的虚拟进程,名为 System Idle Process。
0.0 wa表示 CPU 在等待 I/O 操作完成所花费的时间,通常该指标越低越好,否则表示 I/O 存在瓶颈,可以用 iostat 等命令做进一步分析。
0.0 hi表示 CPU 处理硬中断所花费的时间。硬中断是由外设硬件(如键盘控制器、硬件传感器等)发出的,需要有中断控制器参与,特点是快速执行。
0.0 si表示 CPU 处理软中断所花费的时间。软中断是由软件程序(如网络收发、定时调度等)发出的中断信号,特点是延迟执行
0.0 stCPU 被其他虚拟机占用的时间,仅出现在多虚拟机场景。如果该指标过高,可以检查下宿主机或其他虚拟机是否异常。

【提示】:一般我们关注多的是us、sy、id、wa、hi、wi这个6个数值,在这里我们需要注意的指标如下:

**CPU(s):**表示当前CPU的平均值,默认top命令配置显示的是平均的CPU使用情况,如果按下键盘1可以显示各个逻辑CPU的使用情况,
如下图所示:
请添加图片描述

1) 统计空闲的CPU我们直接统计%id的计数即可,当id持续过低的时候,表示系统迫切需要解决CPU资源问题。
2) 统计使用的是CPU需要用1-%id获取。或者us+sy+si.
3) wa:使用率过高的时候,我们需要考虑IO的性能是否有瓶颈,可以在使用iostat、sar等命令做进一步分析;
4) hi:使用率过高时,表示当前硬件中断占用很大的百分比。一般硬件中断我们可以分析文件/proc/interrupts、/proc/irq/pid/smp_affinity、服务irqbalance是否配置,以及CPU的频率设置,通过这些可以帮系统打散优化系统的硬件中断。
5) si:Linux kernel通过用一种软件的方法(可延迟函数)来模拟硬件的中断模式,通常叫做软中断。常见的软件中断一般都是和网络有关。从网卡到IP层的数据报文收发都是si处理的,长时间写日志也可能产生软件中断。

6) 当软中断出现瓶颈的时候,系统有个进行叫ksoftirqd,每个CPU都有自己对应的ksoftirqd/n(n为CPU的逻辑ID),每个ksoftirqd的内核线程都会去运行对应的ksoftirqd(函数)来处理自己的中断队列上的软件中断。所以,当网络出现阻塞的时候,软件中断程序ksoftirqd肯定会出现瓶颈。此时我们可以通过ps aux|grep ksoftirqd查看ksoftirqd的瓶颈。


第四行:MiB Mem : 2425.4 total, 835.1 free, 700.8 used, 889.5 buff/cache

第4行是内存信息***(物理内存)***,其参数如下

内容含义
2425.4 total物理内存总量
835.1 free空闲物理内存
700.8 used已经使用的物理内存
889.5 buff/cache内核缓存内存量

第五行:MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1522.3 avail Mem

第5行是swap内存交换分区信息**(虚拟内存)**,其参数如下

内容含义
2048.0 total交换区总量
2048.0 free空闲交换区总量
0.0 used使用的交换区总量
1522.3 avail Mem缓冲的交换区总量。

注意: 这里应该还有个 cached Mem 原因:新安装的虚拟机 缓冲区非常小几乎没有

有以下结论可以帮助内存分析

buffer和cache的作用是所用I/O系统调用的时间,比如读写等。一般一个系统而言,如果cache的值很大,说明cache住的文件多。如果频繁访问文件都能被命中,很明显会比读取磁盘调用快,磁盘的IO必定会减小。

注意:cache的命中率很关键,如果频繁访问的文件不能被命中,对于cache而言是个比较的大的资源浪费,此时应考虑drop cache并提升对应的cache的命中率。

(2)从字段的意义上来说mem.free表示的是空闲内存总量,但是需要注意的是,虽然buffer/cache会占用一定的物理内存,但是当系统需要内存的时候,这些内存立即释放出来,也就是说buffer/cache可以看成可用内存。

四.top进程信息

如下图
请添加图片描述

进程参数含义
PID进程id
USER父进程id
PR优先级
NI谦让度值 nice值。负值表示高优先级,正值表示低优先级
VIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SHR共享内存大小,单位kb
S进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU上次更新到现在的CPU时间占用百分比
%MEM进程使用的物理内存百分比
TIME+进程使用的CPU时间总计,单位1/100秒
COMMAND命令名/命令行

注意:

  1. 在top命令中,第六、七行显示的是所有进程相关的信息,它默认显示的是进程的信息,如果要显示线程级的信息,可以通过ps命令获取。
  2. 进程实际使用的内容可以看RES那一列的信息,VIRT表示进程使用的是虚拟内存数据,SHR表示共享内存的数据。
  3. TIME+表示是进程使用的CPU时间总计,而非进程的存活时间。且TIME+默认精确到1/100秒。由于TIME+显示的是CPU时间,所以可能存在 TIME+大于程序运行时间,也可能小于程序运行时间,这两没有必然的关系,无安全取决于该程序所能分配到的CPU时间而定。
    %CPU标识进程所占CPU的百分比,通过这个可以得出CPU利用率;
  4. 默认情况下系统不会显示进程分布在哪几个逻辑CPU上,如果想分析各个CPU对应的应用程序,可以修改top的默认配置,添加字段Last used CPU 即可。

默认的top命令配置并不能满足我们的日常需求时,我们可以自定义一些top配置,来更好的分析系统。用户输入top命令后,按下H键可以看到对应的top配置帮助页面

五.top页面命令扩展

h 键 帮助页面

请添加图片描述

d 键 进入间隔刷新配置,输入间隔秒数回车即可

请添加图片描述

1 键 可以监控每个逻辑CPU的状况

请添加图片描述

b 键(打开关闭加亮效果)如下图

请添加图片描述

参考文献

1.https://blog.csdn.net/quiet_girl/article/details/50668126

2.https://blog.csdn.net/u011391839/article/details/107407466

  • 17
    点赞
  • 127
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只可爱的委屈翁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值