在Linux操作系统中,top是使用最频繁,也是比较全的一个命令。Top命令类似于Windows系统的任务管理器工具。它对于所有正在运行的进行和系统负荷提供不断更新的概览信息,包括系统负载、CPU利用分布情况、内存使用、每个进程的内容使用情况等信息。下面主要介绍一下top命令。

 

1、系统状态

top - 17:25:29

系统当前时间

up 43 days,41 min

系统到目前为止已运行的时间

1 user

当前登录系统的用户数量

load average: 0.20, 0.05, 0.01

系统负载(任务队列的平均长度),3个数值分别为1分钟、5分钟、15分钟前到现在的平均值

 

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

 

2、Task   进程状态信息:

显示的是进程状态信息的汇总,分别对应:所有启动的进程数、正在运行的进程数、挂起的进程数、停止的进程数、僵尸进程数。

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

 

3、Cpu

0.2%us

用户空间占用CPU百分比

重点关注

0.1%sy

内核空间占用CPU百分比

重点关注

0.0%ni

用户进程空间内改变过优先级的进程占用CPU百分比

 

99.6%id

空闲CPU百分比

重点关注

0.1%wa

等待输入输入的CPU百分比

重点关注

0.0%hi

硬中断占用CPU百分比

重点关注

0.0%si

软中断CPU百分比

重点关注

0.0%st

虚拟CPU等待实际CPU的时间的百分比。

 

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

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

     

  • 统计空闲的CPU李永利我们直接统计%id的计数即可,当id持续过低的时候,表示系统迫切需要解决CPU资源问题。
  • 统计使用的是CPU需要用1-%id获取。或者us+sy+si.
  • wa:使用率过高的时候,我们需要考虑IO的性能是否有瓶颈,可以在使用iostat、sar等命令做进一步分析;
  • hi:使用率过高时,表示当前硬件中断占用很大的百分比。一般硬件中断我们可以分析文件/proc/interrupts、/proc/irq/pid/smp_affinity、服务irqbalance是否配置,以及CPU的频率设置,通过这些可以帮系统打散优化系统的硬件中断。
  • si:Linux kernel通过用一种软件的方法(可延迟函数)来模拟硬件的中断模式,通常叫做软中断。常见的软件中断一般都是和网络有关。从网卡到IP层的数据报文收发都是si处理的,长时间写日志也可能产生软件中断。
  • 当软中断出现瓶颈的时候,系统有个进行叫ksoftirqd,每个CPU都有自己对应的ksoftirqd/n(n为CPU的逻辑ID),每个ksoftirqd的内核线程都会去运行对应的ksoftirqd(函数)来处理自己的中断队列上的软件中断。所以,当网络出现阻塞的时候,软件中断程序ksoftirqd肯定会出现瓶颈。此时我们可以通过ps aux|grep ksoftirqd查看ksoftirqd的瓶颈。

 

  1. Ni:优先级(priority)为操作系统用来决定CPU分类的参数,Linux使用(round-robin)的算法来做CPU排程,优先序越高,有可能获得的CPU时间就越多。但是我们可以通过nice命令以更改过的优先序来执行程序,如果未制定程序,则会打印出目前的排程优先序,内定的adjustment为10,范围为-20(最高优先序)到19(最低优先序)。

 

 

  1. Mem内存信息(物理内存)

物理内存总量、已经使用的物理内存、空闲物理内存、内核缓存内存量。

  1. 5、Swap交换内存(虚拟内存)

交换区总量、已使用交互区总量、空闲交换区总量、缓冲的交换区总量。

 

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

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

 

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

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

 

  1. 进程信息

 

PID

进程ID

USER

进程所有者

PR

优先级

NI

nice值,负值表示高优先级,正值表示低优先级

VIRT

进程使用的虚拟内存总量,单位kb,VIRT=SWAP+RES

RES

进程使用的、未被换出的物理内存大小,单位kb,RES=CODE+DATA

SHR

共享内存大小,单位kb

%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时间而定。
  4. %CPU标识进程所占CPU的百分比,通过这个可以得出CPU利用率;
  5. 默认情况下系统不会显示进程分布在哪几颗逻辑CPU上,如果想分析各颗CPU对应的应用程序,可以修改top的默认配置,添加字段Last used CPU 即可。
  6. 默认的top命令配置并不能满足我们的日常需求时,我们可以自定义一些top配置,来更好的分析系统。用户输入top命令后,按下H键可以看到一应的top配置帮助页面:

 

常用的top修改配置如下:修改刷新间隔时间,添加字段、删除字段、排序、保存等:

Top间隔刷新:在top命令后,按下d键盘进入间隔刷新配置,输入间隔秒数即可。

 

添加进程字段显示列:

输入完top命令后,按下字母f,进入列配置页面,

选择前面对应的字母,如d,则会增加一列UID;变成大写字母表示显示,小写字母表示没有选择不显示;

 

显示平均/各颗CPU的利用率信息:

进入top命令后,输入数字1;再次按下数字1后,又恢复原来的平均的CPU信息。

 

需要注意的是,上面几种技巧因为没有加W保存,所以当用户退出top交互界面后,下次登录又会重新加载,,如果需要则输入W保存。

 

 

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