当前位置:首页>Linux>Linux 开发者最常用的 24 个性能工具

Linux 开发者最常用的 24 个性能工具

  • 2026-09-07 20:30:02
Linux 开发者最常用的 24 个性能工具

—— 从系统瓶颈到 DPDK 调优,一文全掌握

在 Linux 的世界里,性能分析是一名开发者、运维工程师、架构师的“看家本领”。不论你是调优大规模服务器、优化网络转发性能(如 DPDK)、还是分析系统卡顿问题,各种性能工具都是你最可靠的伙伴。

本文带你深度掌握 24 个最常用、最有价值的 Linux 性能工具 —— 包括 CPU、内存、磁盘、网络、内核、容器等多个方面。并附赠:DPDK 系统调优最佳实践


🧭 目录

  1. ⭐ Linux 性能分析的基础认知

  2. ⭐ 24 大核心性能工具介绍(按领域分类)

  3. ⭐ 工具对比表(CPU/内存/网络/IO/内核)

  4. ⭐ 性能分析思维:如何定位瓶颈?

  5. ⭐ DPDK 调优专章:NUMA、Hugepage、isolcpus、RPS/XPS

  6. ⭐ 总结:构建你自己的性能分析方法论


🥇 1. Linux 性能分析的基础认知

Linux 的性能工具虽然多,但它们可以归类为 5 大方向:

分类
关注点
核心问题
CPU
调度、上下文切换、热点函数
CPU 在忙什么?谁最消耗?
内存
内存占用、缺页、NUMA
为什么内存不够/失衡?
IO(磁盘)
IOPS、延迟、队列深度
为什么磁盘慢?
网络
带宽、丢包、队列、IRQ
网络去哪儿了?瓶颈在哪里?
内核/系统
调度、锁、抢占、软中断
为什么系统卡顿?

👇 接下来我们正式进入全工具讲解。


🏆 2. Linux 最常用的 24 个性能工具(深度解读)


🔥 一、CPU 性能工具(8 个)


① top / htop — CPU 整体使用率

🧭 定位:系统是否真的“忙”

最常用的资源查看工具,适合快速评估系统状态:

  • load average

  • CPU 使用率(user/system/idle)

  • 进程占用

  • 上下文切换(htop 可显示)

👉 适用场景

  • 初步查看系统是否有瓶颈

  • CPU 是否被 IRQ 或 kernel 占用


② mpstat — 多核 CPU 利用率分析

🧭 定位:每个 CPU 核心负载是否均衡

mpstat -P ALL 1

可以看出:

  • 每个核的 user/sys/irq/softirq 的占比

  • 是否存在“某几个核特别忙”的问题

  • 对 DPDK 观测隔离核尤其重要


③ pidstat — 查看某个进程的 CPU/上下文切换

pidstat -w -p <pid>

可以定位:

  • 某个线程的调度开销大不大

  • 进程上下文切换是不是异常多(常见瓶颈!!)


④ mpstat / sar(CPU 子集)— 历史 CPU 分析

sar -u 1可跟踪历史 CPU 变化趋势。


⑤ perf — 函数级 CPU 火焰图、热点分析(最强工具)

🔥 Linux 性能分析之王

能做的事情非常多:

  • 采样火焰图

  • 内核/用户态热点函数

  • 分析 cache-miss、分支预测失败

  • 分析软中断开销

示例:

perf top -C 1perf record -F 99 -g -- sleep 10perf report

⑥ ftrace — 内核追踪

可以追踪:

  • 调度延迟

  • 内核函数执行流程

  • ISR、中断处理流程

适合分析:

  • 系统卡顿

  • 内核锁导致延迟


⑦ trace-cmd

比 ftrace 更易用的封装工具。


⑧ turbostat(x86 专用)

查看 CPU C-state/P-state适合分析 CPU 节能导致的性能问题。



🔥 二、内存分析工具(5 个)


⑨ free / /proc/meminfo

基础内存查看工具。

重要指标:

  • available memory

  • buffers/cached

  • slab

  • hugepages 使用情况(DPDK 必看)


⑩ vmstat — 内存 + IO + 调度 三合一

vmstat 1

重要字段:

  • si/so → swap 交换(系统被打爆)

  • cs → 上下文切换

  • bi/bo → IO


⑪ slabtop — 内核对象内存统计

可查看内核是否因为某个对象耗尽内存(如 TCP skbuffer)。


⑫ numastat — NUMA 失衡分析

DPDK 调优重点工具。

可查看:

  • 内存是否跨 NUMA

  • numa_miss / numa_foreign 是否过高


