尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

负载排查和优化

负载排查和优化
📅 发布时间:2026/6/19 18:14:08

负载排查和优化

 


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


1️⃣ 中断与软中断基础

1.1 中断(IRQ)概念

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

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

1.2 硬中断(Hard IRQ)

  • 触发方式:硬件直接触发。

  • 作用:

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

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

  • 查看:

cat /proc/interrupts

1.3 软中断(Soft IRQ)

  • 触发方式:硬中断处理完后,由内核延迟执行。

  • 作用:

    • 处理硬中断后的任务,如网络数据包、任务调度。

    • 分发到多核,提高 CPU 利用率。

  • 优化手段:

    • RPS(Receive Packet Steering):软中断 CPU 分发。

    • RFS(Receive Flow Steering):按流绑定到 CPU。

  • 查看:

cat /proc/softirqs

1.4 硬中断与软中断区别

项目硬中断软中断
触发方式 硬件直接触发 硬中断后内核延迟处理
执行上下文 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
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 ==="# --- 查询默认值 ---
echo "[查询] Offload:"
ethtool -k $NIC | grep -E 'tcp-segmentation|generic-segmentation|generic-receive'echo "[查询] IRQ:"
for irq in $(grep "$NIC" /proc/interrupts | awk -F: '{print $1}' | tr -d ' '); doecho "$irq: $(cat /proc/irq/$irq/smp_affinity_list)"
doneecho "[查询] TCP/UDP buffer:"
sysctl net.core.rmem_max net.core.wmem_max net.ipv4.tcp_rmem net.ipv4.tcp_wmemecho "[查询] RPS/RFS:"
for q in /sys/class/net/$NIC/queues/rx-*; doecho "$q: RPS=$(cat $q/rps_cpus) FLOW=$(cat $q/rps_flow_cnt)"
done# --- 设置 ---
echo "[设置] Offload"
ethtool -K $NIC tso on gso on gro onecho "[设置] IRQ 绑核"
for irq in $(grep "$NIC" /proc/interrupts | awk -F: '{print $1}' | tr -d ' '); doCURRENT=$(cat /proc/irq/$irq/smp_affinity_list)[ "$CURRENT" != "$CPULIST" ] && echo $CPULIST > /proc/irq/$irq/smp_affinity_list
doneecho "[设置] TCP/UDP buffer"
CURRENT_RMEM=$(sysctl -n net.core.rmem_max)
CURRENT_WMEM=$(sysctl -n net.core.wmem_max)
if [ "$CURRENT_RMEM" -ne "$RMEM_MAX" ] || [ "$CURRENT_WMEM" -ne "$WMEM_MAX" ]; thensysctl -w net.core.rmem_max=$RMEM_MAXsysctl -w net.core.wmem_max=$WMEM_MAXsysctl -w net.ipv4.tcp_rmem="$TCP_RMEM"sysctl -w net.ipv4.tcp_wmem="$TCP_WMEM"
fiecho "[设置] RPS/RFS"
for q in /sys/class/net/$NIC/queues/rx-*; doCURRENT_RPS=$(cat $q/rps_cpus)CURRENT_FLOW=$(cat $q/rps_flow_cnt)if [ "$CURRENT_RPS" != "$RPS_CPUS" ] || [ "$CURRENT_FLOW" != "$RPS_FLOW_ENTRIES" ]; thenecho $RPS_CPUS > $q/rps_cpusecho $RPS_FLOW_ENTRIES > $q/rps_flow_cntfi
done

4️⃣ 性能分析(Perf 全套流程)

4.1 Step1: 基础统计

perf stat -a -d sleep 5
  • 输出指标:

    • cycles: CPU 时钟周期

    • instructions: 执行指令数

    • cache-misses: 缓存未命中

    • context-switches: 上下文切换次数

    • page-faults: 页面错误次数

    • syscalls: 系统调用次数

  • 分析思路:

    • page-faults 高 → 内存不足或 NUMA 远程访问

    • syscalls 高 → 系统调用瓶颈

    • context-switches 高但 syscall 正常 → 调度/锁瓶颈

    • CPI 高(cycles/instructions)但 syscall/ctx/faults 正常 → CPU stall

