性能调优概览
1、本调优是在“网卡性能调优常用步调和技巧 v1.0”基础上举行的补充, 对于 v1.0 已经有的调优说明部分,这里就一笔带过,不做过多的说明。必要的时 候直接参考 V1.0 版本即可
2、总结归纳一下,网卡性能调优主要是增长网卡的带宽性能和制止网络数据传 输的 drop/error。跟网卡性能相干的地方有“(1)网卡 firmware、 (2)网卡 driver、 (3)OS kernel、(4)CPU 处置惩罚本事、(5)BIOS 选项的设置、(6)网卡本身功 能参数的设置等”。
3、目前曙光在用的网卡有 Intel、Mellanox、Broadcom,由于不同的厂商他们的 网卡参数设置不太一样,所以本文档会根据厂商的不同分别调优
4、由于曙光有 Intel 平台、AMD 平台、Hygon 平台,每个平台的架构也不太一样, 所以本文档也会根据 CPU 平台的不同分别调优。
一、根本配置要求
1. 服务器:建议选择两台配置完全一样的服务器,方便背面 Debug;
2. CPU:建议选择型号比较高的 cpu,因为 cpu 的处置惩罚本事直接关系到网卡 性能;
3. 内存:单颗 CPU 最少要搭配 2 根 16G 以上内存,内存双通道,保证内存 不存在瓶颈。
4. PCIe 插槽:建议将网卡插在 CPU0 的 Slot 上,最好是主板的 Slot 上,尽量 不要插在 Riser 的 slot 上。制止因为 Riser 信号弱影响网卡性能。别的,要保 证主板上 slot 的 Lane 数大于网卡的 Lane 数,比方 PCIe Gen3 X8 的网卡必须要插在大于等于 PCIe Gen3 X8 的 slot 上。
5. 光纤模块和光纤线:对 光口网卡而言,模块和光纤线要匹配,比方多模光 模块要搭配多模线缆,单模光模块要搭配单模线缆。
6. Firmware 和 Driver:在举行网卡性能调优前,一定记得将网卡的 firmware 和 Driver 升级到当前最新的版本。
7. OS 选择:为降低系统对网卡性能的影响,建议使用 Linux 系统举行调优 (这里建议使用 Centos7.4),尽量不要使用 Windows OS 举行性能测试。
8. 其他:网卡的性能测试中间尽量不要使用交换机,清除交换机参数配置及 交换本事的因素干扰。
二、主机 BIOS 设置
1. BIOS 版本:使用最新的 BIOS 版本举行测试
2. 电源设置:在 BMC 中修改电源选项,将电源模式设置为“performance” 模式;(当然,也可以在 BIOS 中举行设置)
3. CPU 模式:P-State=enable C-State=disable
4. 超频模式:Turbo Mode=enable
5. 网络虚拟化:SR-IOV Support=Disable
6. CPU 虚拟化技术:VT-D=Disable ----根据必要,视情况而定
CPU Configuration---IIO Configuration---Intel VT for Directed I/O (VT-D)
7. 超线程模式:Hyper-Threading=Disable
- 三、OS 的配置(以 Centos7 为例)
1. 关闭防火墙(略)
2. 关闭 NetworkManager 服务(略)
3. 设置 CPU 模式为 performance
cpupower -c all frequency-set -g performance
4. 闭虚拟内存分区 swapoff –a(重启后失效);
5. 内核参数设置(注意,一样平常内核参数不必要设置,且这写参数的数值也不 是固定的) 添加以下参数到/etc/sysctl.conf 文件末端: net.core.wmem_max=12582912
- net.core.rmem_max=12582912
- net.ipv4.tcp_rmem= 10240 87380 12582912
- net.ipv4.tcp_wmem= 10240 87380 12582912
- net.ipv4.tcp_window_scaling = 1
- net.ipv4.tcp_timestamps = 1
- net.ipv4.tcp_sack = 1
- net.ipv4.tcp_no_metrics_save = 1
- net.core.netdev_max_backlog = 5000
- net.ipv4.route.flush=1
复制代码 添加完成后使用以下命令使其立即见效:sysctl –p。
6. 设置网卡停止数目 1)查察网卡驱动名称:ethtool –i ethX,如 Intel 万兆网卡,驱动名称为 ixgbe;
2)查察驱动参数:modinfo ixgbe,查察其中类似 num_queues 或 RSS 这 样关于队列个数的参数;
3)重新加载驱动:
rmmod ixgbe
modprobe ixgbe num_queues=**备注:其中,**是单个 CPU 的物理核数
7. 停止绑定(停止绑定脚本) 1)停止 irqbalance 服务的:systemctl disable irqbalance,systemctl stop irqbalance。
2)使用 intel 的驱动中 scripts 目录下的 set_irq_affinity 举行停止配置 (方法三选一):
- 使用全部的核:set_irq_affinity -x all ethX
- 只使用本地 NUMA 绑定的 core:set_irq_affinity -x local ethX
- 选择特定的核:
>确定网卡所在 CPU NUMA Node
>cat /sys/class/net/eno2/device/numa_node
>lscpu 查察对应 numa node 所在 CPU 核,并将停止绑定到这些 CPU 核上
>set_irq_affinity 0-1,23-25 ethX
备注:Intel/Mellanox/Broadcom 都有本身的停止绑定脚本,根本思路都是一 样,但是指令参数有轻微的区别,在使用的时候主要查察使用说明即可。
8. 线程绑定
1)测试网卡的性能或者丢包,通常会用到 iperf 或者 netperf 等工具,比方:
2)numactl --physcpubind=0-7 --localalloc iperf -s -p 5201 备注:该命令可以绑定 iperf -s 这个进程会运行在 cpu core 的 0-7 上。
3)numactl --physcpubind=0-7 iperf -c 192.168.95.20 -p 5201 -P 8 -i 5 -t 120s 备注: 该命令可以绑定 iperf -c 这个进程会运行在 cpu core 的 0-7 上。 netperf -H 192.168.1.2 -l 60 -t TCP_STREAM -T 0,0 –p 12800,12800 -P 0 -- -N -n -m 64k
4)netperf -H 192.168.1.2 -l 60 -t TCP_STREAM -T 0,0 –p 12800,12800 -P 0 -- -N n -m 64k 备注:该命令中的-T 0,1 表示该进程运行在本机服务器 cpu 的 0 core, 对端的服务器运行在 cpu 的 1 core 上。
5)假如 cpu 单 core 处置惩罚本事有限,可以运行多个 iperf 或者 netperf,并分布到不 同的 cpu core 上,从而提升网卡的整体性能。
9. 网卡参数设置
ethtool -C ethX adaptive-rx off adaptive-tx off 关闭停止自适应
ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 停止上报时间的调解,建议使用 84us
ethtool -G ethX rx 4096 tx 4096 设置网卡 rx 和 tx 的缓存巨细(不同信号 的网卡的缓存巨细也不一样)
ethtool -A ethX rx off tx off
Ifconfig ethx mtu 9000
./mlnx_tune -p HIGH_THROUGHPUT ---该命令仅用于 Mellanox 的网卡
tuned-adm profile throughput-performance--该命令仅用于Broadcom网卡
10. CPU 绑核操作
注意,对于前面提到的网卡停止绑定以及线程绑定,最好都要绑定在同 一个 CPU 上,因为不同的 cpu 相互之间通信必要通过 UPI 总线,增长延伸和 性能。所以对于 Intel CPU 可以根据网卡差的 PCIe slot 所在的 cpu,决定绑定 的时候也选择对应的 CPU core 上。
对于 AMD 或者 Hygon 的 CPU,由于每个 CPU 由四个 Die 组成,每个 Die 又对应不同的 PCIe slot,所以,在做绑定时也尽量选择 slot 所对应的 cpu Die 上。
网卡设置
- 设置 MTU:ifconfig ethX mtu 9000(注意:两端服务器都要设置才有效,且假如通过交换机连接,在交换机上也要设置MTU为9000或大于9000; 重启后失效);
- 设置 LRO:ethtool -K ethX lro on(重启后失效);
四、Windows 系统配置(略)
请参考 OA 下发的“网卡性能调优常用步调和技巧 v1.0”
五、网卡测试常用的工具
1、Iperf(比较简朴,建议使用 iperf 测试网卡的性能)
iperf 测试必须在 client 端和 server 端同时执行下面命令
Server:numactl --physcpubind=0-7 --localalloc iperf -s -p 5201
Client:numactl --physcpubind=0-7 --localalloc iperf -c 192.168.95.20 -p 5201 -P 8 -i 5 -t 120s
2、Netperf
Netperf 测试必须在 client 端和 server 端同时执行下面命令
Server: netserver –p 12800
Client:netperf -H 192.168.1.2 -l 60 -t TCP_STREAM -T 0,0 –p 12800,12800 -P 0 -- -N -n -m 64k
注意: -T 背面的 0,0 是指定的 client 端和 server 端运行该进程的 CPU 的 core,为了制止 cpu 性能导致的网卡性能低,所以一样平常都会在 client 端运行多个 netperf 进程,并且将 -T 背面 设置成不同的 cpu core。至于其他更加详细的参数介绍请自行查找相干的资料。
六、网卡常用的命令
1、Ifconfig
Linux 中用于体现或配置网络设备(网络接口卡)的命令,全称 network interfaces configuring。 Ifconfig ethx (查察某一端口的发包、丢包情况) Rx/Tx packet dropped, overruns
2、Ethtool
Linux 下用于查询及设置网卡参数的命令。 Ethtool –S ethx (体现 NIC- and driver-specific 的统计参数,如网卡吸取/发 送的字节数、吸取/发送的广播包个数等) Rx/tx_dropped, rx/tx_fifo_errors, rx_missed_errors,rx_no_buffer_count…
3、Netstat
在内核中访问网络连接状态及其相干信息的程序,它能提供 TCP 连接,TCP 和 UDP 监听,进程内存管理的相干陈诉。 Netstat –I (查察系统下全部网口的发包、丢包情况) Rx/Tx packet dropped, overruns
4、Sar
Linux 上最为全面的系统性能分析工具之一。 sar -n EDEV (输出网络设备状态的统计信息,查察网络设备故障) rxerr/s, txerr/s, rxdrop/s, txdrop/s
5、watch
A.watch –d -n 0 ‘ifconfig ethX’
实时查察 Rx/Tx packet dropped, overruns
B. watch –d -n 0 ‘ethtool –S ethX | column’ 实时查察 Rx/tx_dropped, rx/tx_fifo_errors, rx_missed_errors, rx_no_buffer_count…
C. watch -d -n 0 netstat –i 实时查察 Rx/Tx packet dropped, overruns,与 ifconfig ethx 体现类似
D. sar -n EDEV
实时查察每秒丢包,ctrl+C 会体现匀称每秒丢包数
- Ifconfig |grep drop/err
- ethtool –S ethx |grep drop/miss/fail/error
- Ethtool –S ethx |grep _err
- Sar –n EDEV
- Netstat -i
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |