海光优化方案-mellanox网卡
调优建议
由于海光处理器与Intel等厂商的处理器在架构上存在不同之处,当应用迁移到海光平台时,通常需要针对海光平台进行适配及修改。针对海光平台的多NUMA架构,通常需要考虑对网卡等硬件进行中断绑定,以及针对应用进行绑定使用的CPU核心、内存的NUMA节点等,以进一步降低网络和内存访问的延迟,从而提高性能。
一、BIOS设置
进入BIOS后按F3恢复默认配置,再进行以下设置,这里的路径以英文给出:
虚拟化场景:
非虚拟化场景:
设定完成后按F4保存退出。
二、网卡中断绑定
鉴于万兆网卡为Mellanox万兆网卡,硬件中断绑定脚本需要采用Mellanox官方的脚本,该脚本可以通过安装Mellanox官网驱动来获取,也可以从如下路径进行下载:
http://www.mellanox.com/downloads/tools/mlnx_tuning_scripts.tar.gz
- 将该压缩包中的脚本解压到/usr/lib/mlnx_tuning_scripts/目录中,该目录需要手动创建;
- 查看使用的万兆网卡网口的设备名,例如enp34s0f0或enp34s0f1,查找万兆网卡所在的NUMA节点,执行下列命令查看:
cat /sys/class/net/enp34s0f0/device/numa_node
cat /sys/class/net/enp34s0f1/device/numa_node
命令输出结果为所在的NUMA节点编号,这里为2,表示网卡在NUMA node 2上。
- 通过lscpu查看NUMA node的CPU核心列表,命令输出示例如图所示,NUMA node 2的CPU核心列表为16-23,80-87:
- 创建脚本set_net_irq.sh,赋予可执行权限,脚本内容如下:
#!/bin/bash
systemctl stop irqbalance.service
ethtool -L enp34s0f0 combined 16
cd /usr/lib/mlnx_tuning_scripts
/usr/lib/mlnx_tuning_scripts/set_irq_affinity_cpulist.sh 16-23,80-87 enp34s0f0
ethtool -G enp34s0f0 rx 8192 tx 8192
或者为:
#!/bin/bash
systemctl stop irqbalance.service
ethtool -L enp34s0f1 combined 16
cd /usr/lib/mlnx_tuning_scripts
/usr/lib/mlnx_tuning_scripts/set_irq_affinity_cpulist.sh 16-23,80-87 enp34s0f1
ethtool -G enp34s0f1 rx 8192 tx 8192
脚本中的enp34s0f0或者enp34s0f1根据该节点实际使用的网口决定。将该脚本拷贝到/usr/bin目录中,然后将以下内容添加到/etc/rc.local文件末尾:
/usr/bin/set_net_irq.sh
执行该脚本以进行网卡中断绑定操作。