您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > 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:性能优化   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Elasticsearch 性能优化详解
硬件配置优化升级硬件设备配置一直都是提高服务能力最快速有效的手段,在系统层面能够影响应用性能的一般包括三个因素:CPU、内存和 IO,可以从这三方面进行 ES 的性能优化工作。...【详细内容】
2024-03-07  Search: 性能优化  点击:(25)  评论:(0)  加入收藏
重温网站页面性能优化的34条黄金守则,让您的网站飞起来!
导语:作为网站运营者,我们都希望自己的网站能够拥有卓越的性能,让用户获得更好的体验。那么,如何实现这一目标呢?今天,就让我们一起来重温一下网站页面性能优化的34条黄金守则,让您...【详细内容】
2024-01-04  Search: 性能优化  点击:(78)  评论:(0)  加入收藏
MySQL数据库性能优化中常用的方法是什么?
MySQL是目前广泛使用的关系型数据库系统,随着数据量的不断增加和业务需求的提升,MySQL数据库性能优化已经成为开发人员和DBA必须面对的一个重要问题。查询语句是MySQL数据库中...【详细内容】
2023-12-26  Search: 性能优化  点击:(116)  评论:(0)  加入收藏
前端性能优化应该怎么做?
前言最近零零散散的对刚接手的一个新项目做了一些优化,白屏、打包相关的内容都涉及到了,写一篇文章来记录一下。白屏相关DNS预解析、资源预加载对于项目中有很多静态资源涉及...【详细内容】
2023-12-15  Search: 性能优化  点击:(91)  评论:(0)  加入收藏
Rust性能优化指南:写出更快的代码
在Rust编程中,性能优化是一个至关重要的话题。Rust虽然以其高效性能闻名,但正确的优化技巧能够进一步提升代码的运行速度和资源利用率。今天我们就来详细探讨一些Rust性能优化...【详细内容】
2023-11-24  Search: 性能优化  点击:(211)  评论:(0)  加入收藏
电脑性能优化:提升你的电脑速度和效率
随着科技的不断发展,电脑已经成为我们日常生活和工作中不可或缺的工具。然而,随着使用时间的增长,电脑的性能可能会逐渐下降,影响我们的工作效率。本文将介绍一些电脑性能优化的...【详细内容】
2023-11-21  Search: 性能优化  点击:(203)  评论:(0)  加入收藏
GPU架构与渲染性能优化
Labs 导读在开发图形渲染应用时,渲染性能优化是一个绕不开的主题,开发者往往遵循一些优化准则来构建自己的应用程序,包括数据合并、模型减面、减少采样次数、减少不必要渲染等...【详细内容】
2023-11-20  Search: 性能优化  点击:(178)  评论:(0)  加入收藏
如何进行Redis性能优化?这一篇就够了
Redis 是一款高性能的内存数据存储系统,它被广泛应用于各种实时数据处理场景,如缓存、消息队列、实时统计等。为了最大化 Redis 的性能,我们应该针对具体应用场景,对其配置参数...【详细内容】
2023-11-10  Search: 性能优化  点击:(122)  评论:(0)  加入收藏
MySQL日志:确保数据完整性与性能优化的关键措施
MySQL日志在MySQL服务器上生成,无论使用哪种存储引擎,这些日志都是必不可少的。它们包括错误日志、查询日志、二进制日志和慢查询日志。每种日志都有其特定的作用和重要性,对于...【详细内容】
2023-11-10  Search: 性能优化  点击:(110)  评论:(0)  加入收藏
.Net8顶级性能优化:类型转换
1.前言.Net8通过各种骚操,把性能提升到了前所未有的高度。超越以往任何版本,也涵盖了后续版本,比如.NET9或许可能没有如此大的性能优化了。本篇来看下它其中的一个优化:类型转...【详细内容】
2023-11-06  Search: 性能优化  点击:(276)  评论:(0)  加入收藏
▌简易百科推荐
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08    IT之家  Tags:Linux   点击:(6)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  凡夫编程  微信公众号  Tags:Linux安全   点击:(16)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  编程技术汇  微信公众号  Tags:Linux   点击:(10)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25    IT之家  Tags:Linux   点击:(12)  评论:(0)  加入收藏
轻松实现Centos系统的软件包安装管理:yum指令实战详解
yum 是一种用于在 CentOS、Red Hat Enterprise Linux (RHEL) 等基于 RPM 的 Linux 发行版上安装、更新和管理软件包的命令行工具。它可以自动解决软件包依赖关系,自动下载并...【详细内容】
2024-02-27  凡夫贬夫  微信公众号  Tags:Centos   点击:(54)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27    IT之家  Tags:Ubuntu   点击:(50)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  王建立    Tags:Linux   点击:(53)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01    简易百科  Tags:Linux   点击:(77)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  松鼠宝贝    Tags:Linux内核   点击:(69)  评论:(0)  加入收藏
如何确保Linux进程稳定与持久
在Linux系统中,进程的稳定性与持久性对于维持系统的持续运行至关重要。然而,由于各种原因,进程可能会面临崩溃或系统重启的情况。为了确保关键进程能够持续运行,我们必须采取一...【详细内容】
2024-01-19  松鼠宝贝    Tags:Linux进程   点击:(85)  评论:(0)  加入收藏
站内最新
站内热门
站内头条