硬中断、软中断详解

文章目录

        什么是中断?

        什么是计算机的中断?

        什么叫硬中断、什么叫软中断?

        怎么查看硬中断、软中断

                查看硬中断的运行情况 cat /proc/interrupts

                查看软中断的运行情况 cat /proc/softirqs

        怎么排查软中断过高的问题?

        软中断注意事项

什么是中断?

举个现实生活中的例子:你正在学习,突然快递员给你打电话通知你快递到了。快递员打的电话就是中断信号,因为它中断了你的学习。你接完电话转头给女朋友说给她买的礼物到了,她就蹦跶蹦跶地去拿快递了,这个过程属于对中断信号的处理。给女朋友说完之后你继续学习,这叫中断的恢复。

什么是计算机的中断?

在计算机中,中断是系统响应硬件/软件设备消息的一种机制。系统运行时收到设备发来的信号,会打断当前进程,调用内核的中断处理程序来处理此信号,这个过程叫中断。

很明显,中断机制大大提高了系统的并发能力,但由于中断处理会打断当前程序的执行,所以中断处理越快越好。

要注意的是:中断处理程序在响应中断时,可能会"临时关闭中断",即中断处理过程中无法响应新的中断信号,意味着中断信号会无响应。以上面的收快递为例,快递员在给你电话的时候,别人就没办法再给你打电话了,所以接快递员电话的时间越短越好。

什么叫硬中断、什么叫软中断?

继续以上面的收快递为例:你正在学习,这叫当前进程;快递员给你打电话,这叫中断信号;

你接快递员电话,这叫中断处理的上半部分,可以理解为硬中断,时间很短

你挂掉电话,通知给了女朋友,她下楼去拿快递,这叫中断处理的下半部分,可以理解为软中断,处理过程比较慢,唯一好处是你立马恢复了学习;

举个计算机的例子:系统正在运行,这个时候收到一条网络消息,网卡把消息通过DMA复制到内存的RingBuffer后会向CPU发出中断信号,CPU的处理也很简单,唤醒一个内核中断进程,中断进程ksoftirqd会根据RingBuffer中的数据的IP和端口号将其拷贝到对应socket的缓冲区并唤醒对应的进程处理。其中:

1. DMA向CPU发出的信号就叫硬中断信号,CPU对该信号的处理叫硬中断处理。

硬中断的特点是向CPU发出了中断,会打断CPU当前工作,CPU的处理也很快,唤醒软中断处理就不管了。

2. CPU唤醒内核中断程序,发出的信号就叫软中断信号,中断进程对RingBuffer消息的分析处理,唤醒对应的进程,叫软中断处理

软中断的特点是由中断进程ksoftirqd处理,比较复杂且耗时。其实不仅有网络消息,系统内部也会触发软中断,比如定时器触发,内核调度,RCU锁等等。

每个CPU都有自己专属的中断进程,名字为「ksoftirqd/CPU编号」,比如第0号CPU对应的软中断内核线程的名字是 ksoftirqd/0

怎么查看硬中断、软中断

查看硬中断的运行情况 cat /proc/interrupts

 各个列的说明如下

第1列:逻辑中断号(linux分配的中断号)

第2~5列:每个逻辑CPU上中断的数

第6列:处理这个中断的中断控制器。在具有I/O APIC的系统上,大多数中断会列出IO-APIC-level或IO-APIC-edge,为自己的中断控制器

最后一列:与这个中断相关的设备名字,比如i8042一般表示键盘和鼠标,比如 virtio3-intput.0 和virtio3-output.0对应的是虚拟网卡eth3的接收和发送队列

查看软中断的运行情况 cat /proc/softirqs

 第一列表中断类型

TIMER表定时器中断;NET_TX表络发送中断;NET_RX表网络接收中断;SCHED表示内核调度中断,RCU表RCU锁中断

第2~5列表各个CPU上发生的中断计数

注意:这些数值是系统运行以来的累计中断次数,数值的大小没什么参考意义,我们更关注的是这些中断的变化速率。所以使用命令 watch -d cat /proc/softirqs 来查看软中断的变化速度,如下图

 使用命令 ps axu | grep ksoftirqd 来查看各个软中断线程,跟上面的 cat /proc/softirqs结果一一对应,每个ksoftirqd对应一个逻辑CPU

 怎么排查软中断过高的问题?

