linux-performance-analyzer

Polar Sponsor
爱发电 赞助
.NET 9.0

Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。

Linux 性能分析与调优全能手册 (linux-perf-master)

功能概述

Linux 性能分析与调优全能手册 (linux-perf-master)是一项面向实际任务的技能,主要用于本 skill 整合了 linux-perf-advisor、linux-perf-analysis、linux-perf-tune、linux-performance-analyzer 四个专项 skill 的精华内容,提供完整的性能诊断→根因分析→优化实施→验证回滚闭环能力;📋 分析工作流;

核心要点

  • 第一步:快速。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;

结果检查与注意事项

涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

Linux 性能分析与调优全能手册 (linux-perf-master)

本 skill 整合了 linux-perf-advisor、linux-perf-analysis、linux-perf-tune、linux-performance-analyzer 四个专项 skill 的精华内容,提供完整的性能诊断→根因分析→优化实施→验证回滚闭环能力。

📋 分析工作流

第一步:收集现场数据(运行快照脚本或手动采集)
        ↓
第二步:识别瓶颈类型(CPU / 内存 / I/O / 网络 / 编译)
        ↓
第三步:查阅对应参考文档深入分析
        ↓
第四步:输出标准化分析报告(含问题/原因/方案/风险/验证/回滚)
        ↓
第五步:实施优化并验证效果

第一步:快速数据采集

方式一:使用采集脚本(推荐)

# 系统快照(全面)
bash scripts/collect_snapshot.sh

# 持续监控(后台运行,每5秒采样)
bash scripts/perf_monitor.sh &

方式二:手动快速诊断命令

# ① 负载概览
uptime && cat /proc/loadavg

# ② 内存状态
free -h && cat /proc/meminfo | grep -E "MemTotal|MemFree|MemAvailable|Buffers|Cached|SwapTotal|SwapFree|Dirty|AnonPages|Slab|HugePages"

# ③ CPU + 进程
top -bn1 | head -20
mpstat -P ALL 1 3

# ④ I/O
iostat -xz 1 3
iotop -o -b -n 3 | head -20

# ⑤ 网络
ss -s
ss -ant | awk '{print $1}' | sort | uniq -c | sort -rn

# ⑥ 内核参数现状
sysctl -a 2>/dev/null | grep -E "^vm.|^net.|^kernel.sched" | head -60

# ⑦ 上下文切换
vmstat 1 5

# ⑧ OOM 历史
dmesg | grep -iE "oom|killed process" | tail -20

# ⑨ 中断分布
cat /proc/interrupts | sort -k2 -rn | head -20

# ⑩ 磁盘空间
df -h && lsblk

第二步:瓶颈快速识别表

现象 可能瓶颈 参考文档
load average 持续 > CPU核数×2 CPU 饱和 或 I/O 等待 references/cpu.md
vmstat cs(上下文切换)> 10万/秒 CPU 调度过频 references/cpu.md
%iowait > 20% 磁盘 I/O 瓶颈 references/disk_io.md
MemAvailable < 总内存 10% 内存压力 references/memory.md
Swap 使用率 > 20% 且持续增长 内存严重不足 references/memory.md
OOM Killer 日志出现 内存泄漏 或 配置不当 references/memory.md
Dirty 持续 > 物理内存 5% 写回积压 I/O 跟不上 references/disk_io.md
大量 TIME_WAIT / CLOSE_WAIT 网络连接泄漏/未优化 references/network.md
网络丢包 / 重传率高 TCP 参数/带宽/拥塞 references/network.md
perf/gprof 热点在用户态代码 编译未优化 references/compile_optimization.md
CPU throttling(容器) cgroup CPU 限制过低 references/cpu.md

第三步:分析报告输出格式规范

每个问题按以下六要素输出,格式统一:

### 🔴/🟡/🟢 问题名称(优先级 P0/P1/P2)

**【问题】**
观察到的指标数据和异常现象

**【原因】**
根因推断和分析

