负载分析和排查六

news/2025/9/22 18:06:52/文章来源:https://www.cnblogs.com/tiantao36/p/19105773

负载分析和排查六

明白,我帮你整理成一个完整专业文档,覆盖 CPU 各类负载(%user、%sys、%soft、%si、%iowait)分析、溯源、定位工具与优化策略,并包含脚本示例和中断原理说明。文档结构清晰,便于直接使用或汇报。


Linux CPU 各类负载分析与溯源完整方案


1️⃣ 前提说明

  • 目标:不仅查看表面数据(如 top 中的 %sys/%si/%soft),而且能追溯到具体内核函数、驱动代码、用户态系统调用路径或设备行为,实现“根因可见化”。

  • 可用工具perfftrace/trace-cmdstraceiotopiostatmpstat 等。

  • 分析思路:结合统计分析(计数、采样)调用栈追踪(perf record/report),全方位定位问题。


2️⃣ CPU 各类负载定义

负载类型定义
idle CPU 空闲,没有任务需要处理
user CPU 执行用户态程序代码
system CPU 执行内核态系统代码
nice CPU 执行低优先级(nice)用户进程
iowait CPU 空闲,但等待 I/O 操作完成
irq CPU 处理硬件中断(Hardware Interrupts)
softirq CPU 处理软中断(Software Interrupts)
steal 虚拟化环境中被其他虚拟机占用的时间

注意:%soft%sys 高负载通常只能通过扩容 CPU 或调度部分服务到其他机器来缓解,定位难度较高,需结合 核心计算器、总线与中断统计


3️⃣ 五类负载定位与溯源方案

3.1 软中断 %soft

原因:网络协议栈收包处理(NET_RX)、tasklet、底半部等软中断激增。

定位流程

  1. 查看软中断统计:

watch -n 1 cat /proc/softirqs
  1. 确认 ksoftirqd 占用 CPU:

top -H -p $(pgrep -d, ksoftirqd)
  1. 采样内核调用栈:

sudo perf record -a -g -F 99 -- sleep 10
sudo perf report

重点关注:

  • net_rx_action

  • napi_poll

  • 网卡驱动 *_poll

  • tasklet_action

  1. 关联硬件中断:

cat /proc/interrupts

确认软中断对应硬中断和设备。

  1. 排查原因:

  • 流量异常(大量小包、攻击)

  • 驱动或硬件故障

  • RPS/RFS 配置问题


3.2 硬中断 %si

原因:设备硬中断频繁(网卡、磁盘、USB 等)。

定位流程

  1. 监控中断计数:

watch -n 1 cat /proc/interrupts
  1. 查看中断 CPU 亲和:

cat /proc/irq/<IRQ号>/smp_affinity_list
  1. perf 采样内核中断函数:

sudo perf record -a -g -F 99 -- sleep 10
sudo perf report