用top命令查看整体系统的运行情况,再按数字1可以查看各个cpu的详细信息(由于我手头上没有软中断高的机器,这个图是网上找的)

上图可以看到两个cpu的运行情况,虽然总体使用率不高,但是都用在了si(软中断)上。

另外,也可以看到 CPU 使用率最高的进程也是软中断 ksoftirqd/0 和ksoftirqd/1,所以可以认为此时系统的开销主要耗在了软中断

再结合命令 watch -d cat /proc/softirqs 来查看各个软中断的变化速度,看变化最快的是哪种类型的软中断

如果是网络IO型服务器,那么 NET_TX 和 NET_RX类型的软中断会比较多,再结合tcpdump工具抓包来分析,是不是有非法IP,流量是否正常,而且可结合网关服日志,一起分析

软中断注意事项

默认情况下,单队列的网卡只有一个中断号,同一时刻只能绑定到一个CPU上。虚拟机上很容易出现机器有多个CPU,但只有一个CPU繁忙的情况。

解决办法有多种

1. 把网卡改为多队列网卡,虚拟机可通过镜像设置

2. 设置多CPU中断亲和性配置

3. 设置网卡负载均衡

具体办法参见这几篇博客

软中断竟然是可一个CPU使劲造? - 知乎

软中断处理方法_51CTO博客_软中断

【转】ksoftirqd进程耗尽单核100%si处理软中断导致性能瓶颈 - 简书

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

noSQL的小练习

目录 Redis: 1、 string类型数据的命令操作: 2、 list类型数据的命令操作: 3、 hash类型数据的命令操作: MongoDB: 1. 创建一个数据库 名字grade 2. 数据库中创建一个集合名字 class 3. 集合中插入若…

接入端口与中继端口

交换机端口是支持 IT 的基本组件,可实现网络通信。这些有线硬件设备负责连接并允许在不同设备和连接到其端口的网络部分之间进行数据传输。由于网络管理员在确保网络连接和可用性方面发挥着关键作用,因此网络管理员必须清楚地了解、映射和查看其网络交换…

从小白到大神之路之学习运维第64天--------Zabbix监控mysql、ftp服务以及自定义配置

第三阶段基础 时 间:2023年7月19日 参加人:全班人员 内 容: Zabbix监控mysql、ftp服务以及自定义 目录 一、Zabbix监控mysql数据库 二、Zabbix监控ftp服务 三、Zabbix自定义监控项 整体zabbix搭建完成,server端huyang1监…

SpringBoot中整合Sharding Sphere实现数据加解密/数据脱敏/数据库密文,查询明文

场景 为防止数据泄露,需要在插入等操作时将某表的字段在数据库中加密存储,在需要查询使用时明文显示。 Sharding Sphere ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈, 它由Sharding-JDBC、Sharding-Proxy和Shardi…

确认应答机制与超时重发机制【TCP原理(笔记一)】

文章目录 通过序列号与确认应答提高可靠性正常的数据传输数据包丢失的情况确认应答丢失的情况发送的数据 重发超时如何确定 通过序列号与确认应答提高可靠性 在TCP中,当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做…

iOS 中支持点击网页scheme超链接打开其他app

