2. 基础设施监控基础

在构建AI算力集群的全栈监控体系时,基础设施层是最先需要被“看见”的部分。无论是承载大模型训练的GPU服务器,还是提供参数存储的高速NVMe磁盘阵列,其底层都依赖CPU、内存、磁盘和网络这四大基础资源。本章聚焦于这些资源的监控原理、关键指标、常用工具以及常见误区,为后续理解GPU、RDMA等高级监控打下坚实基础。

核心原理:从“指标采集”到“状态判定”

基础设施监控的本质,是对操作系统内核与硬件设备暴露的计数器(Counter)和状态文件进行周期性采样,再通过阈值或趋势算法判定资源是否健康。Linux系统下,/proc与/sys文件系统是主要数据源。例如,/proc/stat记录CPU时间片,/proc/meminfo反映内存使用,/proc/diskstats提供块设备I/O统计,而网络数据则来自内核网络协议栈的计数器。

监控系统通常采用“拉取”或“推送”模型。Prometheus采用拉取模型,定期从节点上的exporter(如node_exporter)抓取指标;而Telegraf等代理则主动推送数据到时序数据库。无论哪种方式,都需要注意采样周期与指标语义。例如,CPU使用率是“增量除以时间差”计算出的速率,而非瞬时值;磁盘I/O的await指标是平均服务时间,不能与队列长度混为一谈。

关键理解:监控指标分为“利用率”(Utilization)、“饱和度”(Saturation)和“错误”(Errors)三类。利用率反映资源被使用的比例,饱和度反映排队等待的程度,错误则直接指示故障。例如,CPU利用率高不一定饱和,只有运行队列(runnable)长度持续超过CPU核数时才算饱和。磁盘的iowait高可能意味着I/O饱和,但也可能是CPU等待锁导致的假象。

四大资源核心指标与工具

CPU监控

CPU监控的核心指标包括:user、system、iowait、steal、idle以及负载均值(load average)。对于AI集群,还需关注context switches(上下文切换)和run queue长度,因为频繁的线程切换会显著影响训练性能。

常用工具:top/htop用于实时查看,mpstat -P ALL查看每核使用率,pidstat定位进程级CPU消耗,perf用于剖析CPU缓存命中率与分支预测失败。在集群场景下,node_exporter暴露的node_cpu_seconds_total指标是Prometheus告警的基础。

# 查看CPU运行队列与上下文切换
vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 8123456  1234 567890    0    0    12    34 1234 5678  8  2 89  1  0

其中r列表示运行队列长度,若持续大于CPU核数,则说明CPU饱和。

内存监控

内存监控不能只看free命令的剩余值。Linux会尽量利用空闲内存做页缓存(page cache),因此available才是真正可分配的内存。关键指标包括:total、used、buff/cache、available、swap used以及OOM Killer事件。对于AI训练,还需关注HugePages使用情况,因为大页内存能显著降低TLB miss。

工具方面,free -h快速查看,/proc/meminfo提供详细数据,sar -r记录历史趋势,valgrind或heaptrack用于定位内存泄漏。在Kubernetes环境中,kubelet暴露的container_memory_working_set_bytes是容器内存监控的标准指标。

常见误区:当内存不足时,系统开始使用swap,但swap的读写速度远低于物理内存。监控中若发现si(swap in)和so(swap out)持续非零,说明内存已严重超卖,此时应优先排查进程内存占用,而非盲目扩容。

磁盘监控

磁盘监控分为容量与性能两个维度。容量指标包括df -h显示的文件系统使用率、inode使用率;性能指标则包括IOPS(每秒读写次数)、吞吐量(MB/s)、await(平均I/O响应时间)、%util(设备繁忙百分比)以及队列深度。对于AI集群,模型检查点(checkpoint)写入和数据集读取对磁盘性能要求极高。

工具推荐:iostat -x 1查看详细性能,iotop定位进程级I/O,du/ncdu分析空间占用,smartctl检查磁盘健康状态(SMART信息)。在分布式文件系统(如Lustre、GPFS)场景下,还需监控元数据服务器的负载。

# iostat 输出示例
Device            r/s     w/s   rkB/s   wkB/s  await  %util
nvme0n1         120.0   45.0  1024.0  2048.0   2.50  45.0

