问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

飞腾平台虚拟机组播性能调优指南

创作时间:
作者:
@小白创作中心

飞腾平台虚拟机组播性能调优指南

引用
CSDN
1.
https://blog.csdn.net/developersupport/article/details/140294444

飞腾平台虚拟机组播性能调优指南是一篇详细的技术文档,主要介绍了如何在飞腾平台上优化虚拟机组播性能。文章从组播技术的基础知识开始,逐步深入到具体的优化策略和调优步骤,包括SR-IOV技术、大页内存、核绑定、UDP缓存调整等多个方面。对于从事云计算和虚拟化相关工作的技术人员来说,这篇文章具有很高的参考价值。

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 -businfo
echo 1 > /sys/bus/pci/devices/0000\:05\:00.1/sriov_numvfs
virsh 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_default
echo 22937600> /proc/sys/net/core/rmem_max
cat /proc/sys/net/core/rmem_default
cat /proc/sys/net/core/rmem_max
//增加udp的发送缓存
echo 22937600 > /proc/sys/net/core/wmem_default
echo 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_cpus
echo 32768 > /sys/class/net/enp5s0/queues/rx-0/rps_flow_cnt
echo 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 北京元石科技有限公司 ◎ 京公网安备 11010802042949号