**【方案】**
```bash
# 具体优化命令

【风险】 改动的副作用和注意事项

【验证】

# 验证效果的命令

【回滚】

# 回滚命令
### 报告汇总表格模板

```markdown
| 优先级 | 问题 | 影响范围 | 操作难度 | 建议操作 |
|--------|------|----------|----------|----------|
| 🔴 P0 | ... | ... | 低/中/高 | ... |

第四步:常见场景快速处理

🔴 内存问题

诊断命令:

cat /proc/meminfo
dmesg | grep -i "oom|killed process" | tail -20
ps aux --sort=-%mem | head -15
slabtop -o | head -20
numastat -m 2>/dev/null          # NUMA 信息(多路服务器)

核心调优(详见 references/memory.md):

# Swap 倾向(服务器推荐 10,数据库推荐 1)
sysctl -w vm.swappiness=10

# 增大内核保留内存(防止 OOM 误杀关键进程)
sysctl -w vm.min_free_kbytes=262144   # 256MB

# 脏页回写(写密集场景)
sysctl -w vm.dirty_ratio=10
sysctl -w vm.dirty_background_ratio=5

# 透明大页(数据库/延迟敏感服务关闭)
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

# 保护关键进程免遭 OOM Kill
echo -1000 > /proc//oom_score_adj

🔴 CPU 问题

诊断命令:

mpstat -P ALL 1 5
pidstat -u 1 5
vmstat 1 5                          # 重点看 r(运行队列)和 cs(上下文切换)
cat /proc/interrupts | sort -k2 -rn | head -20
perf stat -e cycles,instructions,cache-misses -a sleep 5

核心调优(详见 references/cpu.md):

# 减少上下文切换(调度粒度)
sysctl -w kernel.sched_min_granularity_ns=10000000
sysctl -w kernel.sched_wakeup_granularity_ns=15000000
sysctl -w kernel.sched_migration_cost_ns=5000000

# 关闭 NUMA 均衡(延迟敏感场景)
sysctl -w kernel.numa_balancing=0

# CPU 性能模式
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

# 进程 CPU 亲和性绑核
taskset -pc 0-3 

# 调整进程优先级
renice -5 -p     # 提高优先级
renice +10 -p    # 降低优先级

🔴 磁盘 I/O 问题

诊断命令:

iostat -xz 1 5
iotop -o -n 3 -b | head -30
cat /sys/block/sda/queue/nr_requests
cat /sys/block/sda/queue/scheduler
mount | grep -v "tmpfs|proc|sys|dev"

核心调优(详见 references/disk_io.md):

# I/O 调度器(SSD: mq-deadline 或 none;HDD: bfq)
echo mq-deadline > /sys/block/sda/queue/scheduler

# 读预读(顺序读为主时增大)
blockdev --setra 4096 /dev/sda    # 2MB 预读

# 增大内核请求队列
echo 256 > /sys/block/sda/queue/nr_requests

# 脏页控制(防止写爆)
sysctl -w vm.dirty_bytes=268435456         # 256MB
sysctl -w vm.dirty_background_bytes=67108864  # 64MB

🔴 网络问题

诊断命令:

ss -s
ss -ant | awk '{print $1}' | sort | uniq -c
netstat -s | grep -E "fail|error|drop|overflow|reject" | grep -v " 0 "
ip -s link
ping -c 100  | tail -3

核心调优(详见 references/network.md):

# TIME_WAIT 回收(高并发短连接)
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_fin_timeout=30

# 端口范围(主动发起连接的服务)
sysctl -w net.ipv4.ip_local_port_range="1024 65535"

# 连接队列(高并发服务)
sysctl -w net.core.somaxconn=65535
sysctl -w net.ipv4.tcp_max_syn_backlog=16384
sysctl -w net.core.netdev_max_backlog=16384

# TCP 缓冲区(高带宽场景)
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"

# 文件描述符
sysctl -w fs.file-max=2097152
ulimit -n 65535

🟡 编译优化(详见 references/compile_optimization.md)

触发条件:perf/gprof 热点集中在用户态自编译代码,且当前编译选项为 -O0/-O1

