您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

性能优化之Linux 软中断负载较高的一次排查解决案例

时间:2022-10-06 18:18:08  来源:今日头条  作者:一个运维老兵

某云上用户反馈,虚拟机cpu负载 软中断SI 指标高 ,请求云厂商协助排查

 

从图示来看,cpu3 软中断任务明显 ,大量的负载中断都发生在cpu3上

linux 中的中断处理程序分为上半部和下半部:
上半部对应硬件中断,用来快速处理中断。
下半部对应软中断,用来异步处理上半部未完成的工作。
Linux 中的软中断包括网络收发、定时、调度、等各种类型,可以通过查看 /proc/softirqs 来观察软中断的运行情况


排查过程

1. vmstat 1 : 可以看到cpu 每秒上下文切换和中断次数较多,cpu 有较多队列等待

 

cs(context switch)是每秒上下文切换的次数。
in(interrupt)则是每秒中断的次数。
r(Running or Runnable)是就绪队列的长度,也就是正在运行和等待CPU的进程数。
b(Blocked)则是处于不可中断睡眠状态的进程数。

2.pidstat -w 查看进程上下文切换情况

# 每隔5秒输出1组数据
$ pidsat -w 5
Linux 4.15.0 (ubuntu) 09/23/18 _x86_64_ (2 CPU)
08:18:26 UID PID cswch/s nvcswch/s Command
08:18:31 0 1 0.20 0.00 sysemd
08:18:31 0 8 5.40 0.00 rcu_sched

cswch ,表示每秒自愿上下文切换(voluntary context switches)的次数,
nvcswch ,表示每秒非自愿上下文切换(non voluntary context switches)的次数

3. cat /proc/softirqs : 查看软中断统计 : 可以分析发现 ,cpu3 上的中断条目最多.NET_RX 网络数据包接收软中断的变化比较快 ,网卡收发包大部分处理都在cpu3 , 单cpu 有处理阻塞现象

 

4.. ethtool -l eth0 查看网卡队列情况 : 网卡队列只有一个 , NET_RX 中断负载在cpu3 ,初步定位单队列原因导致网络中断网络中断不能负载均衡,大部都集中在cpu3 处理

 

5.使能网络中断负载均衡 , 打算调整虚拟机网卡队列数,virsh edit domain , 添加如下 : 队列改成为8

 

6.在控制台重启虚拟机 ,通过VNC 登录虚拟机看是否生效 ,检查已经生效

 

7.再次查看cpu中断负载情况 : top 命令查看 : 发现si中断比较分散在各个核上 ,问题解决

 

通过增加网络多队列,让cpu 软中断负载均衡 ,问题得到解决


举例说明软中断机制 :

举个生活中的例子"

比如说你订了一份外卖,但是不确定外卖什么时候送到,也没有别的方法了解外卖的进度,但是,配送员送外卖是不等人的,到了你这儿没人取的话,就直接走人了。所以你只能苦苦等着,时不时去门口看看外卖送到没,而不能干其他事情。
不过呢,如果在订外卖的时候,你就跟配送员约定好,让他送到后给你打个电话,那你就不用苦苦等待了,就可以去忙别的事情,直到电话一响,接电话、取外卖就可以了。 这里的“打电话”,其实就是一个中断。
没接到电话的时候,你可以做其他的事情;只有接到了电话(也就是发生中断),你才要进行另一个动作:取外卖。
这个例子你就可以发现,中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力。

事实上,为了解决中断处理程序执行过长和中断丢失的问题,Linux 将中断处理过程分成了两个阶段,也就是上半部和下半部:
上半部用来快速处理中断,它在中断禁止模式下运行,主要处理跟硬件紧密相关工作。
下半部用来延迟处理上半部未完成的工作,通常以内核线程的方式运行。

比如说前面取外卖的例子,上半部就是你接听电话,告诉配送员你已经知道了,其他事儿见面再说,然后电话就可以挂断了;下半部才是取外卖的动作,以及见面后商量发票处理的动作