%util接近100%并不一定意味着磁盘饱和,还需结合await判断。若await远高于基准值(如SSD应小于1ms),则说明I/O路径存在瓶颈。

网络监控

网络监控指标包括带宽利用率、吞吐量、丢包率、重传率、TCP连接数以及RTT(往返时延)。在AI集群中,东西向流量(GPU间通信)远大于南北向流量,因此需要特别关注网卡(NIC)的rx/tx字节数、drop和errors计数。对于RDMA网络,还需监控ibstat或perftest提供的链路速率与重传计数。

常用工具:sar -n DEV查看历史流量,nload/bmon实时带宽,ss -s查看TCP连接状态汇总,ethtool -S查看网卡硬件计数器,tcpdump抓包分析。在Kubernetes中,cni插件(如Calico)会暴露container_network_receive_bytes_total等指标。

资源核心指标推荐工具告警阈值建议
CPU使用率、运行队列、上下文切换top, mpstat, pidstat使用率>85%持续5分钟
内存available, swap使用, OOM事件free, sar, /proc/meminfoavailable<10%总内存
磁盘IOPS, await, %util, 容量iostat, iotop, df%util>80%且await>20ms
网络带宽, 丢包率, 重传率, RTTsar, nload, ethtool丢包率>0.1%或重传率>1%

方法流程:构建基础监控的标准化步骤

在AI算力集群中部署基础监控,建议遵循以下流程:

  1. 盘点资源清单:梳理所有物理机/虚拟机的CPU型号、核数、内存大小、磁盘类型(SSD/NVMe/HDD)、网卡速率(25GbE/100GbE/RoCE)。
  2. 确定采集粒度:默认采集频率为15秒,关键性能指标(如GPU所在节点的网络流量)可缩短至5秒。历史数据保留策略建议:原始数据7天,聚合数据30天。
  3. 部署采集代理:在每台节点上运行node_exporter(Prometheus生态)或Telegraf,并配置好认证与端口安全。
  4. 建立告警规则:基于上述表格中的阈值,设置多级告警(Warning/Critical)。注意避免“抖动”告警,可设置持续时间(如持续3个周期)。
  5. 验证与调优:使用压测工具(如stress-ng、fio、iperf3)人为制造负载,验证监控数据是否准确、告警是否触发。

案例:一次“CPU高但负载低”的排障

某训练集群反馈任务运行缓慢,监控面板显示所有节点CPU使用率均超过90%,但负载均值(load average)仅为2(节点为64核)。初步判断CPU资源充足,但训练速度依旧上不去。

进一步排查发现:mpstat -P ALL显示所有核心的%usr均高,但vmstat中的cs(上下文切换)高达每秒20万次。使用pidstat -w定位到是某个数据加载进程在频繁创建和销毁线程。最终确认是数据预处理代码使用了multiprocessing池,但池大小设置过大,导致线程切换开销远大于计算收益。优化后,CPU使用率降至60%,训练速度反而提升了30%。

复盘要点:CPU使用率高并不等于CPU是瓶颈。必须结合运行队列长度、上下文切换速率以及IPC(每周期指令数)综合判断。在AI场景中,数据加载(DataLoader)进程的CPU消耗往往被误判为计算瓶颈。

误区与复盘

  • 误区一:只看平均值。CPU平均使用率低,但可能存在单核打满(如中断处理绑定在CPU0)。应使用mpstat -P ALL查看每核分布。
  • 误区二:忽略内存回收机制。当kswapd进程持续占用CPU时,说明内存回收压力大,此时free命令显示的available可能仍较高,但性能已下降。
  • 误区三:磁盘%util=100%即故障。对于NVMe SSD,%util达到100%可能仍能维持极低延迟;应结合await和svctm判断。
  • 误区四:网络丢包只查物理链路。在Overlay网络(如VXLAN)中,丢包可能发生在宿主机iptables规则或虚拟交换机(Open vSwitch)层面,需检查drop计数。

基础设施监控是AI集群可观测性的地基。只有准确理解CPU、内存、磁盘、网络四类资源的指标语义,并熟练运用对应的工具链,才能在故障发生时快速定位根因。下一层级的监控——如GPU利用率、显存带宽、RDMA重传——都建立在这些基础能力之上。建议读者在真实环境中反复练习top、iostat、sar的组合使用,形成“指标-现象-根因”的快速映射直觉。