找回密码
立即注册
搜索
发回帖 发新帖

5368

积分

0

好友

689

主题
发表于 2 小时前 | 查看: 7| 回复: 0

Linux性能分析工具全景图:CPU、内存、磁盘IO、网络工具分类

系统响应变慢,到底该从哪里下手排查?CPU、内存、磁盘 I/O、网络,每个维度都对应一堆工具。本文把 Linux 性能分析常用的四大类工具做了梳理,覆盖从快速定位到深入剖析的完整排查链路。

性能分析全景图

性能分析可以从四个维度入手:

┌─────────────────────────────────────────────────┐
│              性能分析工具全景                   │
├─────────────┬─────────────┬───────────┬─────────┤
│    CPU      │    内存     │  磁盘IO   │  网络   │
│  (计算力)   │  (存储容量) │  (存储IO) │ (通信)  │
└─────────────┴─────────────┴───────────┴─────────┘

一、CPU 性能工具

核心指标:CPU 使用率、上下文切换、平均负载、Cache 命中率。

工具 功能 常用场景
top 实时查看系统整体 CPU、内存及进程资源 快速定位哪个进程吃 CPU
htop top 的增强版,交互界面更友好 日常系统监控
vmstat 虚拟内存统计,含上下文切换、运行队列 查看整体负载和切换频率
mpstat 统计每个 CPU 核心的使用率 判断多核 CPU 负载是否均衡
pidstat 查看每个进程的 CPU 使用率(用户态/内核态) 精确定位进程 CPU 消耗
sar 系统活动报告,可收集历史数据 回溯历史性能问题
perf 性能事件剖析,函数级热点分析 深入分析 CPU 消耗在哪里

常用命令:

# 实时查看 CPU 使用
top

# 每秒采样一次,共5次,查看上下文切换等
vmstat 1 5

# 查看每个 CPU 核心的使用情况
mpstat -P ALL 1

# 查看每个进程的 CPU 使用(每秒刷新)
pidstat -u 1

# 查看所有 CPU 的中断统计
cat /proc/interrupts

二、内存性能工具

核心指标:已用/可用内存、进程内存、SWAP、缺页异常。

工具 功能 常用场景
free 查看系统整体内存使用 快速看内存够不够
vmstat 虚拟内存统计,si/so 可观察交换情况 判断是否在使用 swap
top / htop 查看进程级内存使用 定位哪个进程吃内存
ps 进程快照,含 VSZ/RSS 脚本化检查内存
pidstat -r 统计进程内存使用 观察进程内存变化趋势
pmap 查看进程内存映射详情 分析进程内存分布
slabtop 查看内核 slab 分配器使用情况 内核内存泄漏排查
/proc/meminfo 查看详细内存信息 获取全部内存指标

常用命令:

# 查看内存使用(人类可读)
free -h

# 查看进程内存使用(按内存排序)
top   # 按 M 键切换内存排序

# 查看某个进程的内存映射
pmap -x 1234

# 查看内核 slab 使用
slabtop

# 每秒查看内存和 swap 变化
vmstat 1

三、磁盘 I/O 性能工具

核心指标:IOPS、吞吐量、响应时间、使用率。

工具 功能 常用场景
df 查看磁盘空间使用情况 磁盘是不是快满了
du 统计目录/文件大小 找到哪个目录占用空间最多
iostat 查看磁盘 I/O 统计,含使用率、吞吐量 判断磁盘是否成为瓶颈
iotop 实时显示进程 I/O 使用情况 谁在疯狂读磁盘
pidstat -d 统计进程级 I/O 分析单个进程的磁盘读写
sar -d 查看磁盘 I/O 历史统计 回溯 I/O 峰值
dd 简单的磁盘读写速度测试 快速压测磁盘性能

常用命令:

# 查看磁盘空间
df -h

# 查看当前目录大小
du -sh .

# 每秒查看磁盘 I/O(-x 显示扩展信息)
iostat -xz 1

# 实时查看哪个进程读/写磁盘最多
iotop

# 测试磁盘写速度
dd if=/dev/zero of=test bs=1M count=1024 oflag=direct

四、网络性能工具

网络性能工具重点围绕吞吐量、连接数、丢包和延迟这几项指标展开。

工具 功能 常用场景
ifconfig / ip addr 查看网卡配置和状态 查看网卡信息、IP 地址
sar -n DEV 统计网络接口流量 统计网卡吞吐量
netstat 查看网络连接、路由、接口统计 查看连接状态
ss socket 统计,可作为 netstat 替代 高效查看连接
iftop 实时监控网络流量,按连接展示 找到谁在占带宽
nethogs 按进程统计网络流量 定位哪个进程用网最多
ping 测试网络连通性和延迟 判断网络通不通、延迟多少
traceroute 追踪路由路径 确认网络卡在哪一跳
tcpdump 网络抓包分析 深入分析协议问题
ethtool 查看网卡驱动和硬件配置 查看网卡速度、驱动信息

常用命令:

# 查看网卡信息
ip addr show

# 查看所有 TCP 连接
ss -tlnp     # 监听的 TCP 端口
ss -tanp     # 所有 TCP 连接

# 实时查看网络流量(需安装)
iftop

# 按进程查看网络流量(需安装)
nethogs

# 抓包分析
tcpdump -i eth0 -w capture.pcap
tcpdump -i eth0 port 80 -n

# 测试网络延迟
ping -c 10 192.168.1.1

# 测试带宽
iperf3 -s            # 服务端
iperf3 -c server_ip  # 客户端

五、性能分析思路

🔍 从宏观到微观:

  1. 第一步:整体概览 → top / vmstat
  2. 第二步:定位维度 → CPU 高?内存紧?IO 忙?网络卡?
  3. 第三步:定位进程 → pidstat / iotop / nethogs
  4. 第四步:深入分析 → perf / strace / tcpdump / 火焰图
  5. 第五步:优化验证 → 修改后再测,对比前后数据

💡 常见对应关系:

现象 可能的瓶颈 先看什么工具
系统响应慢 CPU / 内存 / IO top → vmstat
CPU 使用率高 计算密集型进程 top → pidstat → perf
CPU iowait 高 磁盘 I/O 瓶颈 iostat → iotop
内存不足 内存泄漏 / 缓存不足 free → top → slabtop
网络慢 带宽 / 丢包 / 延迟 iftop → ping → tcpdump

📚 驱动调试系列:

  • 第01篇:printk 内核打印
  • 第02篇:dynamic debug 动态打印
  • 第03篇:内核调用栈调试
  • 第04篇:休眠唤醒 standby 调试
  • 第05篇:access_ok 地址检测
  • 第06篇:分支预测优化
  • 第07篇:procfs 虚拟文件系统
  • 第08篇:debugfs 调试文件系统
  • 第09篇:devmem 直接读写寄存器
  • 第10篇:Linux 性能工具大全 → 当前
  • 第11篇:CPU 使用率详解
  • 第12篇:perf 性能优化



上一篇:Ubuntu 安装 Docker 教程:镜像容器操作与 ARM64 交叉编译镜像实战
下一篇:为什么国内公司宁愿改开源 JDK,也不愿从头做一门编程语言?
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-10-19 10:50 , Processed in 0.070287 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表