网卡软中断过高
当网卡收到数据包时会产生中断,通知内核有新数据包,然后内核调用中断处理程序进行响应,把数据包从网卡缓存拷贝到内存
中断
# cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
3: 204093 942723 502178 584481 GICv2 30 Level arch_timer
7: 0 0 0 0 GICv2 175 Level arm-pmu
8: 0 0 0 0 GICv2 176 Level arm-pmu
9: 0 0 0 0 GICv2 177 Level arm-pmu
10: 0 0 0 0 GICv2 178 Level arm-pmu
13: 0 0 0 0 GICv2 156 Level zynqmp-dma
14: 0 0 0 0 GICv2 157 Level zynqmp-dma
15: 0 0 0 0 GICv2 158 Level zynqmp-dma
16: 0 0 0 0 GICv2 159 Level zynqmp-dma
17: 0 0 0 0 GICv2 160 Level zynqmp-dma
18: 0 0 0 0 GICv2 161 Level zynqmp-dma
19: 0 0 0 0 GICv2 162 Level zynqmp-dma
20: 0 0 0 0 GICv2 163 Level zynqmp-dma
23: 45766295 0 0 0 GICv2 95 Level eth0, eth0
配置中断均衡
法一:
# echo f > /proc/irq/23/smp_affinity
以十六进制输入
法二:
# echo 0-3 > /proc/irq/23/smp_affinity_list
法三:
# apt-get install irqbalance
查看软中断占用
cat /proc/softirqs
CPU0
HI: 1
TIMER: 247177394
NET_TX: 1300
NET_RX: 322174830
BLOCK: 2828269
BLOCK_IOPOLL: 0
TASKLET: 16
SCHED: 0
HRTIMER: 0
RCU: 178199932
RPS/RFS
RPS 全称是 Receive Packet Steering,这是Google工程师 Tom Herbert (therbert@google.com )提交的内核补丁,在2.6.35进入Linux内核。这个patch采用软件模拟的方式,实现了多队列网卡所提供的功能,分散了在多CPU系统上数据接收时的负载,把软中断分到各个CPU处理,而不需要硬件支持,大大提高了网络性能。
RFS 全称是 Receive Flow Steering,这也是Tom提交的内核补丁,它是用来配合RPS补丁使用的,是RPS补丁的扩展补丁,它把接收的数据包送达应用所在的CPU上,提高cache的命中率。
配置RPS/RFS
# cat /proc/sys/net/core/rps_sock_flow_entries
# echo N > /proc/sys/net/core/rps_sock_flow_entries
N:根据活跃连接数来配置
# cat /sys/class/net/eth0/queues/rx-0/rps_flow_cnt
# echo N > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt
eth0:网卡设备(可能多个)
rx-0:接收队列(可能多个)
N:rps_sock_flow_entries/接收队列的数量(做除法)
可以使用Netperf做性能测试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!