网页内容如图所示 思路,点击网页中一个href 超链接的时候,会执行 decidePolicyForNavigationAction 方法,我们在改方法中截获URL, 判断如果是URL scheme类型的,则执行 [[UIApplication sharedApplication]openURL:URL…

Tabby - 本地化AI代码自动补全 - Windows10

参考: https://github.com/TabbyML/tabby 为什么选择Tabby 已经有好几款类似强劲的代码补全工具,如GitHub Copilot,Codeium等,为什么还要选择Tabby? Tabby除了和其他工具一样支持联网直接使用之外,还支持本地化部…

椒图——靶场模拟

先查看ip,10.12.13.232模拟的外网ip,其他的模拟内网ip,服务里面搭建好的漏洞环境。 #第一个测试项目,web风险发现 新建,下发任务,点威胁检测,webshell,点扫描任务,点新…

Star History 月度开源精选|2023 年 6 月

上一期 Star History 月度精选是写给市场、运营人员的,而这一期回归到 DevTools 类别,我们六月发现了好一些开发者可以用的不错工具! AI Getting Started 还记得 Supabase “Build in a weekend” 的广告词吗!AI Getting Started…

消息队列——RabbitMQ基本概念+容器化部署和简单工作模式程序

目录 基本概念 MQ 的优势 1.应用解耦 2.异步提速 3.削峰填谷 MQ 的劣势 使用mq的条件 常见MQ产品 RabbitMQ简介 RabbitMQ的六种工作模式 JMS RabbitMQ安装和配置。 RabbitMQ控制台使用。 RabbitMQ快速入门——生产者 需求: RabbitMQ快速入门——消费者 小结 基本概…

S32 Design Studio for ARM(S32DS)下载和安装

1. S32 Design Studio for ARM 介绍 S32 Design Studio for ARM(下面简称S32DS),是 NXP 官方在 2014 年官方推出的,专门面向 S32K、KEA、MAC57D54H等系列微控制器的集成开发环境。 S32DS是由Eclipse和一些插件集成而来的开发平台…

MYSQL数据库-数据库的学习

MYSQL数据库-数据库的学习 MYSQL数据库一、数据库的基本概念二、常见的数据库三、MySQL数据库四、SQL操作五、SQL高级操作六、SQL函数(SQL 拥有很多可用于计数和计算的内建函数) MYSQL数据库 一、数据库的基本概念 1、数据库的英文单词:DataBase 简称 : DB 2、什么…

2023年经典【自动化面试题】附答案

一、请描述一下自动化测试流程? 自动化测试流程一般可以分为以下七步: 编写自动化测试计划; 设计自动化测试用例; 编写自动化测试框架和脚本; 调试并维护脚本; 无人值守测试; 后期脚本维…

MySQL中这14个小玩意,让人眼前一亮!!!

前言 我最近几年用MYSQL数据库挺多的,发现了一些非常有用的小玩意,今天拿出来分享到大家,希望对你会有所帮助。 1.group_concat 在我们平常的工作中,使用group by进行分组的场景,是非常多的。 比如想统计出用户表中…

uniapp调接口出现跨域问题。

今天在写uniapp项目的时候,使用在线模拟接口的时候,出现跨域问题。 【问题描述】: ①在内嵌浏览器运行,不会出现跨域问题,好像是内嵌浏览器自动去掉了跨域问题。 ②在外部浏览器调用的时候会出现跨域问题。&#xf…

MIT 6.829 -- L2 The Internetworking Problem

MIT 6.829 -- L2 The Internetworking Problem 前言The Internetworking Problem: Many Different NetworksGateWays互联网设计原则通用性原则健壮性原则互联网缺点互联网协议标准流程 最早的TCP/IP今天的TCP/IP: IPv4地址分片和重组Time-to-live(TTL)Ty…

使用亚马逊(AWS)云服务在S3上实现图片缩放功能(CloudFront/S3[AccessPoint/LambdaAccessPoint])

亚马逊云服务中的S3对象存储功能和国内阿里云的oss对象存储使用基本一致。但是涉及到存储内容处理时,两家有些差别。 比如:对于云存储中的图片资源,阿里云比较人性化对于基本的缩放裁剪功能已经帮我们封装好了,只需要在url地址后…

11. 利用Tomcat服务器配置HTTPS双向认定

文章目录 Tomcat配置HTTPS1.为服务器生成证书2.为客户端生成证书3.让服务器信任客户端证书4.将该文件导入到服务器的证书库,添加为一个信任证书使用命令如下:5.查看证书库6.让客户端信任服务器证书7.配置tomcat8.验证 Tomcat配置HTTPS 1.启动cmd控制台&…

PostgreSQL考试难不难 ?

当涉及到PostgreSQL考试的详细难度,以下是一些可能涉及的主题和考点,这些主题在不同的考试中可能有所不同: 1.数据库基础知识:数据库的基本概念、关系型数据库模型、表、字段、主键、外键等。 2.SQL语言:对SQL语言的掌…

【力扣】543. 二叉树的直径

543. 二叉树的直径 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。两节点之间路径的 长度 由它们之间边数表示。 示例 1: 输入:root…