【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。 点击这里开始你的技术升级之旅吧
本文分享至飞腾开发者平台《飞腾平台虚拟机组播性能调优指南》
1 介绍
组播技术是IP网络数据传输三种方式之一,是介于单播和广播之间的数据传输方式。满足将信息从源主机发送至网络中多个目标主机要求,同时解决了单播和广播方式效率低的问题。
在虚拟化、云平台盛行的时代,网络的性能成为躲避不掉的话题。在一些需要高精度、高时效性的组播环境下,对于网络性能的要求就更加严格。目前对于解决虚拟机中组播性能的方案还存在空白点,影响虚拟机中组播性能的因素有较多,本文介绍如何提升虚拟机组播的性能。
以上关于组播技术的介绍,参考链接:http://www.xjishu.com/zhuanli/62/202110764857.html
2 优化策略环境要求
2.1 宿主机环境
宿主机环境要求如下表所示。
项目 | 说明 |
---|---|
机器类型 | FT-2000+/64服务器 |
网络 | Intel Corporation I350 Ethernet Controller |
操作系统 | centos7.5 |
内核版本 | 4.19.109 |
2.2 虚拟机环境
虚拟机环境要求如下表所示。
项目 | 说明 |
---|---|
机器类型 | FT-2000+/64服务器 |
网络 | SRIOV |
操作系统 | centos7.5 |
内核版本 | 4.14.0-49.el7a.aarch64 |
2.3 背景
组网示意图如图所示。中间节点默认组播转发性能很低,大约50Mbps的组播转发性能,为了达到680Mbps的组播转发性能,需要使用多方面的调优方法。
3 优化思路
优化项 | 优化思路 |
---|---|
SRIOV技术透访 | 使用SRIOV技术透访VF给虚拟机 |
使用大页内存 | 宿主机分配大页内存 |
核绑定 | 将虚拟机vcpu与物理cpu绑定 |
UDP缓存 | 增大内核协议栈udp缓存大小 |
网卡中断 | 调整网卡接收软中断 |
4 调优步骤
4.1 宿主机
4.1.1 配置SR-IOV网卡
原理:SR-IOV 技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。SR-IOV 标准允许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Express,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的I/O性能。
关于SR-IOV技术的详细介绍,参考链接:https://blog.csdn.net/junbaozi/article/details/125417368
优化方法:
lshw -c network -businfoecho 1 \> /sys/bus/pci/devices/0000\\:05\\:00.1/sriov_numvfsvirsh nodedev-detach pci_0000_05_10_1//分割设备,网卡的虚拟口都要分离才能起虚拟机
4.1.2 设置大页
原理:简单来说就是通过增大操作系统页的大小来减小页表,这样大页内存TLB miss很少,缺页中断也很少,极高的提高了性能。
优化方法:
//查看支持的大页尺寸和大页是否开启cat /proc/meminfo \| grep Huge//分配大页echo 128 \> /sys/kernel/mm/hugepages/hugepages-524288kB/nr_hugepages//挂载大页mount -t hugetlbfs nodev /mnt/huge
4.2 虚拟机
4.2.1 虚拟机核绑定
原理:虚拟vcpu绑定到物理CPU,减少核间切换带来的影响,提升程序运行性能。
关于具体绑核方法可参考链接:https://support.huaweicloud.com/tngg-kunpengcpfs/kunpengkvm_05_0008.html
优化方法:虚拟16个vcpu,每个vcpu绑定到对应的一个物理cpu。虚拟机的xml内容如下:
<cputune><vcpupin vcpu='0' cpuset='0'/><vcpupin vcpu='1' cpuset='1'/><vcpupin vcpu='2' cpuset='2'/><vcpupin vcpu='3' cpuset='3'/><vcpupin vcpu='4' cpuset='4'/><vcpupin vcpu='5' cpuset='5'/><vcpupin vcpu='6' cpuset='6'/><vcpupin vcpu='7' cpuset='7'/><vcpupin vcpu='8' cpuset='8'/><vcpupin vcpu='9' cpuset='9'/><vcpupin vcpu='10' cpuset='10'/><vcpupin vcpu='11' cpuset='11'/><vcpupin vcpu='12' cpuset='12'/><vcpupin vcpu='13' cpuset='13'/><vcpupin vcpu='14' cpuset='14'/><vcpupin vcpu='15' cpuset='15'/><emulatorpin cpuset='0-15'/></cputune>
4.2.2 透访VF
原理:把通过SR-IOV虚拟的VF透访给虚拟机使用,虚拟机能直接访问PCIE网卡资源,提升网络性能。
优化方法:
<hostdev mode='subsystem' type='pci' managed='yes'><source><address domain='0x0000' bus='0x09' slot='0x10' function='0x0'/></source></hostdev>
4.2.3 增加大页
原理:配置虚拟机使用大页内存,提升虚拟机运行的性能。
虚拟机使用大页可参考链接:https://support.huaweicloud.com/tngg-kunpengcpfs/kunpengkvm_05_0012.html
优化方法:
<memoryBacking><hugepages><page size='524288' unit='KiB'/></hugepages></memoryBacking>
4.2.4 增大udp缓存
原理:因为CPU并发执行,当速率较高时候,报文可能因为缓冲区溢出而导致丢包,适当调整UDP的接收和发送缓存,从而提升网络的性能。
优化方法:
//增加udp的接收缓存echo 22937600\> /proc/sys/net/core/rmem_defaultecho 22937600\> /proc/sys/net/core/rmem_maxcat /proc/sys/net/core/rmem_defaultcat /proc/sys/net/core/rmem_max//增加udp的发送缓存echo 22937600 \> /proc/sys/net/core/wmem_defaultecho 22937600 \> /proc/sys/net/core/wmem_max
4.2.5 网卡软中断调优
原理:因为intel i350虚拟VF只支持单队列,导致数据包处理负载不均衡。RPS全称是Receive Packet Steering,其原理是单纯地以软件方式实现接收的报文在cpu之间平均分配,从而提升网络性能。
优化方法:
//调整网卡接收软中断,如调优接口enp5s0的rx-0队列相应参数echo ffff \> /sys/class/net/enp5s0/queues/rx-0/rps_cpusecho 32768 \> /sys/class/net/enp5s0/queues/rx-0/rps_flow_cntecho 32768 \> /proc/sys/net/core/rps_sock_flow_entries//调整网卡发送软中断,如调优接口enp5s0的tx-0队列相应参数echo 7fff \> /sys/class/net/enp4s0/queues/tx-0/xps_cpus
推荐阅读
- 基于飞腾腾云S2500的ATS部署及调优指南(反向代理篇)
- SPECweb2009调优指南
欢迎广大开发者来飞腾开发者平台获取更多前沿技术文档及资料
如开发者在使用飞腾产品有任何问题可通过在线工单联系我们
版权所有。飞腾信息技术有限公司 2023。保留所有权利。
未经本公司同意,任何单位、公司或个人不得擅自复制,翻译,摘抄本文档内容的部分或全部,不得以任何方式或途径进行传播和宣传。
商标声明
Phytium和其他飞腾商标均为飞腾信息技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。
本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。