硬中断、软中断详解

news2024/11/26 5:21:48

文章目录

        什么是中断?

        什么是计算机的中断?

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

        怎么查看硬中断、软中断

                查看硬中断的运行情况 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处理软中断导致性能瓶颈 - 简书

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

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

相关文章

win11 win+e 打开我的电脑

在打开的【文件资源管理器】中,找到【选项】菜单,并点击该菜单 在打开的弹框中,将选项卡切换到【常规】,将【打开文件资源管理器时打开】后的下拉框,选择为【此电脑】,然后,点击保存即可。到此&…

8.1Java EE——Spring AOP

Spring的AOP模块是Spring框架体系中十分重要的内容,该模块一般适用于具有横切逻辑的场景,如访问控制、事务管理和性能监控等 一、AOP概述 AOP的全称是Aspect Oriented Programming,即面向切面编程。和OOP不同,AOP主张将程序中相同…

AndroidStudio中添加翻译插件:Translation

背景 开发中经常要阅读源码等,就会涉及翻译(特别是英语不好的在下),之前一直是复制到百度或者谷歌进行翻译。终于,偶然找到了一款好用的as内直接用的翻译插件。 安装流程 1. 安装插件 打开as,依次点击&am…

【动手学深度学习】--11.经典卷积神经网络 LeNet

文章目录 经典卷积神经网络 LeNet1.LeNet2.代码实现3.模型训练 经典卷积神经网络 LeNet 学习视频:经典卷积神经网络 LeNet【动手学深度学习v2】 官方笔记:卷积神经网络(LeNet) 1.LeNet 总体来看,LeNet(L…

SpringBoot如何启用/禁用执行器?

SpringBoot如何启用/禁用执行器? 一、什么是SpringBoot执行器二、如何启用SpringBoot执行器三、如何禁用SpringBoot执行器 一、什么是SpringBoot执行器 在Spring Boot中,执行器(Actuator)是一个用于监控和管理应用程序的功能模块…

关于WIN10创建系统映像时D盘为系统盘的解决方案

文章目录 问题:使用WIN10自带备份工具时,创建系统映像时,D盘被识别为系统盘的解决方案。方法一(传统方法,删盘符)方法二(对症下药,找原因)第一个选项是暂时将服务的Image…

Nature Neuroscience:慢波、纺锤波和涟波耦合如何协调人类睡眠期间的神经元加工和通信

摘要 学习和可塑性依赖于休息期间神经元回路的微调调节。一个尚未解决的难题是,在没有外部刺激或有意识努力的情况下,睡眠中的大脑如何协调神经元的放电率(FRs)以及神经回路内外的通信,以支持突触和系统巩固。利用颅内脑电图对人类海马体和周…

SuperGlue学习记录之最优传输

在进行最优传输相关理论的学习过程中,找到SuperGlue这篇论文,该篇论文通过最优传输来完成特征点的匹配过程。 SuperGlue结构 先来看一下其结构: 首先将两张图片送入特征提取网络,通过卷积网络提取出特征,主要有四个值…

Windows特殊名称文件夹删除

问题描述: 使用React开发的前端项目,指定build输出路径是创建出了俩个特殊的文件夹 .. build 咋一看build显得很正常,那你是没看见同时出现了俩个build: 尝试使用 dir /x rd /S /Q 等删除目录无果 尝试下载删除文件夹的工具也没…

【windows测试通过】关于Godot导入外部音频文件的问题

file.open(filepath, file.READ) var buffer file.get_buffer(file.get_len()) #put data into audiostreamsample var stream AudioStreamSample.new() stream.data buffer 代码给出,还没有测试过。(godot3.2测试未通过) 在运行时轻松加载外部音频…

大数据传输安全风险与预防措施

随着互联网技术的快速发展和大数据时代的到来,大数据传输已成为越来越重要的环节。但由于网络传输过程中存在着各种安全风险,这些风险极有可能会导致机密数据泄露、网络攻击等问题,对企业和个人的信息安全造成潜在的威胁。因此,保…

【个人笔记】对linux中一切皆文件的理解与ls命令

目录 Linux中一切皆文件ls命令常用参数常用命令lscpu lspci Linux中一切皆文件 理解参考:为什么说:Linux中一切皆文件? ls命令 ls(英文全拼: list directory contents)命令用于显示指定工作目录下之内容…

数据可视化组件有什么用?

数据可视化组件在数据分析中扮演着至关重要&角色。 通过图表、图形和交互式界面,数据可视化组件帮助将复杂的数据转化为易于理解的视觉展示。这种形式的数据呈现有助于发现模式、趋势和异常,并能够快速有效地传达数据的含义和洞察。 下面简单举两个…

volatile 关键字 (详细解析)

目录 前置知识 共享变量不可见性 JMM volatile 关键字 使用volatile关键字 加锁 volatile 关键字 -- 更深入的问题 volatile不保证原子性 volatile禁止指令重排序 前置知识 共享变量不可见性 在多线程并发执行下,多个线程修改共享的成员变量&#xff0…

Android自动化测试之uiautomator2使用

uiautomator2是uiautomator的升级版本,增加了对AccessibilityService服务的支持,当然在appium1.7版本以上进行支持,本篇文章介绍一下它的使用。 安装 安装方式很简单: pip install uiautomator2 进行初始化: pyth…

java版Spring Cloud+Spring Boot+Mybatis+uniapp 企业电子招投标采购系统源码

随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及审计监督要…

zabbix 企业级监控(2) 监控linux主机

目录 配置开始 Zabbix添加linux主机 4.为agent.zabbix.com添加模板 环境: (隔天做的更换了IP,不影响实际操作) IP 192.168.50.50 关闭防火墙规则 更改主机名 [rootlocalhost ~]# vim /etc/hostname agent.zabbix.com [rootloca…

myAgv智能移动底盘的slam算法学习以及动态避障

前言 随着科技得越来越发达,人工智能,自动驾驶导航等字眼频频出现在我们得眼前。但是目前来说自动驾驶并没有得到很全面得普及,还在进行不断的开发和测试当中。从小就爱好车的我,对这项技术也很是感兴趣。 偶然间在上网的时候买…

spring注解开发-spring12

如果使用注解开发,就不需要了写 再测试,也无误 如果你只写类型,只写autowired 如果按照名称注入,你不仅写autowired,还要靠内fea尔 Resource也可以完成注入: 同样是注入bean中id的值 现在我们使用Value…

OpenCV+VS 环境配置(以OpenCV4.7.0+VS2022环境配置为例)

下面以4.7.0版本的OpenCV与VS2022的环境配置为例进行介绍,其他版本的OpenCV与VS的环境配置也可参考本流程。 1.安装OpenCV库 下载网址:https://opencv.org/releases/ 2.配置环境设置 2.1 系统环境变量 1.右击桌面的此电脑图标,点击属性→…