IT教程 ·

Linux 体系监控东西 atop

体系监控是运维工作中主要的一环,本文以 atop 东西为例来引见体系的主要监控项。

atop能够运用yum或apt包治理器举行装置。atop man page 中细致说清楚明了 atop 中各监控项寄义及atop敕令用法。

Linux 体系监控东西 atop IT教程 第1张

如上图所示, atop 的界面分为上半部份的体系监控项和下半部份的历程列表。

atop 每10s更新一次体系监控项以及在这段时候内状态发作变化的历程,按下A键能够检察悉数历程。

  • 体系状态
    • 历程
    • CPU
    • 内存
    • 磁盘
    • 收集
  • 历程列表
    • 默许视图
    • 内存视图
    • 调理视图
  • 监控效劳

体系状态

历程

第一行PRC显现整体历程状态:

  • sys, user 示意 CPU 在内核态和用户态的运转时候比例
  • #proc 为当前总历程数,
    • #trun 示意 running 状态线程数
    • #tslpi 示意 sleeping interruptible 状态的进线程数
    • #tslpu 示意 sleeping uninterruptible 状态线程数
    • #zombie 示意僵尸历程数
  • clones 示意在监控周期(默许10s)内 clone() 体系挪用次数

linux 中历程有两种 sleep 状态:

  • interruptible sleep: 历程吸收体系信号,能够被体系信号中断
  • uninterruptible sleep: 历程不吸收体系信号,不可被体系信号中断,包括kill -9 (SIGKILL 信号)。此状态的历程平常在守候体系资源,如磁盘IO或收集IO。

一个历程运用fork竖立子历程,如果子历程退出,而父历程并没有挪用wait或waitpid猎取子历程的状态信息,那么子历程的历程形貌符依然保存在体系中,这类历程称之为僵尸历程。大批僵尸历程可能会占用历程形貌符空间致使没法竖立历程。

孤儿历程是轻易与僵尸历程殽杂的一类历程,孤儿历程是父历程停止的历程,它们会被 init 历程接受并不会发作伤害。

CPU

在 atop 中每一个 CPU 逻辑中心具有一个 cpu 行示意本身状态, 最前面的 CPU 行则展现体系总览。

  • sys 示意CPU在内核态工作时候比例
  • user 示意 CPU 在用户态工作时候比例
  • irq 示意 CPU 处置惩罚体系中断所斲丧的时候比例
  • idle 示意 CPU 余暇时候比例

CPL 行示意 CPU 负载(CPU Load):

  • avg1, avg5, avg15: 过去 1min、5min和 15min 内的均匀体系负载
  • csw 示意监控周期内上下文切换的次数
  • intr 示意监控周期内中断发作的次数

体系负载

CPU 负载或称为体系负载是一个轻易被误会的监控项,它的定义为内核运转行列中 running 或 uninterruptible sleep 状态的历程的均匀数与CPU盘算才的比值。

体系负载 1.0 申明CPU正好满载,当体系负载大于1.0时会有历程因为守候CPU而壅塞。在多核体系中,体系负载即是CPU中心数示意正好满载,如在上图所示双核体系中,load=2申明正好满载。

上文已申明,uninterruptible sleep 历程平常是在守候IO, 当收集非常或磁盘毛病时会致使大批历程处于 uninterruptible sleep 状态从而致使 Load 急剧上升。

在罕见的效劳器程序大多数为IO密集型程序,罕见的CPU密集型使命包括:

  • 大规模的排序盘算, 如 mysql filesort
  • 大批的正则表达式婚配
  • 大批的 Hash Code 盘算
  • 大规模的加解密或紧缩解压盘算

当我们发明 CPU 运用率上升时,我们能够优先斟酌是不是在上述CPU密集型使命。

内存

MEM 行形貌内存运用状况:

  • tot: 物理内存总量
  • free: 余暇内存总量
  • cache: 页缓存用量
  • buff: 文件体系元数据缓存用量
  • slab: 体系内核内存用量
  • dirty: 须要写回磁盘的脏页用量,这部份内存运用已包括在cache中

页缓存是 Linux 处置惩罚文件IO的机制,因为磁盘的读写速率远远低于内存和CPU的运转速率,因而内核将文件映照为页缓存在内存中,CPU 读取文件时起首接见页缓存,若目的页未被缓存则会发作一个页缺失中断,中断处置惩罚器会从磁盘中读取文件加载到内存中,必要时会将不经常使用的页从内存中逐出。

与读取历程相似,CPU 不会直接写磁盘而是将变动写入响应的页,修正后的页就会成为脏页(dirty page), 脏页的内容会被异步地写入磁盘。

在一些文档中 buff 被笼统地称为文件体系缓存,在 man page 中 buff 的定义为 the amount of memory used for filesystem meta data 即文件体系元数据缓存。

PAG 行示意页缓存的运用状况:

  • scan: 当可用内存不足时扫描的页数,这个值太高申明可用内存不足
  • stall: 内核紧要将页加载到内存中的次数,这个值太高申明可用内存不足
  • steal: 假造机相干目标
  • swin: 从 Swap 分区将页加载到内存的次数
  • swout: 将内存页写入 Swap 分区的次数

scan 和 steal 的诠释比较难明白,附上 man page 中的原文:

This line contains the number of scanned pages ('scan') due to the fact that free memory drops below a particular threshold and the number times that the kernel tries to reclaim pages due to an urgent need ('stall')

SWP 行示意 Swap 分区运用状态:

  • tot: Swap 分区总大小
  • free: Swap 分区余暇空间大小

