一个专业运
维技术分享!

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页面截图

Linux 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 st CPU 被其他虚拟机占用的时间,仅出现在多虚拟机场景。如果该指标过高,可以检查下宿主机或其他虚拟机是否异常。

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

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

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 键 帮助页面

Linux top命令详解

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

Linux top命令详解

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

Linux top命令详解

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

Linux top命令详解

赞(1) 打赏
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。小柳实验室 » Linux top命令详解

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