# 快速升级:从 -O1 升到 -O2(大多数场景无需其他改动)
gcc -O2 -march=native -mtune=native -fno-omit-frame-pointer -o app src/*.c

# 高性能计算场景:-O3 + LTO
gcc -O3 -march=native -flto=thin -fno-omit-frame-pointer -o app src/*.c

# 最优:PGO + LTO 组合(提升 10-20%)
# 见 references/compile_optimization.md 第4-5节

参数修改规范

临时生效(立即,重启失效)

sysctl -w 参数名=值
echo 值 > /proc/sys/...

持久化(重启后仍生效)

# 推荐:独立配置文件,易于管理和回滚
cat > /etc/sysctl.d/99-perf-analyzer.conf << 'EOF'
vm.swappiness=10
vm.dirty_ratio=10
# ... 其他参数
EOF
sysctl --system

回滚

# 临时回滚(立即生效)
sysctl -w 参数名=原始值

# 持久化回滚
rm /etc/sysctl.d/99-perf-analyzer.conf
sysctl --system

性能基线与告警阈值

告警阈值参考

指标 正常 警告 严重
CPU 使用率 < 60% > 70% > 90%
内存可用 > 30% < 20% < 10%
Swap 使用率 0% > 10% > 30%
磁盘使用率 < 70% > 80% > 95%
load average < 核数 > 核数×1.5 > 核数×2
I/O await < 10ms > 20ms > 50ms
磁盘 %util < 60% > 80% > 95%
上下文切换/秒 < 5万 > 10万 > 50万
TCP 重传率 < 0.1% > 1% > 5%

建立性能基线

# 在系统正常时保存基线
bash scripts/collect_snapshot.sh > /var/log/perf-baseline-$(date +%Y%m%d).txt

# 定期对比(加入 crontab)
# 每月更新基线
0 4 1 * * bash /path/to/scripts/collect_snapshot.sh > /var/log/perf-baseline.log

# 每日清理日志
0 2 * * * journalctl --vacuum-time=7d

参考文档索引

文档 内容
references/cpu.md CPU 调优(调度器/亲和性/NUMA/中断绑核/perf profiling)
references/memory.md 内存调优(swappiness/OOM/THP/HugePage/NUMA)
references/disk_io.md 磁盘 I/O 调优(调度器/readahead/fio/文件系统)
references/network.md 网络调优(TCP 栈/连接队列/BBR/conntrack)
references/kernel_params.md 内核参数速查全表(含默认值/建议值/适用场景)
references/compile_optimization.md 编译优化(GCC/Clang/PGO/LTO/SIMD)
references/case_studies.md 实战案例(MySQL/Nginx/日志服务器/Java/K8s)

故障排查清单(10步法)

当性能问题发生时,按顺序检查:

  1. uptime 检查负载均值
  2. free -h 检查内存可用量
  3. df -h 检查磁盘空间
  4. top -bn1 检查 CPU 使用率和高耗进程
  5. vmstat 1 3 检查上下文切换和 I/O 等待
  6. iostat -xz 1 3 检查磁盘 I/O 详情
  7. ss -s 检查网络连接状态
  8. dmesg | tail -50 检查内核日志(OOM/硬件错误)
  9. dmesg | grep -i "oom|killed" 检查 OOM 事件
  10. 对比基线数据,确认问题时间点

注意事项

⚠️ 生产环境修改前必读

  1. 记录原始值:sysctl 参数名 保存当前值
  2. 先临时生效观察效果,确认无副作用再持久化
  3. 生产环境修改前,务必先在测试环境验证
  4. vm.overcommit_memory=2(严格模式)与多数应用不兼容,慎用
  5. 透明大页关闭需持久化到启动脚本,重启会还原
  6. net.ipv4.tcp_tw_recycle 在内核 4.12+ 已移除,使用前确认版本
  7. 容器环境中部分参数(cgroup 限制)需宿主机/平台侧配合修改

相关专题

更多
Linux安装Ruby语言详细教程
Linux安装Ruby语言详细教程

本专题整合了Linux安装配置Ruby相关教程,阅读专题下面的文章了解更多详细操作。

2026.04.02

72

9

Linux 内存管理机制精讲与内存泄漏诊断指南
Linux 内存管理机制精讲与内存泄漏诊断指南

本专题系统讲解Linux内存管理的核心机制,涵盖虚拟内存、物理内存映射、伙伴系统、Slab分配器及进程地址空间组织。深入剖析用户态与内核态内存分配原理,解析常见内存泄漏的成因与分类。结合Valgrind、kmemleak、slabtop、pmap等工具,提供从监控、定位到修复的完整诊断流程。通过实战案例,帮助开发者与运维人员掌握内存问题的分析与优化能力,保障系统长期稳定运行。

2026.04.02

18

6

Linux 进程管理高级技巧与性能调优实战指南
Linux 进程管理高级技巧与性能调优实战指南

本文深入剖析Linux进程管理的核心机制与高级调优策略。内容涵盖利用top、htop、pidstat等工具进行实时资源监控与瓶颈定位,详解nice、renice及taskset在进程优先级调整与CPU亲和性绑定中的实战应用。同时,针对高并发场景,探讨内存管理(Swappiness)、磁盘I/O调度器及网络内核参数的精细化配置。旨在帮助运维与开发人员掌握系统性能优化的主动权,构建高效、稳定的Linux运行环境。

2026.04.02

38

6

Linux 系统启动流程深度解析与故障排除实战指南
Linux 系统启动流程深度解析与故障排除实战指南

本文深度解析Linux系统从BIOS/UEFI固件初始化、GRUB引导加载、内核与initramfs加载,到systemd进程启动及用户空间登录的完整流程。文章结合现代发行版(如Ubuntu 22.04+、RHEL 9+)的UEFI+GPT架构,剖析各阶段关键配置文件与核心机制。同时,针对GRUB损坏、内核恐慌、initramfs缺失驱动、文件系统错误等常见启动故障,提供基于Live环境的实战排查步骤与修复命令,帮助运维人员快速定位问题

2026.04.02

59

6

Linux Chown命令使用教程
Linux Chown命令使用教程

本专题整合了Linux Chown命令使用效果教程合集,阅读专题下面的文章了解更多详细内容。

2026.04.01

132

17

Linux如何安装Ubuntu并完成基础系统优化教程
Linux如何安装Ubuntu并完成基础系统优化教程

访问Ubuntu官网或国内镜像站下载ISO镜像,利用Rufus或Etcher工具制作USB启动盘。重启电脑进入BIOS设置U盘引导,按提示完成分区与账户设置以安装系统。安装完毕后,首要任务是将软件源更换为国内镜像以加速下载,接着在终端执行更新命令升级系统组件,并安装显卡驱动及常用开发工具,至此即可完成基础环境搭建与优化。

2026.03.31

44

6

Linux文件权限管理实战:chmod与chown命令详解指南
Linux文件权限管理实战:chmod与chown命令详解指南

本指南深入解析chmod与chown两大核心命令,详细阐述数字法与符号法修改读、写、执行权限的技巧,以及变更文件所有者与用户组的操作。通过实战案例,助您精准控制文件访问,有效防止越权操作,构建稳固的系统安全防线。

2026.03.31

69

8

Linux环境安装Nginx全流程:apt、yum与源码编译方式深度实操
Linux环境安装Nginx全流程:apt、yum与源码编译方式深度实操

本专题深度实操Linux下Nginx三大安装方式:apt/yum包管理器快速部署,适合新手与标准化运维;源码编译灵活定制模块,满足高性能与特殊需求场景。内容涵盖环境准备、依赖安装、配置优化及平滑升级策略,对比各方案优劣,助您根据业务场景选择最佳实践,构建稳定高效的Web服务基石。

2026.03.17

19

8

linux 运行go程序
linux 运行go程序

本专题整合了linux运行go程序相关内容,阅读专题下面的文章了解更多详细内容。

2025.11.17

151

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习