Linux命令之top命令

 top命令是Linux下常用的性能分析工具,能够实时(默认是3s刷新一次)的显示系统的资源使用情况,以及各种进程的资源使用情况,类似于Windows的任务管理器。

前几行水平显示了不同系统参数的概括,接下来是进程和它们在列中的属性(top命令的顶部显示与uptime命令相似的输出。)。

1.1 系统运行时间和平均负载:

显示运行时间

uptime命令:

这些字段显示:

第一行数据相当于uptime命令输出。00:15:48是当前时间,up 1:23是系统已经运行的时间,2users表示当前有2个用户在登录

  • 当前时间
  • 系统已运行的时间
  • 当前登录用户的数量
  • load average后面分别是1分钟平均负载,5分钟平均负载,15分钟平均负载。数据是每隔5秒钟检查一次活跃的进程数,然后根据这个数值算出来的。如果这个数除以CPU 的数目,结果高于5的时候就表明系统在超负荷运转了。如果三个值相加,除以3,再乘以100%,如果高于60%,说明系统的负担压力重。
  • 所谓负载,就是排队的任务数,所以CPU的负载,指的就是等待CPU处理的任务数。任务量越大,这个数字越高,CPU的利用率也就越高。(对应vmstat命令中的r列?---此处不确定)
[root@anna ~]# vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0 127232 126128      0 695340    0    1    17     3   98   13  0  0 100  0  0
 0  0 127232 126136      0 695340    0    0     0     0 1043 1970  1  1 98  0  0
 0  0 127232 126136      0 695348    0    0     0    20  841 1539  0  1 99  0  0
 0  0 127232 126152      0 695384    0    0     0     7  503  996  0  0 99  0  0
 2  0 127232 126152      0 695388    0    0     8     0 1049 1940  0  1 99  0  0
 0  0 126976 126136      0 695408   12    0    12     2  823 1505  1  0 99  0  0

可以使用'l'命令切换uptime的显示。

 平均负载

平均负载表示的平均活跃进程数,包括正在running的进程数,准备running(就绪态)的进程数,和处于不可中断睡眠状态的进程数。如果平均负载数刚好等于CPU核数,那证明每个核都能得到很好的利用,如果平均负载数大于核数证明系统处于过载的状态,通常认为是超过核数的70%认为是严重过载,需要关注。还需结合1分钟平均负载,5分钟平均负载,15分钟平均负载看负载的趋势,如果1分钟负载比较高,5分钟和15分钟的平均负载都比较低,则说明是瞬间升高,需要观察。如果三个值都很高则需要关注下是否某个进程在疯狂消耗CPU或者有频繁的IO操作,也有可能是系统运行的进程太多,频繁的进程切换导致。比如说上面的演示环境是一台8核的centos机器(load average: 16.32, 18.75, 21.04),证明系统是长期处于过载状态在运行。

1.2 任务:

任务概况

 第二行显示的是任务或者进程的总结。进程可以处于不同的状态。这里显示了全部进程的数量。除此之外,还有正在运行、睡眠、停止、僵尸进程的数量(僵尸是一种进程的状态)。这些进程概括信息可以用't'切换显示。

1.3 CPU 状态:

CPU状态显示

下一行显示的是CPU状态。 这里显示了不同模式下的所占CPU时间的百分比。这些不同的CPU时间表示:

  • us, user: 运行(未调整优先级的) 用户进程的CPU时间
  • sy,system: 运行内核进程的CPU时间
  • ni,niced:运行已调整优先级的用户进程的CPU时间
  • wa,IO wait: 用于等待IO完成的CPU时间
  • hi:处理硬件中断的CPU时间
  • si: 处理软件中断的CPU时间
  • st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。

可以使用't'命令切换显示。

1.4 内存使用:

内存使用情况

接下来两行显示内存使用率,有点像'free'命令。第一行是物理内存使用,第二行是虚拟内存使用(交换空间)。

物理内存显示如下:全部可用内存、已使用内存、空闲内存、缓冲内存。

相似地:交换部分显示的是:全部、已使用、空闲和缓冲交换空间。

内存显示可以用'm'命令切换。

1.5 字段/列:

任务信息列

在横向列出的系统属性和状态下面,是以列显示的进程。不同的列代表下面要解释的不同属性。

默认上,top显示这些关于进程的属性:

PID

进程ID,进程的唯一标识符

USER

进程所有者的实际用户名。

PR

进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。

NI

进程的nice值(优先级)。越小的值意味着越高的优先级。

VIRT

进程使用的虚拟内存。

RES

驻留内存大小。驻留内存是任务使用的非交换物理内存大小。

SHR

SHR是进程使用的共享内存。

S

这个是进程的状态。它有以下不同的值:

  • D - 不可中断的睡眠态。
  • R – 运行态
  • S – 睡眠态
  • T – 被跟踪或已停止
  • Z – 僵尸态

%CPU

进程使用的CPU占比。

%MEM

进程使用的可用物理内存百分比。

TIME+

任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。

COMMAND

运行进程所使用的命令。

还有许多在默认情况下不会显示的输出,它们可以显示进程的页错误、有效组和组ID和其他更多的信息。

https://www.cnblogs.com/makelu/p/11169270.html

https://linux.cn/article-2352-1.html

原文地址:https://www.cnblogs.com/annatest/p/15065977.html