关注:

  • irq_handler

  • 驱动中断函数(如 mlx5e_intr, nvme_irq_handler

  1. 检查硬件及驱动日志:

dmesg | tail -50

3.3 iowait %iowait

原因:CPU 等待磁盘 I/O 或内存频繁 swap。

定位流程

  1. 磁盘 I/O 监控:

iostat -xz 1 5
  1. 内存与 swap 监控:

free -m
vmstat 1 5
  1. 实时磁盘 I/O 监控:

iotop -ao
  1. perf 跟踪阻塞 syscall:

sudo perf record -e syscalls:sys_enter_read,syscalls:sys_enter_write -a -g -- sleep 10
sudo perf report
  1. ftrace 跟踪块设备请求延迟:

sudo trace-cmd record -e block_rq_issue -e block_rq_complete -- sleep 10
sudo trace-cmd report
  1. 内存压力分析:

  • top -H 查看 kswapd CPU 占用

  • 频繁 swap → 内存压力导致 iowait


3.4 %sys(系统态负载)

原因:大量系统调用或内核态执行。

定位流程

  1. 找高 CPU 进程:

ps -eo pid,comm,%cpu --sort=-%cpu | head
  1. strace 统计 syscall:

strace -c -p <pid> -t 10
  1. perf 采样内核调用栈:

sudo perf top -g
sudo perf record -a -g -- sleep 10
sudo perf report

关注热点函数,如 do_sys_open, vfs_read, ip_rcv


3.5 %user(用户态负载)

原因:用户态程序计算密集、算法瓶颈、死循环。

定位流程

  1. 查最耗 CPU 的线程:

top -H
  1. perf 采样用户态调用栈:

sudo perf record -p <pid> -g -- sleep 10
sudo perf report

4️⃣ 统计与诊断工具对照表

负载类型定位重点工具溯源关键点
%soft 软中断类型及执行代码 /proc/softirqs, top -H ksoftirqd, perf record/report 网卡驱动软中断处理路径
%si 触发硬中断设备 /proc/interrupts, perf record/report 设备中断号及驱动 ISR
%iowait 磁盘性能或内存 swap iostat, vmstat, iotop, trace-cmd, perf 阻塞 syscall 或磁盘请求延迟
%sys 频繁 syscall / 内核热点 strace, perf top/report 内核函数路径
%user 用户态 CPU 消耗 top -H, perf record/report 用户态热点函数

5️⃣ 示例脚本

5.1 软中断统计(动态分析)

#!/bin/bash
awk '
BEGIN { print "中断类型     总计     占比"; print "=========================" }
NR>1 {type=$1; gsub(/:/,"",type);sum=0; for(i=2;i<=NF;i++) sum+=$i;counts[type]=sum; total+=sum
}
END {for(t in counts) printf "%-12s %10d %8.2f%%\n", t, counts[t], counts[t]*100/total
}'
/proc/softirqs

5.2 硬件中断统计

#!/bin/bash
awk '
BEGIN{print "控制器 类型 计数 占比"; total=0}
NR>1 && $1 ~ /^[0-9]+:/ {irq=$1; gsub(/:/,"",irq)sum=0; for(i=2;i<=NF;i++) sum+=$itotal+=sum; counts[irq]=sum
}
END{for(i in counts) printf "%5s %8d %6.2f%%\n", i, counts[i], counts[i]*100/total
}'
/proc/interrupts

6️⃣ Linux 中硬件中断与软中断原理

项目硬中断(HardIRQ)软中断(SoftIRQ)
触发方式 硬件设备(网卡、磁盘等) 内核调度或硬中断触发
执行时机 立即响应(上半部) 延迟处理(下半部)
执行位置 ISR(Interrupt Service Routine) do_softirq()ksoftirqd/N
是否可睡眠
**典型例子    

** | eth0 收包 | NET_RX, TASKLET |

小结:硬中断快、短,软中断可合并处理网络/定时任务。高 %soft + %si 往往说明网络流量或磁盘 IO 压力大。


7️⃣ 性能优化思路

  1. 软中断过高

    • 网卡 RSS/RFS 配置

    • 增加 CPU 核心绑定中断

    • 优化内核网络栈

  2. 硬中断过高

    • 优化驱动或硬件中断 coalescing

    • 调整 IRQ CPU 亲和

  3. iowait 高

    • 磁盘优化(RAID/SSD)

    • 内存扩容,减少 swap

    • 调整 IO 调度器 (mq-deadline, bfq)

  4. system 高

    • 减少高频 syscall

    • 优化内核模块

    • 调整应用程序系统调用方式(批量化)

  5. user 高

    • 优化应用算法

    • 使用多线程/异步 IO

    • 分布式拆分计算


8️⃣ 总结

  • CPU 高负载不是单一 %cpu 表面指标,而是多维度指标交织:%user/%sys/%soft/%si/%iowait

  • 通过 proc 文件系统 + perf/ftrace + sysstat 工具链 可以精准定位根因。

  • 针对不同负载类型采取不同优化措施,结合 软/硬中断调度、内核/驱动优化、IO 资源调优、应用程序算法优化 可显著改善系统性能。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

赣州市建设工程造价管理网站现在做百度推广有用吗

目录 3.3 网络结构与损失函数设计 3.3.1 网络结构 3.3.2 损失函数设计

js网站大全郑州网站制作推广

除了基本的分组功能之外&#xff0c;GROUP BY 子句还提供了几个高级选项&#xff0c;可以用来实现更复杂的报表功能。 本文比较五种主流数据库实现的高级分组功能&#xff0c;包括 MySQL、Oracle、SQL Server、PostgreSQL 以及 SQLite。 功能MySQLOracleSQL ServerPostgreSQL…

苏州高端网站设计企业西安网络科技有限公司有哪些

1. 引言 限界上下文可以拆分为两个词&#xff0c;限界和上下文。限界&#xff1a;是指一个界限&#xff0c;具体的某一个范围。上下文&#xff1a;个人理解就是语境。 比如我们常说的段子&#xff1a; “我想静静。”这个句子一般是想表达“我想静一静”的意思。但是我们却把…

网站内容建设要求 age06建设六马路小学 网站

此文为人大金仓数据库安装程序&#xff08;windows下kingbase开发及测试用&#xff09;。 1 人大金仓-成为世界卓越的数据库产品与服务提供商 官方下载安装包&#xff0c;同时需要下载授权文件&#xff0c;补丁文件可以不下。 2 点击安装 3 选择授权文件 4 默认安装即可&…

饰品交易网站怎么做做礼品建什么网站

Kafka消费流程 消息是如何被消费者消费掉的。其中最核心的有以下内容。 1、多线程安全问题 2、群组协调 3、分区再均衡 1.多线程安全问题 当多个线程访问某个类时&#xff0c;这个类始终都能表现出正确的行为&#xff0c;那么就称这个类是线程安全的。 对于线程安全&…

武威市建设局网站 放管服网站服务公司业务范围包括

软件项目范围基准明确了项目的边界、目标和主要交付成果&#xff0c;有助于提高项目成本、进度和资源估算的准确性&#xff0c;便于实施项目控制&#xff0c;而且还可以帮助我们清楚分派责任&#xff0c;防止范围蔓延&#xff0c;从而提升项目的成功率。 如果没有明确确定范围基…

网站建设php的心得和体会动漫设计网站

建议将全局变量创建在.h/.cpp文件中&#xff0c;其中.h文件声明变量&#xff0c;.cpp文件中定义变量值。 在.h文件中定义变量&#xff0c;则工程多次#include该文件会出现“该文件已经被使用”。 具体示例如下&#xff1a; synchronize_data.h // // Created by qiaowei on…

大地资源影视免费观看淄博网站建设优化运营熊掌号

介绍 Nginx是一个高性能的Web服务器&#xff0c;它可以处理大量的并发请求&#xff0c;同时还可以作为负载均衡器和反向代理服务器。在本篇博文中&#xff0c;我们将介绍如何从入门到精通Nginx的使用。 Nginx的安装和配置 在开始使用Nginx之前&#xff0c;您需要先安装和配置…

mysql/oracle LEFT JOIN 取时间最大的数据

如下SQL ,一次任务执行结果 没有聚合到任务结果表,可以在任务结果表中查询出这个任务结果id,然后可根据任务结果id内存遍历或者通过not exists进行结果明细的成功失败查询。select t.task_id,t.task_name, maxr.tas…

6月6日证书 - 工信部人才交流中心PostgreSQL中级PGCP高级PGCM认证

恭喜上一期参加并通过工信部人才交流中心PostgreSQL管理员PG中级和PG高级认证考试的各位同学,纸质版证书到啦【9月16日】! 电子版证书可以在工信部人才交流中心官网查询,或者联系CUUG客服!工信部人才交流中心Postgr…

基于遗传算法与非线性规划的混合优化算法在电力系统最优潮流中的实现

基于遗传算法(GA)与非线性规划(NLP)的混合优化算法在电力系统最优潮流(OPF)中的实现一、混合算法架构设计 混合策略优势全局探索:GA处理非凸、多峰问题,避免陷入局部最优 局部开发:NLP(如内点法)加速收敛,…

【下一款产品】

从哪里获取灵感、如何判断价值、最后怎么选。 ⸻ 1️⃣ 灵感来源(参考哪些网站) 🔹 全球趋势/新产品 • Product Hunt → 每天看独立开发者和公司在推什么工具,评论区也能看到用户需求。 • Hacker News → 技术社…

数1的个数

//题意:给定一个十进制正整数n,写下从1到n的所有整数,然后数一下其中出现的数字“1”的个数。 //例如当n=2时,写下1,2。这样只出现了1个“1”;当n=12时,写下1,2,3,4,5,6,7,8,9,10,11,12。这样出现了5…

企业网站快速建站深圳网站搭建找谁

一、pytest跳过功能 1. 使用 pytest.skip 装饰器跳过测试用例 Pytest中的 pytest.skip 装饰器允许你跳过指定的测试用例。你可以将该装饰器应用于测试函数或测试类上。 import pytestpytest.mark.skip(reason"Skipping this test case") def test_skip():assert 1…

青州网站建设优化推广wordpress 网站图标设置

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于Kronig-Penney能带模型的MATLAB求解与仿真.综合利用 MATLAB提供的求解常微分方程、矩阵行列式、代数表达式化简及绘图等函数 ,可使 Kronig-Penney能带模型分析…

有没有做门面设计的网站网站备案掉了怎么办

烘焙预计算 前文:续_直接和间接光照这一篇小结:Unity烘焙预计算烘焙前的场景设置1.2.Contribute GI如下图:物体的Static和面板上的Contribute GILightmap的UV模型自带Lightmap的UVUnity 自动展Lightmap的UV1.3.Meta PassMeta Pass代码如下:1.4.Light Mode模式

做外贸都做哪些网站好免费下载网站开发国内外研究状况

感谢使用护卫神云查杀系统&#xff0c;该软件专门查杀网页木马&#xff0c;完全免费&#xff0c;欢迎大家使用。远程FTP查杀部分&#xff1a;1、点击【远程查杀】图标&#xff0c;如上图所示&#xff0c;进入远程FTP查杀页面&#xff1a;1、首先要求输入远程FTP连接信息&#x…

网站域名注册管理中心书店商城网站设计

以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 stack容器queue容器 stack容器 是什么&#xff1f;功能是什么&#xff1f;常用接口是什么&#xff1f;局限性有哪些&#xff1f;优势又有哪些&#xff1f; 栈容器&#xff0c;先进…

相亲网站绑定微信怎么做南昌个人网站制作怎么做

一、video-player 介绍 video-player 是一个基于 video.js 的视频播放器组件&#xff0c;它提供了丰富的功能&#xff0c;包括视频播放、暂停、快进、快退、全屏、音量控制等。 video-player 的使用非常简单&#xff0c;如下安装即可。 npm install video.js videojs-player…

采网站建设南京发布最新通报

AOP简介 AOP(Aspect oriented Programming)面向切面编程&#xff0c;就是面向特定的方法编程&#xff0c;将方法比作一个一个的切面&#xff0c;可以向指定的方法执行前/后执行自己的逻辑。如统一获取方法的时间。 应用场景&#xff1a; 记录操作日志、权限控制、事务管理 优…