当前位置:首页>Linux>Linux 性能分析与优化工具全景图

Linux 性能分析与优化工具全景图

  • 2026-10-11 08:32:44
Linux 性能分析与优化工具全景图

Linux 性能分析与优化工具全景图

01 系统资源实时观测

工具
核心能力
典型场景
btop / bpytop
现代化 top,支持鼠标、主题、历史曲线
替代 top/htop 日常巡检
glances
跨平台全能监控,Web 模式、API 输出、告警阈值
一台终端看全栈资源
nmon
AIX/Linux 老牌采集器,一键输出 CSV/图表
长期数据采集与报表生成
tiptop
指令级 top,展示每条指令的 IPC、缓存缺失
CPU 微架构级瓶颈定位
smem
按 PSS/USS 统计进程真实内存占用
解决 top 虚高问题,精准找内存大户
pmap -x
进程内存映射明细(RSS/Dirty/Anonymous)
排查内存泄漏、共享库占用
numastat
NUMA 节点命中、本地/远程内存分布
NUMA 架构性能劣化诊断
turbostat
CPU 电源状态(C-state/P-state)、温度、功耗
服务器降频、过热、省电模式排查
powertop
电源消耗排行与调优建议
笔记本/边缘节点续航优化
irqtop
实时中断分布与 CPU 亲和性
中断风暴、单核被打爆
nethogs
按进程显示实时网络带宽占用
快速定位“谁在用带宽”
iftop
按连接对显示实时流量(源 IP ↔ 目的 IP)
网络流量异常排查
bmon
网卡流量可视化 + 详细统计(丢包、错误、压缩)
网络吞吐与质量监控
collectl
替代 sar 的全能采集器,支持子系统细粒度
历史数据长期归档
nicstat
网卡利用率、吞吐、错误、冲突
判断网卡是否饱和
dstat --full
叠加磁盘/网络/中断/内存等多维视图
一站式资源看板

eBPF 实时工具(bcc-tools / bpftrace 单行)

  • • runqlat:调度延迟分布(判断 CPU 饱和还是调度问题)
  • • runqlen:CPU 运行队列长度
  • • biolatency:块设备 IO 延迟直方图
  • • biotop:按进程实时 IO 排行
  • • ext4slower / xfsslower:文件系统慢操作追踪(>X ms)
  • • filetop:文件读写实时排行
  • • cachestat / cachetop:页缓存命中率
  • • offcputime:Off-CPU 时间火焰图(阻塞分析)
  • • syscount:系统调用频次统计
  • • profile:高频 CPU 采样(10ms 级火焰图)

02 应用级剖析与追踪

工具
核心能力
典型场景
perf stat
硬件 PMU 计数器(cycles、instructions、cache-miss、branch-miss)
微架构级性能量化
perf sched
调度延迟、调度链、唤醒关系
实时性抖动、调度Bug
perf mem
内存访问采样(Load/Store、地址、延迟)
内存瓶颈、伪共享
perf c2c
缓存行竞争(Cache Coherency)检测
多线程伪共享优化
perf lock
内核锁竞争分析
内核级锁热点
perf probe
动态添加探针(内核/用户函数)
无源码插桩的临时追踪
uftrace
用户态函数调用图追踪(支持 C/C++/Rust/Go)
应用函数级耗时分析
sysdig
系统调用捕获 + 过滤语法 + 容器感知
容器内问题追踪
csysdig
sysdig 的交互式 TUI 版本
交互式系统调用排查
auditd + ausearch
内核审计框架,记录文件/系统调用/权限
安全审计与性能事件关联
trace-cmd + kernelshark
ftrace 采集与图形化回放
内核事件时序分析
Intel VTune
商业级全栈剖析(CPU/GPU/内存/IO)
深度微架构优化
AMD uProf
AMD 处理器专用剖析
AMD 平台性能调优

语言级剖析工具

  • • Java:async-profiler(低开销火焰图)、arthas(阿里开源,线程/内存/JVM 全能)、jcmd、jstat、jmap
  • • Go:go tool pprof、go tool trace、fgprof(全采样,含 Off-CPU)
  • • Python:py-spy(无需修改代码的采样器)、austin、scalene
  • • Node.js:clinic.js、0x、node --prof
  • • Rust:cargo flamegraph、inferno
  • • 通用火焰图:speedscope(Web 可视化)、hotspot(Linux GUI)

调试与重放

  • • rr (Mozilla):确定性记录与重放,支持反向执行
  • • gdb + perf:源码级热点断点与采样结合

03 压力与基准测试

