Linux中断原理及绑定和优化

  1. Linux中断原理及绑定和优化

1、中断处理

网线收到帧(包处理后为帧)后,会将帧拷贝到网卡内部的FIFO缓冲区,然后触发硬件中断。硬件中断函数属于网卡驱动部分。(中断处理函数会在一个CPU上运行,如果绑定了一个核就在绑定的核上运行。)

  硬中断处理函数通过构建sk_buff,把frame从网卡FIFO拷贝到内存skb中,接下来交给内核处理(调用软中断)。

因为网卡上接收网络数据包的缓存大小固定,而且相比系统内存也要小得多,所以上述拷贝动作一旦被延迟,必然造成网卡FIFO缓存溢出,进入的数据包占满了网卡的缓存,后续的包只能被丢弃。

  当然,如果软中断不及时处理内核缓存中的帧,也会导致丢包。

多队列网卡由原来的单网卡单队列变成了现在的单网卡多队列。多队列网卡是一种技术,最初是用来解决网络IO QoS quality of service)问题的,后来随着网络IO的带宽的不断提升,单核CPU不能完全处满足网卡的需求,体现最为明显的就是单核CPU处理不了网卡大量的数据包请求(软中断)而造成大量丢包,其实当网卡收到数据包时会产生中断,通知内核有新数据包,然后内核调用中断处理程序进行响应,把数据包从网卡缓存拷贝到内存。

高负载的网卡是软中断产生的大户,很容易形成瓶颈。但通过多队列网卡驱动的支持,将各个队列通过中断绑定到不同的CPU核上,以满足网卡的需求,这就是多队列网卡的应用。

多队列有多个终端号分配给多个队列。网卡会根据包头的哈希值进行分配到不同的队列,相同的包头会被分到同一个队列中。

如果绑定多个,只会在第一个上生效(前提是irqbalance关闭,不然手动绑定都不生效)

2、软中断

软中断运行所在的cpu是和其硬中断号所在CPU一致的。

如果开启rfs,rps可以把软中断分到各个CPU处理,而不需要硬件支持,大大提高了网络性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值