⑬ smem / pmap — 进程内存分析



🔥 三、磁盘/IO 工具(4 个)


⑭ iostat — IO 延迟/IOPS 查看

iostat -x 1

关注字段:

  • r/s, w/s

  • await(延迟)

  • util(设备利用率)


⑮ pidstat -d — 单进程 IO

可定位“哪个进程疯狂 IO”。


⑯ blktrace — 低层级 IO 事件

用于深入分析 IO 队列行为。


⑰ fio — 压测工具

常用于 SSD/HDD 性能测试。



🔥 四、网络性能工具(5 个)


⑱ ss — 更高级的 netstat

ss -sss -tulnp

能看到 socket、队列、TCP 状态等。


⑲ ethtool — 网卡能力、队列、中断信息

DPDK 需要关闭 RPS/XPS/TSO 之前常查:

ethtool -S eth0ethtool -l eth0ethtool -k eth0

⑳ tcpdump — 抓包排障


㉑ nstat / dropwatch — 丢包分析

可查看:

  • 网卡层丢包

  • 内核层丢包(skb 失败)

  • DPDK 驱动之前丢包位置


㉒ nicstat / iperf

网络带宽测试工具。



🔥 五、系统与内核工具(5 个)


㉓ dstat — 综合监控

CPU + 内存 + IO + 网络 全部合一。


㉔ ps / pstree — 进程和线程结构

配合 perf、pidstat 排查问题。


㉕ strace — 系统调用跟踪

适用:

  • 为什么程序卡住?

  • 某行代码为什么执行慢?

  • 程序被哪个 syscall 阻塞?


㉖ lsof — 文件句柄追踪

可查看:

  • 某程序是否泄漏文件句柄

  • 哪个进程占用了某个端口


㉗ sysctl — 修改系统内核参数

用于性能优化,如:

  • 网络队列长度

  • 调度器参数

  • 内核内存管理参数


🧩 3. 工具对比图


🔶 按业务场景分类(建议保存)

场景
最常用工具
CPU 热点分析
perf, ftrace, mpstat
内存泄漏/异常
smem, vmstat, slabtop
网络丢包
ethtool, nstat, dropwatch
系统卡顿
perf, trace-cmd, vmstat
内核分析
ftrace, trace-cmd
进程调试
strace, lsof, pidstat

🔶 领域分布图

🟦 CPU🟥 内存🟨 IO🟩 网络🟪 内核

CPU:top, mpstat, pidstat, perf, turbostat内存:free, vmstat, numastat, smem, slabtopIO:iostat, pidstat -d, blktrace, fio网络:ethtool, ss, nstat, dropwatch, iperf内核:ftrace, trace-cmdps, strace, sysctl

🚀 4. 性能分析思维模型(非常重要)

99% 的故障能用以下 5 步定位:


① 先判断“哪一类资源”忙?

  • CPU?

  • 内存?

  • 网络?

  • 磁盘?

工具:top、vmstat、iostat、sar


② 找到“哪个进程”在消耗资源?

工具:ps, pidstat, top


③ 找到“哪个函数/模块”最耗时?

工具:perf、ftrace、火焰图


④ 判断是否是内核瓶颈

工具:trace-cmd、ftrace


⑤ 定位到底是谁导致业务变慢

  • TCP 排队?

  • 内存 NUMA 跨节点?

  • 磁盘延迟?

  • CPU 被中断打满?

  • 程序逻辑 bug?


🚀 5. DPDK 专用调优指南(含 NUMA/IRQ 优化)


① CPU 隔离 isolcpus/nohz_full

isolcpus=1-10 nohz_full=1-10 rcu_nocbs=1-10

✔ 避免内核调度干扰✔ 减少调度开销✔ 配合 taskset 绑定 DPDK lcore


② Hugepage(必须)

DPDK 依赖大页减少 TLB miss:

echo 4096 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

③ 关闭 IRQ Balance

systemctl stop irqbalance

④ 关闭 RPS/XPS

echo 0 > /sys/class/net/eth0/queues/rx-0/rps_cpus

⑤ NUMA 绑定

--lcores "1@(0) 2@(1) 3@(1)"

⑥ BIOS 调优

  • 关 C-State

  • 关 HT

  • 关节能策略

  • 开大缓存模式


⑦ 调整 UIO / VFIO 驱动

DPDK 场景下:

  • vfio-pci(安全)

  • igb_uio(性能更高)


🔚 6. 总结:构建自己的性能分析体系

Linux 性能分析不是“单个工具的技巧”,而是一套完整的体系。

最新文章

随机文章