工具
核心能力
典型场景
fio
最全面的磁盘 IO 基准(同步/异步、多种引擎、混合读写)
存储选型与调优
iozone
文件系统基准(覆盖多种文件大小与模式)
文件系统对比
bonnie++
文件系统元数据与大文件吞吐
传统文件服务器基准
filebench
可编程文件系统工作负载(模拟邮件/Web/数据库)
真实业务负载模拟
vdbench
企业级存储基准(多主机、多线程、校验数据)
SAN/NAS 验收测试
pgbench
PostgreSQL 专用 TPC-B 基准
数据库调优
mysqlslap
MySQL 内置压力测试
MySQL 并发测试
hammerdb
工业级数据库负载(TPC-C/TPC-H)
数据库性能验收
redis-benchmark
Redis 基础压测
Redis 基线性能
memtier_benchmark
Redis/Memcached 高级压测(多线程、流水线、多种数据分布)
缓存集群压测
wrk2
恒定吞吐量 HTTP 压测(Coordinated Omission 修正)
准确测量延迟分布
k6
现代 JavaScript 脚本化负载测试
CI/CD 集成压测
iperf3
 / qperf
TCP/UDP/RDMA 吞吐与延迟
网络基线与排查
flowgrind
TCP 流级测试(RTT、吞吐量、阻塞窗口)
TCP 栈调优
stream
内存带宽基准(Copy/Scale/Add/Triad)
内存通道性能验证
stressapptest
内存/CPU/磁盘综合压力(带数据校验)
硬件稳定性测试
hyperfine
命令行基准(自动预热、多次运行、统计检验)
脚本/命令性能对比

04 参数与配置优化

工具
核心能力
典型场景
ulimit / prlimit
进程资源限制(fd、栈、内存、CPU)
高并发服务 fd 耗尽
cgcreate / cgset / cgexec
cgroup v1 资源隔离(CPU/内存/IO/网络)
传统容器资源限制
systemctl set-property
systemd 托管服务的 cgroup v2 限制
现代系统资源管控
systemd-cgtop
cgroup 资源实时排行
容器/服务资源监控
chrt
实时调度策略设置(FIFO/RR)
低延迟任务调度
schedtool
调度策略与亲和性综合设置
复杂调度场景
numad
自动 NUMA 亲和性守护进程
动态 NUMA 优化
irqbalance
 / smpaffinity
中断自动/手动分散到多核
网卡中断单核瓶颈
ethtool -G/-C/-K
网卡环缓冲、中断合并、硬件卸载
网络吞吐与 CPU 减负
tc (Traffic Control)
流量控制、队列规则、网络模拟(netem)
带宽限制、延迟注入、丢包模拟
sysctl vm. / kernel.
 / net.***
内核参数调优(脏页、TCP 缓冲、调度器)
系统级性能调优
blockdev
块设备刷新、只读设置、队列深度
存储设备控制
tune2fs
ext 文件系统参数调整
ext4 预留块、日志模式
xfs_ 工具集
*
XFS 管理、修复、扩展、调试
XFS 文件系统维护
fstrim
SSD TRIM 操作
SSD 性能与寿命维护
grubby / kernelstub
持久化内核启动参数
内核参数长期生效
kexec
快速重启(跳过 BIOS/UEFI)
生产环境快速切换内核
kdump + crash
内核崩溃转储与分析
宕机根因分析

05 容器与云原生性能

工具
核心能力
典型场景
docker stats
容器实时 CPU/内存/IO/网络
Docker 原生监控
crictl stats
containerd/CRI-O 容器资源
Kubernetes 运行时监控
kubectl top
K8s Pod/Node 资源排行
集群资源概览
cAdvisor
容器资源使用与性能特性暴露
Prometheus 采集源
inspektor-gadget
K8s 节点级 eBPF 工具集(网络/IO/安全)
K8s 深度排查
kubectl-trace
在 K8s 节点运行 bpftrace 脚本
集群节点动态追踪
kubectl-flame
K8s Pod 火焰图一键生成
容器化应用 CPU 剖析
ksniff
K8s Pod 网络抓包
容器网络问题定位
falco
运行时安全与异常检测(基于 eBPF/sysdig)
容器安全与性能事件
tetragon
Cilium 出品的 eBPF 安全可观测
进程执行、文件访问、网络实时告警
kubecost
K8s 成本与资源优化分析
资源浪费治理
node-problem-detector
节点故障检测与上报
节点级异常发现

inspektor-gadget 常用子命令:

子命令
功能
kubectl gadget trace tcp
Pod 级 TCP 事件
kubectl gadget snapshot process
进程快照
kubectl gadget profile block-io
块设备剖析

06 内存深度分析

工具
核心能力
典型场景
smem -R -P
PSS/USS 真实占用,支持比例图
内存占用精确画像
pmap -XX
完整内存映射与标志位
匿名页、文件页、共享页细分
memusage / memusagestat
进程内存使用曲线与峰值
内存增长趋势
valgrind --tool=massif
堆内存详细时间线
C/C++ 堆分配剖析
heaptrack
KDE 出品的堆内存追踪(比 massif 快)
Qt/C++ 内存优化
dhat (valgrind)
堆分配热点与生命周期
分配器效率分析
tcmalloc / jemalloc profiling
现代分配器内置采样
生产环境低开销内存剖析
libefence
内存越界即时崩溃
内存损坏定位
dmalloc
调试型内存分配器
开发阶段泄漏检测
mtrace
glibc 内置 malloc 追踪
轻量级泄漏检查
Intel PCM
处理器内存控制器带宽、通道利用率
硬件级内存带宽瓶颈

07 网络深度诊断

工具
核心能力
典型场景
mtr
合并 ping + traceroute,实时丢包与延迟
网络路径质量诊断
tracepath
无需 root 的 traceroute,自动发现 MTU
MTU 问题排查
hping3
自定义 TCP/UDP/ICMP 包构造
防火墙规则测试、网络探测
nmap / masscan
端口扫描与服务发现
网络资产与连通性
termshark
终端版 Wireshark(TUI)
服务器无 GUI 抓包分析
tshark
Wireshark CLI,支持过滤与统计
自动化抓包分析
tcpflow
TCP 流重组,提取会话内容
应用层明文分析
tcpreplay
重放 pcap 包到网卡
安全测试与性能测试
netsniff-ng
高性能抓包与流量生成
10Gbps+ 网络处理
trafgen
内核级高速包生成
网络设备压力测试
iptraf-ng
交互式网络统计(TCP/UDP/ICMP/OSPF)
实时网络会话监控
vnstat / vnstati
网卡流量长期统计与图表
月度流量报表
nfdump + nfsen
NetFlow/sFlow 采集与分析
大规模网络流量审计
conntrack
连接追踪表查看与清理
NAT/防火墙连接耗尽
ss -tanpi
socket 详细状态(拥塞窗口、RTT、重传)
TCP 连接质量
tc -s qdisc show
队列规则统计(丢包、延迟、发送速率)
QoS 与拥塞控制验证

08 可观测性与持续监控

工具/平台
核心能力
典型场景
Prometheus + node_exporter
时序采集 + 系统指标暴露
基础设施监控标准
Grafana
可视化仪表盘与告警
统一监控界面
Thanos / Cortex / Mimir
Prometheus 长期存储与多租户扩展
大规模集群监控
VictoriaMetrics
高性能、低成本时序数据库
Prometheus 替代后端
InfluxDB + Telegraf
时序存储 + 多插件采集
物联网与系统监控
Loki + Promtail
日志聚合(类 Prometheus 标签)
轻量级日志方案
Jaeger / Tempo / Zipkin
分布式追踪
微服务调用链分析
OpenTelemetry
标准化 Metrics/Logs/Traces 采集
云原生可观测标准
eBPF Exporter
将 bpftrace/bcc 指标暴露给 Prometheus
内核级指标采集
Netdata
零配置实时仪表盘(秒级刷新)
单机/边缘快速上云监控
Zabbix / Nagios / Icinga
传统企业级监控与告警
基础设施告警管理
Elastic Stack (ELK)
日志全文检索与分析
日志驱动的故障排查
Vector.dev
高性能日志/指标管道(采集、转换、路由)
可观测数据治理

09 处理思路

1. 服务器突然卡死,先看什么?
   → htop / btop → vmstat 1 → iostat -xz 1 → ss -tanpi

2. 应用 CPU 高,怎么定位热点?
   → perf top → perf record -g → FlameGraph → 源码优化

3. 应用延迟高,但 CPU 不高?
   → offcputime-bpfcc → 火焰图找阻塞点 → strace -T / ltrace

4. 内存持续增长,疑似泄漏?
   → smem → pmap → valgrind massif / heaptrack → 修复

5. 磁盘 IO 高,定位元凶?
   → iotop → pidstat -d 1 → biosnoop-bpfcc → ftrace

6. 网络吞吐不达标?
   → ethtool -S → ss -i → tc -s → tcpdump → wrk2 / iperf3

7. K8s Pod 异常?
   → kubectl top → kubectl logs → kubectl gadget → kubectl flame

8. 需要长期趋势数据?
   → sar / collectl → Prometheus + Grafana → 基线告警

最新文章

随机文章