4.2 Step2: 系统调用跟踪

perf trace -a
  • 找出 最耗时的系统调用

  • 分析 I/O、网络、文件操作瓶颈

4.3 Step3: 调度/锁分析

perf sched record -a -g sleep 10
perf sched latency
  • 查看 ksoftirqd、kworker 等调度延迟

  • 分析 context-switch 高的原因

4.4 Step4: 热点分析

perf top -a
  • 实时查看 CPU 消耗最高的函数

  • 检查是否卡在:

    • schedule() / io_schedule()

    • 内核网络或 I/O 函数

    • 用户态 CPU 密集函数

4.5 Step5: 深入分析

perf record -a -g sleep 10
perf report
  • 获取调用栈,分析热点函数

  • 判断 NUMA 远程访问、宿主机 I/O 调度延迟等原因

4.6 Step6: 分支思路总结

现象分析方法可能原因
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

5️⃣ 网络优化 + 性能诊断闭环流程图

+---------------------+
|     网络收包         |
|  (NIC Hard IRQ)     |
+---------+-----------+|v
+---------------------+
|  硬中断绑核 / RPS    |
|  irq_affinity / RPS  |
+---------+-----------+|v
+---------------------+
|   ksoftirqd / SoftIRQ |
|   (网络、调度任务)   |
+---------+-----------+|v
+---------------------+
|      TCP/UDP Buffer  |
|  rmem/wmem/tcp_*     |
+---------+-----------+|v
+---------------------+
|  用户态应用 / syscall |
| perf stat / perf top  |
+---------+-----------+|v
+---------------------+
| 调度 / 锁分析       |
| perf sched / latency |
+---------+-----------+|v
+---------------------+
| 深入热点分析        |
| perf record / report |
+---------------------+
  • 流程说明:

    1. NIC 收包 → 触发硬中断。

    2. IRQ 绑核 + RPS → 硬中断分发到 CPU,软中断 ksoftirqd 处理。

    3. 软中断处理 → 网络协议栈或调度任务执行。

    4. TCP/UDP Buffer → 提升高并发吞吐量。

    5. 用户态应用 → 使用 perf stat/top 分析 CPU 消耗。

    6. 调度/锁分析 → perf sched 评估 context switch。

    7. 深入分析热点 → perf record/report 找出瓶颈函数和 NUMA 影响。


6️⃣ 总结与优化闭环

  1. 打印默认值:Offload、IRQ、TCP/UDP buffer、RPS/RFS

  2. 执行优化设置

  3. 统计中断/软中断负载

  4. Perf 系列分析 CPU/系统瓶颈

  5. 按不同分支做针对性优化

    • 网络:RPS/RFS、队列、RSS

    • 调度:调整 CPU affinity、调度器参数

    • 内存:增加 buffer、优化 NUMA

    • I/O:优化磁盘调度器

  6. 对比优化前后指标


 

相关新闻

  • 挑战骑行距离新记录:46公里
  • arc206 总结
  • 数据结构-单链表基础2

最新新闻

  • 3分钟掌握终极IPTV播放源检测:告别频道失效的完整指南
  • 2025-2026年东坝改善新房推荐:五大项目口碑评测生态宜居防噪音干扰适用场景价格 - 品牌推荐
  • 2026 全国可报电大中专,不用线下上课,线上完成考核毕业 - cc江江
  • CANN/GE LLM-DataDist PullKvCache接口
  • C语言数学库深度解析:从误差函数到指数运算的工程实践
  • 五金轻微磨损不恶意折价,青岛同城包包回收亲测透明交易指南 - 讯息早知道

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号