当物理内存不足时,内核会将历程内存中不经常使用的页逐出内存写入磁盘中的 Swap 分区,当历程须要读取这些页时再将它们从磁盘中加载到内存。

磁盘

DSK 列形貌磁盘运用状况:

  • vda: 该列为磁盘装备名,每一个装备具有一行
  • busy: 装备处置惩罚IO要求的时候占比
  • read: 监控周期内读要求数
  • write: 监控周期内写要求数
  • KiB/r: 每次读要求的均匀数据量
  • KiB/w: 每次写要求的均匀数据量
  • MBr/s: 每秒读取的数据量
  • MBw/s: 每秒写入的数据量
  • avq: io 行列的均匀长度
  • avio: 单次读写要求须要的毫秒数

收集

收集层平常包括 transport、network、 eth 和 lo 行, 离别示意传输层、收集层、以太网(数据链路层)和当地回环的监控目标。

  • tcpi/udpi/ipi: 吸收的 tcp/udp/ip 数据包
  • tcpo/udpo/ipo : 发出的 tcp/udp/ip 数据包
  • tcpao: 主动竖立的tcp连接数(active open)
  • tcppo: 被动竖立的tcp连接数(passive open), 即经由过程 listen() 竖立的连接数
  • tcprs: tcp 重传次数
  • tcpie: 读取时发作毛病的次数

历程列表

历程列表有多个视图离别展现差别方面的数据:

  • 默许视图(Generic information): 按G键回到默许视图
  • 内存视图(Memory information): 按M键进入内存视图,显现历程的内存占用状况
  • 敕令行视图(Command Line information): 按C键进入敕令行视图,显现历程启动时细致敕令行参数
  • 调理器视图(Scheduling information): 按S键进入视图,显现线程调理、CPU运用和运转统计
  • 磁盘视图(Disk information): 按D键进入视图,显现历程的磁盘IO运用状况
  • 收集视图(Network information): 按N键进入视图,显现历程的收集IO运用状况

atop 默许展现过去10s内状态发作变化的历程,按下A键能够检察悉数历程。

默许视图

默许视图展现经常使用的监控项:

  • PID: 历程ID
  • SYSCPU: 在内核态下运用CPU时候
  • USERCPU: 在用户态下运用CPU时候
  • VGROW: 过去一个监控周期内历程的假造内存空间增进,包括malloc()分派内存、运用同享内存以及free()开释内存形成的空间变化
  • RGROW: 过去一个监控周期内历程常驻内存空间(resident memory)增进, 即历程内存空间中驻留在物理内存中未被逐出到SWAP分区的部份。
  • RUID, EUID, SUID: 启动历程的UID
    • RUID: 登录时的用户ID
    • EUID: Effective Uid。平常EUID=RUID, setuid 或 sudo 等指令能以另一个用户身份执行敕令,这个被“代办”的用户即为 Effective User。
  • EXC: 历程退出时的返回码
  • THR: 历程中的线程数
  • S: 历程状态,与ps敕令的历程形貌符雷同

简朴引见一下历程状态

  • R: Runing
  • S: sleeping interruptible 守候某个事宜
  • D: sleeping non-interruptible 平常在守候IO
  • Z: Zombie 僵尸历程
  • E: 历程在上个监控周期内退出
  • T: TASK_STOPPED 或 TASK_TRACED 状态
    • TASK_STOPPED: 历程收到 SIGSTOP 信号进入停息状态
    • TASK_TRACED: 历程进入停息状态守候跟踪它的历程,比方历程被 gdb 的断点停息

内存视图

Linux 体系监控东西 atop IT教程 第2张

按M键能够进入内存视图检察历程的内存运用状况:

  • MINFLT: 历程缺页小毛病(minor page fault)的次数
  • MAJFLT: 历程缺页大毛病(major page fault)的次数
  • VSIZE: 假造内存空间的总大小
  • RSIZE: 常驻内存(resident memory)的总大小
  • VGROW: 假造内存空间在上个监控周期的增进
  • RGROW: 假造内存空间在上个监控周期的增进
  • MEM: 物理内存运用占比

在 Linux 的内存治理体系中须要读取磁盘才处理缺页中断称为大毛病(Major Page Fault), 不须要读取磁盘能够处理的缺页中断被称为小毛病(Minor Page Fault)。

平常状况下 MINFLT 是因为频仍分派/接纳大内存块致使的,能够斟酌运用内存池优化程序来削减缺页毛病; MAJFLT 是因为物理内存不足致使。

调理视图

Linux 体系监控东西 atop IT教程 第3张

按S键能够进入调理视图(Scheduling View)检察历程运转和CPU状况:

  • TRUN: running 状态的线程数
  • TSLPI: sleeping interruptible 状态线程数
  • TSLPU: 示意 sleeping uninterruptible 状态历程数
  • PILI: 调理战略
  • PRI,NICE: 优先级,PRI+NICE越低优先级越高
  • CPU: CPU 运用时候占比

监控效劳

除了检察当前的状态外,atop 还能够效劳体式格局运转在背景监控并纪录体系状态。

运用 service atop startsystemctl start atop 敕令启动atop监控效劳。

atop 默许将数据保存在/var/log/atop目录下,10 分钟收集一次,保存近来28天的数据。上述设置能够在 /etc/atop/atop.daily 文件中举行修正。

运用 atop -r <filename> 敕令读取日记文件。按t键向前翻页,T键向后翻页,b键跳转到指定时候,时候花样为hh:mm。

参与评论