linux网卡中断绑核

linux网卡中断绑核

什么是网卡中断?如何解决?

当网卡接收包时,会发送一个中断信号给CPU,CPU会立即放下手中的事来处理这个信号中信息,比如让这个包先放到内存中。这样的话,如果网卡只绑定一个CPU,那么当网络负载上来了之后,这个CPU将性能下降,直至系统崩溃。所以解决这个问题,就要把网卡的中断信号均衡的绑到各个CPU上

手动绑核

查看网卡通道数

root@host:~ # ethtool -l eth0
Channel parameters for eth0:
Pre-set maximums:
RX:             0
TX:             0
Other:          0
Combined:       63  #63+1为通道数
Current hardware settings:
RX:             0
TX:             0
Other:          0
Combined:       63

查看网卡中断号

root@host:~ # cat /proc/interrupts|grep $(ethtool -i eth0 |awk 'NR==5'|awk '{print $2}')|awk '{print $1$(NF)}'
190:mlx5_async@pci:0000:27:00.0
191:mlx5_comp0@pci:0000:27:00.0
192:mlx5_comp1@pci:0000:27:00.0
193:mlx5_comp2@pci:0000:27:00.0
194:mlx5_comp3@pci:0000:27:00.0
195:mlx5_comp4@pci:0000:27:00.0
196:mlx5_comp5@pci:0000:27:00.0
197:mlx5_comp6@pci:0000:27:00.0
198:mlx5_comp7@pci:0000:27:00.0
199:mlx5_comp8@pci:0000:27:00.0
200:mlx5_comp9@pci:0000:27:00.0
201:mlx5_comp10@pci:0000:27:00.0
202:mlx5_comp11@pci:0000:27:00.0
203:mlx5_comp12@pci:0000:27:00.0
204:mlx5_comp13@pci:0000:27:00.0
205:mlx5_comp14@pci:0000:27:00.0
206:mlx5_comp15@pci:0000:27:00.0
....

查看网卡所在numa_node

root@host:~ # cat /sys/class/net/eth0/device/numa_node
0

查看numa node cpu范围

root@host:~ # lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                192
On-line CPU(s) list:   0-191
Thread(s) per core:    2
Core(s) per socket:    48
Socket(s):             2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 143
Model name:            Intel(R) Xeon(R) Platinum 8468
Stepping:              8
CPU MHz:               3100.589
CPU max MHz:           2101.0000
CPU min MHz:           800.0000
BogoMIPS:              4200.00
Virtualization:        VT-x
L1d cache:             48K
L1i cache:             32K
L2 cache:              2048K
L3 cache:              107520K
NUMA node0 CPU(s):     0-47,96-143  #eth0网卡可以绑定在0-47,96-143核
NUMA node1 CPU(s):     48-95,144-191

将eth0网卡所有的中断信号帮点在numa node 0上

echo 0 > /proc/irq/190/smp_affinity_list
echo 1 > /proc/irq/191/smp_affinity_list
echo 2 > /proc/irq/192/smp_affinity_list
echo 3 > /proc/irq/193/smp_affinity_list
echo 4 > /proc/irq/194/smp_affinity_list
...
echo 80-100,110-130 > /proc/irq/194/smp_affinity_list

当网卡中断信号数大于CPU Core时,可以一个Core绑定两个中断信号

echo 0 > /proc/irq/190/smp_affinity_list
echo 0 > /proc/irq/191/smp_affinity_list

查看中断信号和核心绑定关系

root@host:~ # xinhao=`cat /proc/interrupts | grep -i 0000:27:00.0 | awk -F ":" '{print $1}'`
root@jscs-xfusion-SPR-C1-test-01:~ # for i in ${xinhao[@]};do
> echo -e "$i `cat /proc/irq/$i/smp_affinity_list`";
> done
190 0-47,96-143
191 0
192 1
193 2
194 3
195 4
196 5
197 6
198 7
199 8
200 9
201 10
202 11
203 12
204 13

自动绑核

自动绑核还没研究,主要了解操作步骤

自动绑核

如果网卡启用RDMA功能有什么好处

如果网卡启动RDMA功能,网卡可以直接访问内存,而不需要CPU的中断来进行传输数据。因此启用网卡RDMA功能,网卡的中断信号不会发给CPU。同时因为CPU不参与网卡与内存的传输,所以减轻了CPU的负载并提高可用性

当启用网卡的RDMA(Remote Direct Memory Access,远程直接内存访问)功能时,网卡可以直接访问系统内存,而不需要通过CPU的中断来进行数据传输。因此,在RDMA启用的情况下,网卡的中断信号不会发送给CPU。

RDMA技术通过在网卡和内存之间建立直接的数据传输路径,可以显著降低数据传输的延迟和CPU的负载。网卡可以直接读取和写入内存,而无需CPU介入,从而提高数据传输的效率。

传统的网络数据传输通常涉及CPU的中断处理和数据拷贝操作,这会消耗CPU的处理能力。而通过使用RDMA,数据可以直接从网卡读取到内存或从内存写入到网卡,绕过了CPU的中断处理和数据拷贝,从而减少了CPU的负担。

通过降低CPU的负载,启用RDMA可以使CPU能够更多地处理其他计算任务,提高整体系统的性能和效率。这对于需要进行大量数据传输或对CPU资源有较高要求的应用场景特别有益。

需要注意的是,RDMA的性能和效果还受到其他因素的影响,如网络带宽、延迟、驱动程序和应用程序的优化等。因此,在实际应用中,需要综合考虑系统的整体配置和需求,以确定是否启用RDMA以及如何进行正确的配置。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值