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时间表示:
- 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