linux性能-05-linux软中断基础 and 软中断使用率升高处理方法

中断基础

  • 中断的定义:中断是系统用来响应硬件设备请求的一种机制,他会打断进程的正常调度和执行,然后调用内核中的终端处理程序来响应设备的请求
  • 中断生活示例: 就像你定外卖,如果一直在楼下等外卖小哥,那你就其他啥事做不了。但是如果你和小哥说好了,等他到了你打电话给你。那在他来之前你就可以做其他时间了
  • 中断特性:
    • 中断时间要短,避免影响正常进程运行调度的影响
    • 外卖为例:如果点了两个外卖,第一个外卖打电话给你打了十分钟,那第二个外卖就只能在那一直等了

软中断

  • linux将中断分为上半部分和下半部分
    • 上半部分用来快速处理中断
    • 下半部分用来延迟处理上半部分未完成的工作,通常以内核线程的方式运行
    • 外卖为例:你和外卖小哥打电话是上半部分,你下去取外卖是下半部分
    • 网卡举例:
      • 上半部分:将网卡来的数据读到内存
      • 下半部分:软中断信号唤醒后,需要从内存中找到网络数据,再按照网络协议栈,对数据进行逐层解析,直到送给应用程序
    • 简单理解:
      • 上半部分:上半部分直接处理硬件请求,硬中断,特点是立即执行
      • 下半部分:由内核触发,软中断,特点是延迟执行
    • linux软中断举例
      • 网络收发,定时,调度,rcu锁

软中断案例分析

  • 1, 首先用top看看cup使用率都在哪里,假设使用率很多在si(软中断)上
  • 2, 运行 watch -d cat /proc/softirqs 查看文件内容的定时变化
    • net_rx 变化大,可能是网络收发引起过多软中断
$ watch -d cat /proc/softirqs
                    CPU0       CPU1
          HI:          0          0
       TIMER:    1083906    2368646
      NET_TX:         53          9
      NET_RX:    1550643    1916776
       BLOCK:          0          0
    IRQ_POLL:          0          0
     TASKLET:     333637       3930
       SCHED:     963675    2293171
     HRTIMER:          0          0
         RCU:    1542111    1590625 
  • 3,sar 查看网络运行状态
    • 第一列:表示报告的时间。
    • 第二列:IFACE 表示网卡。
    • 第三、四列:rxpck/s 和 txpck/s 分别表示每秒接收、发送的网络帧数,也就是 PPS。
    • 第五、六列:rxkB/s 和 txkB/s 分别表示每秒接收、发送的千字节数,也就是 BPS。

# -n DEV 表示显示网络收发的报告,间隔1秒输出一组数据
$ sar -n DEV 1
15:03:46        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
15:03:47         eth0  12607.00   6304.00    664.86    358.11      0.00      0.00      0.00      0.01
15:03:47      docker0   6302.00  12604.00    270.79    664.66      0.00      0.00      0.00      0.00
15:03:47           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15:03:47    veth9f6bbcd   6302.00  12604.00    356.95    664.66      0.00      0.00      0.00      0.05
  • 4, 通过tcpdump定位活跃应用程序端口的数据
# -i eth0 只抓取eth0网卡,-n不解析协议名和主机名
# tcp port 80表示只抓取tcp协议并且端口号为80的网络帧
$ tcpdump -i eth0 -n tcp port 80
15:11:32.678966 IP 192.168.0.2.18238 > 192.168.0.30.80: Flags [S], seq 458303614, win 512, length 0
...
  • 5,解决办法:
    • SYN FLOOD 原理:基于tcp三次握手
    • SYN FLOOD 问题最简单的解决方法,就是从交换机或者硬件防火墙中封掉来源 IP,这样 SYN FLOOD 网络帧就不会发送到服务器中。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值