操作系统:中断

news/2024/10/19 1:29:12/

目录

      • 什么是中断
      • 什么是软中断
      • 系统里有哪些软中断?
      • 如何定位软中断 CPU 使用率过高的问题?
      • 参考资料

什么是中断

中断是操作系统用来响应硬件设备请求的一种机制,操作系统收到硬件的中断请求,会打断正在执行的程序,然后调用内核中的中断处理程序来响应请求。

中断是一种异步的事件处理机制,可以提高系统的并发处理能力。

系统收到了中断请求会打断其他程序,所以中断的响应程序,要尽可能快的执行完,减少对正常程序运行的调度影响。并且,中断处理程序在响应中断时,会临时关闭中断,即如果系统当前的中断程序没执行完的话,其他中断无法被响应,即中断有可能会丢失,所以中断处理程序要短且快

什么是软中断

Linux系统为了解决中断处理程序执行时间过长和中断丢失问题,将中断过程分为了两个部分:

  • 上半部分:用来快速处理中断,一般会暂时关闭中断请求,主要负责处理和硬件紧密相关或者时间敏感的事情。
  • 下半部分:用来延时处理上半部分未完成的工作,一般以内核线程的方式运行。

中断处理程序的上部分和下半部可以理解为:

  • 上半部直接处理硬件请求,即硬中断,主要负责耗时短的工作,特点是快速执行;
  • 下半部是由内核触发,即软中断,主要负责上半部未完成的工作,通常都是耗时比较长的事情,特点是延迟执行;

软中断不只是包括硬件设备中断处理程序的下半部,一些内核自定义事件也属于软中断,比如内核调度RCU 锁(内核里常用的一种锁)等。

系统里有哪些软中断?

Linux 系统中,可以通过查看 /proc/softirqs 的 内容来知晓「软中断」的运行情况,以及 /proc/interrupts 的 内容来知晓「硬中断」的运行情况。

每一个 CPU 都有自己对应的不同类型软中断的累计运行次数,有 3 点需要注意下:

  • 第一点,软中断一般包括了 10 个类型,分别对应不同的工作类型,比如 NET_RX 表示网络接收中断,NET_TX 表示网络发送中断、TIMER 表示定时中断、RCU 表示 RCU 锁中断、SCHED 表示内核调度中断。
  • 第二点,要注意同一种类型的软中断在不同 CPU 的分布情况,正常情况下,同一种中断在不同 CPU 上的累计次数相差不多。
  • 第三点,系统的中断次数的变化速率才是我们要关注的,我们可以使用 watch -d cat /proc/softirqs 命令查看中断次数的变化速率。

如何定位软中断 CPU 使用率过高的问题?

每一个 CPU 都有各自的软中断内核线程,我们还可以用 ps 命令来查看内核线程,一般名字在中括号里面到,都认为是内核线程。

如果在 top 命令发现,CPU 在软中断上的使用率比较高,而且 CPU 使用率最高的进程也是软中断 ksoftirqd 的时候,这种一般可以认为系统的开销被软中断占据了。

这时就可以分析是哪种软中断类型导致的,一般来说都是因为网络接收软中断导致的,如果是的话,可以用 sar 命令查看是哪个网卡的有大量的网络包接收,再用 tcpdump 抓网络包,做进一步分析该网络包的源头是不是非法地址,如果是就需要考虑防火墙增加规则,如果不是,则考虑硬件升级等。

参考资料

《小林 coding》

《深入理解计算机系统 第3版》


http://www.ppmy.cn/news/63288.html

相关文章

链路,设备,带宽冗余技术

链路冗余: 一.设计冗余的目的——提高可靠性(通信时一条路不通走另一条路即冗余链路) 采用具有冗余的核心层,分布层和接入层,试图消除网络中的单点故障二.实施冗余的注意事项 1.MAC数据库不稳定—MAC地址表中的内容不…

思享工具箱,各种工具汇总

站长,开发者常用在线工具集合 - 思享工具箱 思享工具箱,各种工具汇总 https://tool.4xseo.com/ JSON工具 Json格式化 Json格式化(上下) Json格式化(左右) Json在线压缩转义 Json生成C#实体类 Json生成Java实体类 Json生成Go结构…

达梦:dts工具迁移mysql decimal(65,30)的字段,报精度超出定义

本文旨在分享迁移MySQL decimal字段​​​​​​​时遇到“精度超出定义”问题时,如何理解MySQL和达梦对于decimal 等这一类数值数据类型。 1.了解达梦的数值数据类型定义 ​​​​​​​​​​​​​​NUMERIC 类型 语法:NUMERIC[(精度 [, 标度])]功…

IO-BIO概述

介绍 ​ BIO就是: blocking IO,同步阻塞IO。应用程序向操作系统请求网络IO操作,这时应用程序会一直等待;另一方面,操作系统收到请求后,也会等待,直到网络上有数据传到监听端口;操作系统在收集数…

简单实现基于UDP与TCP的回显服务器

目录 前言UDP 版的回显服务器需要用到的 api服务端客户端UDP 版本的字典客户端和字典服务器 TCP 版的回显服务器需要用到的 api服务器客户端对服务器进行改进(使用线程池)TCP 版本的字典客户端和字典服务器 前言 我们写网络程序, 主要编写的是应用层代码. 真正要发送这个数据,…

华为OD机试真题-24点运算【2023】【JAVA】

一、题目描述 计算24点是一种扑克牌益智游戏,随机抽出4张扑克牌,通过加(+),减(-),乘(*), 除(/)四种运算法则计算得到整数24,本问题中,扑克牌通过如下字符或者字符串表示,其中,小写joker表示小王,大写JOKER表示大王:3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER 本程序要…

golang实现关键路径算法

关键路径算法(Critical Path Method,简称CPM)是一种用于项目管理的技术,主要用于计算项目中的关键路径和关键活动。关键路径是指项目中的最长路径,决定了项目的最短完成时间。关键活动是指在关键路径上的活动&#xff…

SRVCC流程及异常场景介绍

SRVCC(Single Radio Voice Call Continuity)用于在LTE和3G网络之间,实现VoLTE电话无缝切换到3G网络。用户正在使用VoLTE电话进行通话,当他们移出了LTE网络覆盖范围,SRVCC技术会自动将电话切换到3G网络,从而保持通话不中断。 关键流程如下 UE(用户设备)向MME(移动管理…