负载排查和分析二

news/2025/9/22 13:09:10/文章来源:https://www.cnblogs.com/tiantao36/p/19104967

负载排查和分析二

明白了,我来帮你做两件事:

  1. 改进中断部分:完善硬中断、软中断触发机制和它们之间的关联关系,增加图示和说明。

  2. 优化整个文档美观性:用清晰的表格、层次分明的标题、缩进流程图、代码块高亮,保证可读性和美观性。

下面是改进后的完整文档草稿:


Linux 网络优化与性能分析完全指南


1️⃣ 中断与软/硬中断机制

1.1 中断(IRQ)概念

  • 定义:CPU 在执行任务时,外设或内核事件请求 CPU 立即响应。

  • 作用:及时处理外设请求和系统事件,保证系统响应及时、稳定。


1.2 硬中断(Hard IRQ)

  • 触发方式:外设通过总线(如 PCIe)向 CPU 发送中断信号。

  • 执行上下文:CPU 当前执行的任务被打断,立即进入中断上下文。

  • 作用

    • 快速响应设备事件,如网卡收包、磁盘 I/O、定时器。

    • 优先级高,必须短时间完成。

  • 查看方法

cat /proc/interrupts

1.3 软中断(Soft IRQ)

  • 触发方式

    1. 硬中断处理完成后,硬中断处理程序将部分任务延迟到软中断执行。

    2. 内核通过 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

  • Step2perf trace -a 分析系统调用

  • Step3perf sched record -a -g sleep 10 + perf sched latency 调度/锁分析

  • Step4perf top -a 热点分析

  • Step5perf 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,一经查实,立即删除!

相关文章

负载排查和分析三

负载排查和分析三明白了,你希望 Step1: 基础统计 能够做到真正的 闭环诊断,即不仅有指标解释,还要告诉用户:可能现象(系统表现或问题)分析工具/命令(如何收集更多数据或验证)分析方法(指标和现象的对应关系、…

完整教程:线程、进程、协程

完整教程:线程、进程、协程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

CF913G Power Substring

推歌:SPOTLIGHT HUNTER 麦晓雯联动出了,没抽到。我爸把我 75 研究卷霍霍露娜上了导致我没法免费保底。诋毁他。 洛谷传送 说回正题。设 \(a\) 有 \(n\) 位,所求的 \(a\) 在 \(2^k\) 中距离末位的位数为 \(m\),显然…

深入解析:老树发新芽:六西格玛培训为石油机械制造注入持久活力

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

YC大佬分享的 10 个 vibe coding技巧,看完收获巨大

1、当 AI 卡住的时候切换战场。 问题: 当你在使用 cursor claude code 这样的 AI 编程工具,在编程的时候,如果遇到 AI 无法实现某个功能或者无法修复某一个错误,并且反复尝试都失败(陷入逻辑死循环) 技巧: 这时…

ES集群部署-EFK架构实战 - 实践

ES集群部署-EFK架构实战 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

《BOE解忧实验室》第四季圆满收官 以科技重塑文化生活新范式

9月10日,由 BOE(京东方)自制的技术科普综艺节目《BOE解忧实验室》第四季迎来收官,全平台累计曝光量突破4.79亿,成为科技企业破圈营销行业示范标杆。作为中国科技企业首档技术科普综艺,本季节目以“中国地标+科技…

洛谷P2261 [CQOI2007] 余数求和

原题 题目描述 给出正整数\(n\)和\(k\), 请计算 \[G(n, k) = \sum_{i=1}^{n} k \bmod i \]其中\(k \bmod i\)表示k除以i的余数。 输入格式 输入只有一行两个整数,分别表示\(n\)和\(k\)。 输出格式 输出一行一个整数表…

负载排查和优化

负载排查和优化 Linux 网络优化与性能分析完全指南1️⃣ 中断与软中断基础 1.1 中断(IRQ)概念定义:CPU 在执行任务时,外设或内核事件请求 CPU 立即响应。作用:及时处理外设请求和系统事件,保证系统响应及时、稳定…

挑战骑行距离新记录:46公里

挑战骑行距离新记录:46公里周末要去江浦一趟,之前都是坐地铁转公交,这次突发奇想,干脆骑车去,反正时间比较充裕,于是早上8点半左右从住处出发,到中午11点53分到达,全长46公里左右(中间还走错一段路),用时3小…

arc206 总结

arc206 总结 这次前面切得比较快,然而 D 题漏了情况卡到最后也没过。E 题也属于中等难度的题。 A 枚举题目中的 \(L\),一个连续段只能有一个 \(L\),对答案的贡献为其后面不等于 \(a_L\) 的个数。 复杂度 \(O(n)\)。…

科研必读|提升酿酒酵母表达蛋白产量的关键技术

科研必读|提升酿酒酵母表达蛋白产量的关键技术酿酒酵母作为真核蛋白表达的经典宿主,其具有蛋白折叠、分泌途径、翻译后修饰(如糖基化、二硫键结合等)的能力,是许多科研与工业蛋白生产的首选平台。但实践中常遇到表…

【RK3576】【Android14】如何在Android14下单独编译kernel-6.1? - 详解

【RK3576】【Android14】如何在Android14下单独编译kernel-6.1? - 详解2025-09-22 12:41 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: au…

完整教程:栈与队列的实现方式与应用解惑

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

完整教程:uniapp、devceo华为鸿蒙运行模拟器报错:未开启Hyper-V

完整教程:uniapp、devceo华为鸿蒙运行模拟器报错:未开启Hyper-Vpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

深入解析:08_多层感知机

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

9.8C++作业 - 实践

9.8C++作业 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Co…

(一)React面试(虚拟DOM/类组件) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

浏览器访问页面卡顿刷新页面方法

浏览器访问页面卡顿刷新页面方法浏览器访问页面卡顿刷新页面方法 同一个网址在一个浏览器中开了多个tab页窗口,会出现卡顿等转圈圈的现象 扩展浏览器缓存空间通过修改启动参数增加缓存容量: "C:\Program Files …

完整教程:散斑深度相机原理

完整教程:散斑深度相机原理pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…