服务器网卡性能调优及丢包问题处置惩罚

打印 上一主题 下一主题

主题 866|帖子 866|积分 2598

性能调优概览 

   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  
  1. net.core.rmem_max=12582912  
  2. net.ipv4.tcp_rmem= 10240 87380 12582912  
  3. net.ipv4.tcp_wmem= 10240 87380 12582912  
  4. net.ipv4.tcp_window_scaling = 1  
  5. net.ipv4.tcp_timestamps = 1  
  6. net.ipv4.tcp_sack = 1  
  7. net.ipv4.tcp_no_metrics_save = 1 
  8. net.core.netdev_max_backlog = 5000  
  9. 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 会体现匀称每秒丢包数 
          

      
  1. Ifconfig |grep drop/err
  2. ethtool –S ethx |grep drop/miss/fail/error
  3. Ethtool –S ethx |grep _err
  4. Sar –n EDEV
  5. Netstat -i
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

风雨同行

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表