负载排查和分析二
明白了,我来帮你做两件事:
-
改进中断部分:完善硬中断、软中断触发机制和它们之间的关联关系,增加图示和说明。
-
优化整个文档美观性:用清晰的表格、层次分明的标题、缩进流程图、代码块高亮,保证可读性和美观性。
下面是改进后的完整文档草稿:
Linux 网络优化与性能分析完全指南
1️⃣ 中断与软/硬中断机制
1.1 中断(IRQ)概念
-
定义:CPU 在执行任务时,外设或内核事件请求 CPU 立即响应。
-
作用:及时处理外设请求和系统事件,保证系统响应及时、稳定。
1.2 硬中断(Hard IRQ)
-
触发方式:外设通过总线(如 PCIe)向 CPU 发送中断信号。
-
执行上下文:CPU 当前执行的任务被打断,立即进入中断上下文。
-
作用:
-
快速响应设备事件,如网卡收包、磁盘 I/O、定时器。
-
优先级高,必须短时间完成。
-
-
查看方法:
cat /proc/interrupts
1.3 软中断(Soft IRQ)
-
触发方式:
-
硬中断处理完成后,硬中断处理程序将部分任务延迟到软中断执行。
-
内核通过 ksoftirqd 线程在非中断上下文中处理。
-
-
作用:
-
处理硬中断后延迟任务,如网络协议栈、定时任务。
-
可分发到多个 CPU 核心,提高 CPU 利用率。
-
-
优化手段:
-
RPS(Receive Packet Steering):将网络软中断分发到多个 CPU。
-
RFS(Receive Flow Steering):按流绑定 CPU,提高 cache locality。
-
-
查看方法:
cat /proc/softirqs
1.4 硬中断与软中断触发关系
+----------------+
| 外设事件触发 |
+----------------+|v
+----------------+
| 硬中断处理 IRQ |
| (CPU 打断当前任务) |
+----------------+|v
+----------------+
| 软中断触发 SoftIRQ |
| (延迟处理任务, ksoftirqd) |
+----------------+|v
+----------------+
| 用户态应用 / 网络协议栈处理 |
+----------------+
1.5 硬/软中断对比
项目 | 硬中断 | 软中断 |
---|---|---|
触发方式 | 外设直接发中断信号 | 硬中断处理后触发 |
执行上下文 | 当前 CPU 上下文 | ksoftirqd 内核线程 |
优先级 | 高 | 中 |
作用 | 立即响应设备事件 | 延迟处理任务,如网络收包 |
调整方法 | IRQ 绑核 /proc/irq/*/smp_affinity_list |
RPS/RFS /sys/class/net/*/queues/rx-* |
2️⃣ 网络优化基础
2.1 网卡 Offload
-
作用:减轻 CPU 负载,让网卡处理部分协议。
-
参数:
-
TSO: TCP 分段
-
GSO: 通用分段
-
GRO: 通用接收聚合
-
-
查看:
ethtool -k eth0
-
开启:
ethtool -K eth0 tso on gso on gro on
2.2 IRQ 绑核
-
作用:将硬中断绑定到指定 CPU,提高多核性能。
-
示例:
echo 2-15 > /proc/irq/<IRQ>/smp_affinity_list
2.3 RPS / RFS
-
作用:将软中断分发到多核,提高网络吞吐。
-
配置:
-
rps_cpus
:CPU 掩码 -
rps_flow_cnt
:RFS flow 数量
-
-
查看:
cat /sys/class/net/eth0/queues/rx-*/rps_cpus
cat /sys/class/net/eth0/queues/rx-*/rps_flow_cnt
2.4 TCP/UDP Buffer
-
作用:增大内核缓冲区,提升高并发性能。
-
参数:
-
net.core.rmem_max
-
net.core.wmem_max
-
net.ipv4.tcp_rmem
-
net.ipv4.tcp_wmem
-
3️⃣ 网络优化脚本(查询/设置/打印状态)
#!/bin/bash
# network_optimize.sh
NIC="eth0"
CPULIST="2-15"
RMEM_MAX=16777216
WMEM_MAX=16777216
TCP_RMEM="4096 87380 16777216"
TCP_WMEM="4096 87380 16777216"
RPS_CPUS="ffff"
RPS_FLOW_ENTRIES=32768echo "=== 网络优化: $NIC ==="
...
(保留前面完整脚本内容,可直接执行)
4️⃣ 动态软中断统计脚本
#!/bin/bash
# softirq_stats.sh
awk '
...
' /proc/softirqs
5️⃣ 动态硬中断统计脚本
#!/bin/bash
# hardirq_stats.sh
awk '
...
' /proc/interrupts
6️⃣ 使用说明
-
网络优化:
./network_optimize.sh
-
软中断统计:
./softirq_stats.sh
-
硬中断统计:
./hardirq_stats.sh
-
诊断优化:根据占比高的中断类型调整 RPS/RFS、IRQ 绑核或硬件升级
7️⃣ 性能分析(Perf 全套流程)
7.1 Step1: 基础统计
perf stat -a -d sleep 5
全面指标分析:
指标 | 含义 | 分析方向 |
---|---|---|
cycles | CPU 时钟周期 | CPU 总体负载 |
instructions | 执行指令数 | CPI = cycles/instructions |
cache-references | 缓存访问次数 | 缓存利用效率 |
cache-misses | 缓存未命中 | 高 → CPU stall / NUMA 远程访问 |
branch-misses | 分支错误 | 高 → pipeline stall |
context-switches | 上下文切换次数 | 高但 syscall 正常 → 调度/锁争用 |
cpu-migrations | 进程迁移次数 | 高 → NUMA 或负载均衡影响 |
page-faults | 页面错误次数 | 高 → 内存不足或 NUMA 远程访问 |
minor-faults | 非阻塞页错误 | 大量 → 内存压力 |
major-faults | 阻塞页错误 | 大量 → I/O 或内存压力 |
syscalls | 系统调用次数 | 高 → I/O/网络/文件瓶颈 |
cycles.stalled | CPU 停顿周期 | pipeline stall 或 cache miss |
7.2 Step2 ~ 7.5
-
Step2:
perf trace -a
分析系统调用 -
Step3:
perf sched record -a -g sleep 10
+perf sched latency
调度/锁分析 -
Step4:
perf top -a
热点分析 -
Step5:
perf record -a -g sleep 10
+perf report
深入分析
7.6 分支思路总结
现象 | 分析方法 | 可能原因 |
---|---|---|
syscalls 高 | perf trace -a | I/O/网络/文件系统瓶颈 |
context-switch 高 | perf sched record/latency | 调度/锁争用 |
page-fault 高 | /proc/softirqs + perf top | 内存/NUMA 远程访问 |
CPI 高但 syscall/ctx/fault 正常 | perf top -a | CPU stall、cache miss、NUMA |
8️⃣ 网络优化 + 性能诊断闭环流程图
+---------------------+
| 网络收包 |
| (NIC Hard IRQ) |
+---------+-----------+|v
+---------------------+
| 硬中断绑核 / RPS |
| irq_affinity / RPS |
+---------+-----------+|v
+---------------------+
| ksoftirqd / SoftIRQ |
| (网络、调度任务) |
+---------+-----------+|v
+---------------------+
| TCP/UDP Buffer |
| rmem/wmem/tcp_* |
+---------+-----------+|v
+---------------------+
| 用户态应用 / syscall |
| perf stat/top 分析 |
+---------+-----------+|v
+---------------------+
| 调度 / 锁分析 |
| perf sched/latency |
+---------+-----------+|v
+---------------------+
| 深入热点分析 |
| perf record/report |
+---------------------+
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909336.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!