linux 绑定网卡与CPU,以提升网卡效率,避免丢包

环境为ubuntu16.04,CPU四核

操作步骤如下:

1.查看目标网卡所绑定的CPU
    1.1 # cat /proc/interrupts | grep eth1,执行结果如下:
        19     0     0    851232     0      PCI-MSI     eth1
        需要关注的参数如下:
            (1) 19 :中断号
            (2) 0  0  851232  0:分别为CPU0、CPU1、CPU2、CPU3在该网卡上处理的中断数
         
    1.2 # cat /proc/irq/19/smp_affinity,结果如下
        4
        (1)命令中的19即为上文中查询到的网卡对应中断号
        (2)4为16进制数,与CPU的关系需要以二进制掩码的方式来处理,即为0100,代表了CPU2,因此网卡此时绑定了CPU2
        
2.修改目标网卡绑定的CPU
    2.1 若想改变网卡绑定的CPU,需要先关闭irqbalance服务,它会自动平衡修改网卡与CPU核的关系,
        关闭irqbalance服务的方式如下:
        (1) 临时关闭:# /etc/init.d/irqbalance stop
        (2) 永久关闭:修改/etc/default/irqbalance文件,将ENABLED="1"改为ENABLED="0",
              再执行/etc/init.d/irqbalance stop
    2.2 关闭irqbalance服务之后,执行 echo "2" > /proc/irq/19/smp_affinity,修改eth1
              网卡绑定到CPU1上

3.更改系统启动项,将CPU1隔离,使之不被调度,其他进程也就无法在CPU1下运行了,又由于网卡eth1已经绑定到了CPU1,此时,网卡eth1独占了CPU1,保证了该网卡的高效使用
    3.1 # vim /etc/default/grub 
        修改 GRUB_CMDLINE_LINUX参数,添加isolcpus=1 nohz_full=1 rcu_nocbs=1,将CPU1在启动时隔离
    3.2 重新编译image
        # grub-mkconfig -o /boot/grub/grub.cfg
    3.3 # reboot
    
    3.4 # cat /proc/cmdline查看配置是否生效

你可能感兴趣的:(linux 绑定网卡与CPU,以提升网卡效率,避免丢包)