一、概念

  1. 中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力。
  2. Linux将中断处理过程分成了两个阶段:上半部和下半部
    (1)上半部用来快速处理中断,它在中断禁止模式下运行,主要处理跟硬件紧密相关的或时间敏感的工作。即硬中断,特点是快速执行。
    (2)下半部用来延时处理上半部未完成的工作,通常以内核线程的方式运行。即软中断,特点是延迟执行。

二、排查

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

linux提高GPU_linux


(1)NET_RX:表示网络接收中断,在不同 CPU 上的累积次数应该差不多

(2)NET_TX :表示网络发送中断,在不同 CPU 上的累积次数应该差不多

(3)TASKLET :是最常用的软中断实现机制,每个 TASKLET 只运行一次就会结束 ,并且只在调用它的函数所在的 CPU 上运行。所以,在不同CPU上分布可能不均匀。

(4)Linux 中的软中断包括网络收发、定时、调度、RCU 锁等各种类型

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

linux提高GPU_linux_02


3. 查看软中断内核线程

ps aux | grep softirq

linux提高GPU_linux提高GPU_03


(1)ps 的输出中,名字括在中括号里的,一般都是内核线程

(2)软中断内核线程就叫做 ksoftirqd/CPU 编号

三、实例

  1. 大量的网络小包会导致性能问题:大量的小网络包会导致频繁的硬中断和软中断
  2. 软中断高导致系统卡顿:由于环境用的ssh远程登录,在这期间hping3大量发包,导致其他网络连接延迟,ssh通过网络连接,使ssh客户端感觉卡顿现象(网络延迟丢包)。

相关工具

  1. sar 是一个系统活动报告工具,既可以实时查看系统的当前活动,又可以配置保存和报告历史统计数据。
  2. hping3 是一个可以构造 TCP/IP 协议数据包的工具,可以对系统进行安全审计、防火墙测试等。
  3. tcpdump 是一个常用的网络抓包工具,常用来分析各种网络问题。