中断是一种异步的事件处理机制,可以提高系统的并发处理能力,为了减少对正常进程运行调度的影响,中断程序就需要尽可能快的运行。
中断处理程序分为上半部和下半部:上半部对应硬件中断,用来快速处理中断;下半部对应软中断,用来异步处理上半部未处理的工作。
软中断查看
查看软中断可以把通过如下命令查看
- /proc/softirqs 提供了软中断的运行情况;
cat /proc/softirqs
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
软中断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