在 Linux 中安装 atop 工具来监控系统进程
atop 是一个 ASCII 全屏交互式性能监视器,它有点类似于 top 命令来查看 Linux 系统上的负载。可以看到系统级最关键的硬件资源(从性能角度来看)的工作,即CPU、内存、磁盘和网络。 atop 使我们能够识别哪些进程实际负责指示的负载。简而言之,top 可以报告所有流程的活动,包括已完成的流程。
在 Linux 上安装 Atop 监控工具:
在这里,我们将指导您如何在Linux系统(基于Debian/Ubuntu)上安装和配置atop,并让您熟悉atop的系统级信息和进程级信息,以便您轻松监控和了解您的系统进程。
在 Debian/Ubuntu 上:
可以使用以下命令从默认存储库安装 atop:-
sudo apt-get install atop
您可以通过键入以下命令访问主窗口的顶部:
atop
NOTE:
ALWAYS remember to exit atop by pressing ‘q’ or with kill -15 otherwise if you stop it with any other way that will not allow it to stop the accounting mechanism which will continue to generate a huge file on disk.
输出说明:
当显示顶部窗口时,我们可以在输出部分看到两个部分。第一部分显示系统级信息,第二部分显示进程级信息让我们更深入地讨论它们。
系统级信息
系统级信息由以下输出行组成:
#PRC(过程级总计):
此部分显示系统模式 ('sys') 和用户模式 ('user') 下消耗的总 CPU 时间、总运行的进程 ('#proc')、运行的线程总数'('#trun' )、'sleeping interruptible' ('#tslpi') 和 'sleeping uninterruptible' ('#tslpu')、僵尸进程 ('#zombie')、克隆系统调用 ('clone') 以及在此期间结束的进程数间隔 ('#exit'),显示 '?'如果不使用进程记帐)。
# CPU(CPU利用率):
所有CPU的总占用显示在这一行(可以超过1行)即所有活动进程('sys')在内核模式下花费的CPU时间百分比,在用户模式下消耗的CPU时间百分比( 'user') 对于所有活动进程,用于中断处理 ('irq') 的 CPU 时间百分比以及至少一个进程在等待磁盘 I/O ('wait') 时未使用的 CPU 时间的百分比。对于虚拟机,会显示窃取百分比(“窃取”),用于显示在同一硬件上运行的其他虚拟机窃取的 CPU 时间百分比。还会显示平均频率 ('avgf') 和平均缩放百分比 ('avgscal')。还会显示当前频率 ('curf') 和当前缩放百分比 ('curscal')。
# CPL(CPU负载信息):
CPL 行行包含负载平均数字,显示可在 CPU 上运行的线程数或等待磁盘 I/O 的线程数。所有这些数字均超过 1 ('avg1'), 5 ('avg5')和 15 ('avg15') 分钟。
此外,还会显示上下文切换数 ('csw')、服务中断数 ('intr') 和可用 CPU 数。
# MEM(内存占用):
物理内存总量 ('tot')、当前空闲的内存量 ('free')、正在使用的内存页面缓存量 ('cache')、用于文件系统元数据的内存量 (' buff') 和用于内核 malloc 的内存显示在此 MEM 行部分行中。
# SWP(交换占用和过量使用信息):
磁盘上的交换空间总量 ('tot')、空闲交换空间 ('free') 显示在这一行中。包括已提交的虚拟内存空间 ('vmcom') 和已提交空间的最大限制 ('vmlim'),(通过读取默认交换大小加上 50% 的内存大小)。
# PAG(寻呼频率):
由于空闲内存低于特定阈值这一事实,该行包含扫描页面的数量(“扫描”)以及内核因紧急需要(“停顿”)而尝试回收页面的次数。
此外,还显示了系统从交换空间 ('swin') 读取的内存页数和系统写入交换空间 ('swout') 的内存页数。
# LVM/MDD/DSK(逻辑卷/多设备/磁盘利用率):
此行显示忙于处理请求的单元 ('busy')、发出的读取请求数 ('read')、发出的写入请求数 ('write')、每次读取的 KiBytes 数 ('KiB/ r') 。平均队列深度 ('avq') 和请求 ('avio') 用于搜索、延迟和数据传输所需的平均毫秒数。
# NET(网络利用率):
NET 有 3 条线路,一根用于传输层(TCP 和 UDP),一根用于 IP 层,一根用于每个活动接口。
- 传输层
- IP层
- 主动接口
传输层:
接收到的 TCP 段数,包括错误接收的那些 ('tcpi'),传输的 TCP 段的数量,不包括仅包含重传八位字节的那些 ('tcpo'),接收到的 UDP 数据报 ('udpi'),传输的 UDP 数据报 ('udpo'),主动 TCP 打开 ('tcpao'), 被动 TCP 打开 ('tcppo'), TCP 输出重传 ('tcprs'), TCP 输入错误 ('tcpie'), TCP 输出重置 ('tcpie'), TCP 输出重传 (' tcpor')、UDP 无端口 ('udpnp') 和 UDP 输入错误的数量 ('tcpie') 显示。
IP层:
此行显示从接口接收的 IP 数据报的数量,包括错误接收的数据报 ('ipi')、本地更高层协议提供用于传输的 IP 数据报 ('ipo')、接收的转发到其他接口的 IP 数据报('ipfrw')、传送到本地高层协议 ('deliv') 的 IP 数据报、收到的 ICMP 数据报 ('icmpi') 以及传输的 ICMP 数据报 ('icmpo') 的数量。
对于每个活动的网络接口:
接收数据包的数量 ('pcki')、传输的数据包 ('pcko')、每秒接收的有效比特数 ('si')、每秒传输的有效比特数 ('so')、冲突 (' coll')、收到的多播数据包 ('mlti')、接收数据包时的错误 ('erri')、传输数据包时的错误 ('erro')、收到的数据包丢失 ('drpi') 以及传输的数据包数丢弃('drpo')显示在这一行中。
进程级信息:
进程级别信息由以下输出行组成:
PID(进程ID): 我们可以看到 '?'当进程在最后一个时间间隔内启动和完成时,因为进程 ID 不是标准进程记帐记录的一部分。
YSCPU : 由于系统调用处理这个进程在系统模式(内核模式)下的CPU时间消耗被显示出来。
USRCPU : 由于处理自己的程序文本,此进程在用户模式下的CPU时间消耗显示。
RGROW:这显示进程在最后一个时间间隔内增长的常驻内存量。
VGROW :这显示进程在最后一个时间间隔内增长的虚拟内存量。
EXC:显示已终止进程的退出代码。
THR:显示该进程内的线程总数。
S:进程主线程的当前状态:“R”表示当前正在处理或在运行队列中,“S”表示等待事件发生,“D”表示不可中断睡眠,“Z”表示僵尸, 'T' 表示停止,'W' 表示交换,'E'(退出)表示在最后一个时间间隔内完成的进程。
CPUNR:这显示进程的主线程正在运行或最近正在运行的 CPU 的标识。
CPU:显示与系统级别资源的可用容量相关的任何进程的占用百分比。
CMD:进程的名称。正在运行或在上一个间隔期间已完成。