中断是一种异步的事件处理机制,可以提高系统的并发处理能力,为了减少对正常进程运行调度的影响,中断程序就需要尽可能快的运行。
中断处理程序分为上半部和下半部:上半部对应硬件中断,用来快速处理中断;下半部对应软中断,用来异步处理上半部未处理的工作。

软中断查看

查看软中断可以把通过如下命令查看

  • /proc/softirqs 提供了软中断的运行情况;

cat /proc/softirqs

image.png

HI 最高优先级,用于处理TASKLET_HI
TIMER 用于处理每个CPU的计时器中断
NET_TX 网络接收中断
NET_RX 网络发送中断
BLOCK 用于处理块设备[block device]的中断
IRQ_POLL 执行IOPOLL的回调函数
TASKLET 处理tasklet
SCHED 处理调度函数相关的IPI和执行CFS的负载均衡
HRTIMER 暂未使用
RCU 处理RCU中断,最低优先级

硬中断查看

硬中断可以通过/proc/interrupts 查看

cat /proc/interrupts

image.png

软中断CPU使用率高硬度方案

分析工具: sar 、hping3、tcpdump

  • sar 可以用来查看系统的网络收发情况,还有一个好处是,不仅可以观察网络收发的吞吐量(BPS,每秒收发的字节数),还可以观察网络收发的 PPS,即每秒收发的网络帧数。
  • hping3 是一个可以构造 TCP/IP 协议数据包的工具,可以对系统进行安全审计、防火墙测试等。
  • tcpdump 是一个常用的网络抓包工具,常用来分析各种网络问题。


-n DEV 表示显示网络收发的报告,间隔 1 秒输出一组数据

$ sar -n DEV 1 Linux 2.6.32-573.18.1.el6.toav2.x8664 (map-trafficft-offline10.gz01) 06/07/2020 _x86_64 (48 CPU)

12:07:34 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 12:07:35 PM lo 58.00 58.00 8.88 8.88 0.00 0.00 0.00 12:07:35 PM eth0 187.00 214.00 70.37 37.01 0.00 0.00 0.00

12:07:35 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00

对输出结果进行分析,从左往右依次是:

  • 第一列:表示报告的时间。
  • 第二列:IFACE 表示网卡。
  • 第三、四列:rxpck/s 和 txpck/s 分别表示每秒接收、发送的网络帧数,也就是 PPS。
  • 第五、六列:rxkB/s 和 txkB/s 分别表示每秒接收、发送的千字节数,也就是 BPS。
  • 后面的其他参数基本接近 0,显然跟今天的问题没有直接关系,你可以先忽略掉。

$ tcpdump -i eth0 -n tcp port 8081

tcpdump -i eth0 -n tcp port 8081

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

12:20:56.359741 IP 100.70.0.3.65372 > 100.90.64.54.tproxy: Flags [S], seq 2465137056, win 5000, length 0

12:20:56.359750 IP 100.90.64.54.tproxy > 100.70.0.3.65372: Flags [S.], seq 1476434816, ack 2465137057, win 14600, options [mss 1460], length 0

12:20:56.461846 IP 100.70.0.3.65372 > 100.90.64.54.tproxy: Flags [R.], seq 1, ack 1, win 5000, length 0

12:20:56.971301 IP 10.89.81.58.12862 > 100.90.64.54.tproxy: Flags [S], seq 2702207804, win 29200, options [mss 1460,sackOK,TS val 618357593 ecr 0,nop,wscale 10], length 0

12:20:56.971311 IP 100.90.64.54.tproxy > 10.89.81.58.12862: Flags [S.], seq 4130117681, ack 2702207805, win 14480, options [mss 1460,sackOK,TS val 1297998790 ecr 618357593,nop,wscale 7], length 0