Linux下top的基本用法

600 阅读3分钟

这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战

前言

在生产环境中,我们通常在Linux环境下使用一些命令来监控主机的负载情况,例如每个程序对cpu的使用情况和内存的占用情况。我在生产环境中使用最多的就是top命令,通过对一些指标的观察,以此来判断机器的负载运行情况。

使用

我们在Liunx环境下,输入top命令,可以进入如下图的界面。

指标分析

我们想要更好的使用top,就要明白每个指标代表的意含义

第一行:负载情况

  1. 两个时间:一个是系统时间,一个是机器运行的时间

  2. 3个load average:分别代表1MIN,5MIN,15MIN机器的负载情况,你数字是代表各个时间正在运行进程+等待进程的平均数

第二行:任务情况

主要来查看机器上的进程情况,总共有多少个任务,多少任务在运行、休眠,多少个任务被终止,已经观察僵尸状态(zombie)的任务数

第三行:CPU的信息

主要查看主机的CPU信息,同时,在界面中按1可以查看CPU个数

  1. US/SY:用户进程和系统进程使用CPU的占比
  2. NI:NICE,表示被调整过线程优先级的进程占比,比例正常不应该大
  3. ID:表示空闲
  4. WA:表示资源等待的时间,消耗资源值会升高
  5. HI:硬中断:一般是外设引起,如果HI飚高,意味着外设在硬件层面出现问题
  6. SI:软中断
  7. ST:即steel,如果该主机是虚拟机就会有ST信息,这就是该虚拟机从宿主机获取CPU的时间片的百分占比

第四行,第五行主要讲了:buffer和cache

  1. buffer为待处理的数据,解决系统间速度不匹配问题;cache为结果数据的缓存
  2. SWAP分区:利用硬盘做一部分缓存,如果SWAP交换非常频繁,说明内存不够用

进程列表说明

  1. PID 进程ID,User 用户,RR 优先级,VIRT 虚拟内存,
  2. RES:驻留内存,表示该进程实际占用的内存,并不是申请的内存
  3. SHR:共享内存。所以说当前进程实际占用的内存大小为 RES-SHR

CPU占用异常排查思路

当我们在运行中观察CPU飚高观察到CPU占用高的Java程序时,可以按照以下思路来排查。

  1. 观察CPU使用率高的进程PID
  2. top -Hp PID来观察该进程下的线程TID
  3. 将TID由十进制转换成十六进制NID
  4. 使用jstack PID来多dump几次,查看nid=NID的线程的State

结语

以上就是top的基本用法,在大集群规模的时候,我们可以使用一些监控工具,对所有的主机进行监控。