linux服务器性能监控需聚焦cpu、内存、i/o、负载四大维度:cpu看%us/%sy/iowait、cs及中断分布;内存盯available、si/so与缺页;i/o重在await-svctm差值、iotop定位进程;负载高而cpu低时速查i/o与dmesg。

监控系统调优各项核心指标的实时变化,关键不是“全量采集”,而是按需分层、聚焦瓶颈、快速响应。重点盯住 CPU、内存、I/O、负载四大维度中真正影响业务延迟和吞吐的那几个信号,配合轻量级命令即时观察,避免过度依赖图形化工具拖慢诊断节奏。
CPU:看状态分布 + 切换频率 + 中断热点
用户态(%us)高,说明应用本身吃资源;系统态(%sy)持续超 20%,要查系统调用或驱动;iowait 高于 20%,直接转向磁盘或网络排查。
上下文切换(cs)每秒超 5 万次就值得警惕,用 vmstat 1 实时看,再用 pidstat -wt 1 定位是哪个进程在疯狂切。
中断是否偏斜?运行 cat /proc/interrupts 看网卡、定时器等中断是否集中在一个核上;软中断堆积?查 /proc/softirqs,net_rx 或 timer 过高,就该考虑 RPS 或调整内核 tick。
内存:盯 available 而非 free,看缺页与换页动向
free -h 输出里的 available 才是真实可用内存。低于总内存 10% 就亮黄灯;若 si/so(swap in/out)在 vmstat 1 中持续非零,说明物理内存已撑不住。
主缺页(majflt)频繁出现?结合 perf record -e page-faults sleep 10 && perf report 看是 mmap 映射慢、还是大页未启用。
内核内存异常增长?slabtop 按 c 排序,重点关注 dentry、inode、skbuff 等项。
磁盘与网络 I/O:不只看利用率,要看等待链路
iostat -x 1 中:%util 接近 100% 是设备饱和信号;但更关键的是 await > svctm——差值越大,排队越严重。
谁在发请求?iotop -oP 只显示实际 I/O 进程;pidstat -d 1 查每秒读写字节数。
网络侧,ifstat -t 1 看吞吐突增;ss -ti 查单连接重传、rtt 波动;软中断高时,cat /proc/net/softnet_stat 第二列(dropped)非零,说明收包处理不过来。
系统负载与调度行为:识别“假空闲”与真实阻塞
负载平均值(uptime 或 cat /proc/loadavg)高但 CPU 使用率低?立刻查 I/O:iostat、iotop、dmesg -T | tail 看是否有磁盘超时或 NVMe reset。
实时任务抖动?先跑 cyclictest -l 10000 -m -n -i 1000 -q 看延迟分布,再用 trace-cmd record -e sched:sched_switch,sched:sched_wakeup -e irq:irq_handler_entry -e softirq:softirq_entry -r 10 抓 10 秒调度链路,最后用 KernelShark 打开分析唤醒到运行的延迟缺口在哪——是被硬中断打断?软中断积压?还是锁竞争卡住?