除了取外卖,我再举个最常见的网卡接收数据包的例子,让你更好地理解。
网卡接收到数据包后,会通过硬件中断的方式,通知内核有新的数据到了。这时,内核就应该调用中断处理程序来响应它。
对上半部来说,既然是快速处理,其实就是要把网卡的数据读到内存中,然后更新一下硬件寄存器的状态(表示数据已经读好了),最后再发送一个软中断信号,通知下半部做进一步的处理。
而下半部被软中断信号唤醒后,需要从内存中找到网络数据,再按照网络协议栈,对数据进行逐层解析和处理,直到把它送给应用程序。

所以,这两个阶段你也可以这样理解:
上半部直接处理硬件请求,也就是我们常说的硬中断,特点是快速执行;
而下半部则是由内核触发,也就是我们常说的软中断,特点是延迟执行;

其他场景举例 :

提问 : 经常听同事说大量的网络小包会导致性能问题,为什么呢?
回答 : 因为大量的网络小包会导致频繁的硬中断和软中断,所以大量网络小包传输很慢,但如果将网络包一次传递,是不是会快很多呢 ,就是这个道理

 



Tags:性能优化   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
某云上用户反馈,虚拟机cpu负载 软中断SI 指标高 ,请求云厂商协助排查 从图示来看,cpu3 软中断任务明显 ,大量的负载中断都发生在cpu3上Linux 中的中断处理程序分为上半部和下半...【详细内容】
2022-10-06  Tags: 性能优化  点击:(0)  评论:(0)  加入收藏
前言无论是前端还是后端,性能优化其实是每一个开发都无法避开的大山。另一方面,这种开放式的提问深受面试官的青睐,能够快速地区分求职者的水平。网上的答案层出不穷,似乎都只是...【详细内容】
2022-07-30  Tags: 性能优化  点击:(67)  评论:(0)  加入收藏
Java 7 ForkJoinPool和 Java 8 的并行Stream有助于并行化东西,这在您将 Java 程序部署到多核处理器机器上时非常有用。与跨网络上的不同机器进行扩展相比,这种并行性的优势在...【详细内容】
2022-04-22  Tags: 性能优化  点击:(115)  评论:(0)  加入收藏
启动性能是 APP 使用体验的门面,启动过程耗时较长很可能导致用户使用 APP 的兴趣骤减,抖音通过对启动性能做劣化的 AB 实验也验证了其对于业务指标有影响显著。抖音拥有数亿的...【详细内容】
2022-01-29  Tags: 性能优化  点击:(141)  评论:(0)  加入收藏
对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5,对应于180秒左右时间。。(对于大负载而物理通信良好的网络而言,这个值偏高,可修改为2.这个值仅仅是针对对外的连接,对进来的连接,...【详细内容】
2021-12-08  Tags: 性能优化  点击:(92)  评论:(0)  加入收藏
App的性能优化,可以从多角度优化,包括App启动优化,App启动优化又分为main()函数执行前优化,main()函数执行后优化;包括界面卡顿优化,页面卡顿优化又包括CPU优化和GPU优化;包括安装包瘦...【详细内容】
2021-12-08  Tags: 性能优化  点击:(179)  评论:(0)  加入收藏
一、前言最近参加了几轮面试,发现很多5-7年工作经验的候选人在性能优化这一块,基本上只能说出传统的分析方式,例如ANR分析,是通过查看/data/anr/ 下的log,分析主线程堆栈、cpu、...【详细内容】
2021-06-17  Tags: 性能优化  点击:(322)  评论:(0)  加入收藏
MNN(Mobile Neural Network)是一个高性能、通用的深度学习框架,支持在移动端、PC端、服务端、嵌入式等各种设备上高效运行。MNN利用设备的GPU能力,全面充分“榨干”设备的GPU资源,来进行深度学习的高性能部署与训练。...【详细内容】
2021-04-20  Tags: 性能优化  点击:(392)  评论:(0)  加入收藏
一 题记最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久。原因是新功能用到旧功能的接口,而这些旧接口的 SQL 查询语句关联5,6张表且编写不够规范,导致 MySQL 在...【详细内容】
2021-03-12  Tags: 性能优化  点击:(183)  评论:(0)  加入收藏
【摘要】日常生活中,我们会遇到各种各样的数据,小到公司通讯录,大到互联网用户行为分析。在进行数据分析处理的过程中,查询是必不可少的环节,如何更加高效地进行数据查询。点击:性...【详细内容】
2021-03-03  Tags: 性能优化  点击:(148)  评论:(0)  加入收藏
▌简易百科推荐
某云上用户反馈,虚拟机cpu负载 软中断SI 指标高 ,请求云厂商协助排查 从图示来看,cpu3 软中断任务明显 ,大量的负载中断都发生在cpu3上Linux 中的中断处理程序分为上半部和下半...【详细内容】
2022-10-06  一个运维老兵  今日头条  Tags:性能优化   点击:(0)  评论:(0)  加入收藏
导读:chroot 环境为你在 Linux 中进行测试提供了隔离。本文字数:1695,阅读时长大约: 2分钟chroot 环境为你在 Linux 中进行测试提供了隔离。你无需费心创建虚拟机。相反,如果你想...【详细内容】
2022-09-30   Linux     Tags:Atoms   点击:(9)  评论:(0)  加入收藏
听完我的建议,Linux将不再困难这篇文章主要针对于正处于迷茫之时的初学者同学们,在Linux领域深耕多年的老工程师们请绕道。首先我要对各位初入茅庐的初学者们说,学习Linux千万...【详细内容】
2022-09-29  孙有匪   网易号  Tags:Linux   点击:(8)  评论:(0)  加入收藏
导读:什么是最危险的 Linux 命令?本文字数:4329,阅读时长大约: 6分钟什么是最危险的 Linux 命令?有人无数次问我这个问题,我一直避免回答,因为没有一个明确的危险的 Linux 命令清单...【详细内容】
2022-09-28  Linux     Tags:Linux 的命令   点击:(19)  评论:(0)  加入收藏
在shell中常用的特殊符号罗列如下:# ; ;; . , / \ 'string' | ! $ ${} $? $$ $* "string" * ** ? : ^ $# $@ `command` {} [] [[]] () (()) || && {xx,yy,zz,...}~ ~...【详细内容】
2022-09-28  ·随性自由的明镜cd  今日头条  Tags:Linux   点击:(25)  评论:(0)  加入收藏
1、rm -rf /*它将开始递归地删除根目录下的所有文件,在一段时间后,你的系统会冻结,并显示“删除文件错误”。一旦重新启动,你将被送到 grub-rescue 提示符下。2、echo “hello”...【详细内容】
2022-09-27  山里娃007  今日头条  Tags:linux命令   点击:(13)  评论:(0)  加入收藏
备份/etc/ssh目录# cp -rp /etc/ssh /etc/ssh.bak必要软件的安装# yum install gcc zlib zlib-devel openssl-devel查看当前OpenSSH版本# SSH -V 下载OpenSSH新版本https:/...【详细内容】
2022-09-25  互联网资讯看板     Tags:OpenSSH   点击:(26)  评论:(0)  加入收藏
据外媒报道,日前一个名为OsirisX的高手在网上放出视频,并称他给PS4装上Linux系统后,成功运行了Steam OS平台的游戏《堡垒》。黑客在PS4成功装上Linux索尼跟微软推出的PS4/Xbox...【详细内容】
2022-09-25   linux系统运维之家    Tags:PS4   点击:(23)  评论:(0)  加入收藏
在 Linux 中,最直观、最可见的部分就是 文件系统(file system)。下面我们就来一起探讨一下关于 Linux 中国的文件系统,系统调用以及文件系统实现背后的原理和思想。这些思想中...【详细内容】
2022-09-23  cxuan  今日头条  Tags:Linux   点击:(58)  评论:(0)  加入收藏
AppImages 让 Linux 开发人员可以将他们的应用程序打包到一个文件中,该文件可以安装在任何 Linux 发行版上。这极大地简化了事情。以下是如何使用它们,并将它们集成到您的桌...【详细内容】
2022-09-22  资讯早知刊   网易号  Tags:AppImage   点击:(25)  评论:(0)  加入收藏
站内最新
站内热门
站内头条