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

【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。 点击这里开始你的技术升级之旅吧

image.png

本文分享至飞腾开发者平台《飞腾平台虚拟机组播性能调优指南》

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的组播转发性能,需要使用多方面的调优方法。

image.png

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和其他飞腾商标均为飞腾信息技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。

本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/373291.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mattermost:一个强大的开源协作平台

Mattermost是一个强大的开源协作平台&#xff0c;基于云原生架构&#xff0c;为企业级用户提供安全、可扩展且自托管的消息传递解决方案。 一、平台特点 开源与定制性&#xff1a;Mattermost是一个开源项目&#xff0c;用户可以根据自身需求定制界面、添加功能或扩展其功能&am…

c++ 多边形 xyz 数据 获取 中心点方法

有需求需要对。多边形 获取中心点方法&#xff0c;绝大多数都是 puthon和java版本。立体几何学中的知识。 封装函数 point ##########::getCenterOfGravity(std::vector<point> polygon) {if (polygon.size() < 2)return point();auto Area [](point p0, point p1, p…

【福利】代码公开!咸鱼之王自动答题脚本

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 微信或QQ打开咸鱼之王小程序&#xff0c;进入答题界面&#xff0c;运行main.py。期间不要动鼠标。 可自行更改代码来适配自己的需求~ 可以按照示例图片…

在亚马逊云科技AWS上利用SageMaker机器学习模型平台搭建生成式AI应用(附Llama大模型部署和测试代码)

项目简介&#xff1a; 接下来&#xff0c;小李哥将会每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。本次介绍的是如何在Amazon …

大屏自适应容器组件 v-scale-screen

在vue中&#xff0c;v-scale-screen可用于大屏项目开发&#xff0c;实现屏幕自适应&#xff0c;可根据宽度自适应&#xff0c;高度自适应&#xff0c;和宽高等比例自适应&#xff0c;全屏自适应。 仓库地址&#xff1a;github国内地址&#xff1a;gitee 一、安装 npm instal…

leetcode--从中序与后序遍历序列构造二叉树

leeocode地址&#xff1a;从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder …

python脚本“文档”撰写——“诱骗”ai撰写“火火的动态”python“自动”脚本文档

“火火的动态”python“自动”脚本文档&#xff0c;又从ai学习搭子那儿“套”来&#xff0c;可谓良心质量&#x1f44d;&#x1f44d;。 (笔记模板由python脚本于2024年07月07日 15:15:33创建&#xff0c;本篇笔记适合喜欢钻研python和页面源码的coder翻阅) 【学习的细节是欢悦…

PHP智慧门店微信小程序系统源码

&#x1f50d;【引领未来零售新风尚】&#x1f50d; &#x1f680;升级启航&#xff0c;智慧零售新篇章&#x1f680; 告别传统门店的束缚&#xff0c;智慧门店v3微信小程序携带着前沿科技与人性化设计&#xff0c;正式启航&#xff01;这个版本不仅是对过往功能的全面优化&a…

Java面试八股之MySQL的redo log和undo log

MySQL的redo log和undo log 在MySQL的InnoDB存储引擎中&#xff0c;redo log和undo log是两种重要的日志&#xff0c;它们各自服务于不同的目的&#xff0c;对数据库的事务处理和恢复机制至关重要。 Redo Log&#xff08;重做日志&#xff09; 功能 redo log的主要作用是确…

伯克利、斯坦福和CMU面向具身智能端到端操作联合发布开源通用机器人Policy,可支持多种机器人执行多种任务

不同于LLM或者MLLM那样用于上百亿甚至上千亿参数量的大模型&#xff0c;具身智能端到端大模型并不追求参数规模上的大&#xff0c;而是指其能吸收大量的数据&#xff0c;执行多种任务&#xff0c;并能具备一定的泛化能力&#xff0c;如笔者前博客里的RT1。目前该领域一个前沿工…

CentOS6禁止锁屏

在电源中设置后还是会锁屏, 原因是有屏幕保护程序 电源管理都 “从不” 一些AI的回答 在CentOS 6系统中&#xff0c;如果你想要禁用锁屏功能&#xff0c;可以编辑/etc/kbd/config文件。这个文件通常包含了键盘相关的设置&#xff0c;包括密码策略和屏幕锁定选项。 首先打开终…

javascript高级部分笔记

javascript高级部分 Function方法 与 函数式编程 call 语法&#xff1a;call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义&#xff1a;调用一个对象的一个方法&#xff0c;以另一个对象替换当前对象。 说明&#xff1a;call 方法可以用来代替另一个对象调用一个方法。cal…

C语言程序题(一)

一.三个整数从大到小输出 首先做这个题目需要知道理清排序的思路&#xff0c;通过比较三个整数的值&#xff0c;使之从大到小输出。解这道题有很多方法我就总结了两种方法&#xff1a;一是通过中间变量比较和交换&#xff0c;二是可以用冒泡排序法&#xff08;虽然三个数字排序…

微信小程序引入自定义子组件报错,在 C:/Users/***/WeChatProjects/miniprogram-1/components/路径下***

使用原生小程序开发时候&#xff0c;会报下面的错误&#xff0c; [ pages/button/button.json 文件内容错误] pages/button/button.json: [“usingComponents”][“second-component”]: “…/…/components/second-child/index”&#xff0c;在 C:/Users/***/WeChatProjects/m…

Infinitar链游新发展新机遇

区块链游戏市场在近年来经历了显著增长&#xff0c;吸引了大量的投资和关注。随着加密货币和NFT&#xff08;非同质化代币&#xff09;概念的普及&#xff0c;越来越多的投资者、游戏开发者和看到了区块链技术在游戏领域的应用潜力&#xff0c;纷纷涌入市场。区块链游戏的用户量…

电脑虚拟摄像头怎么使用?电脑摄像头可以被虚拟摄像头替代吗?8款推荐!

在数字化日益普及的今天&#xff0c;视频通话和在线会议已成为我们生活和工作中不可或缺的一部分。然而&#xff0c;当我们的电脑没有配备摄像头&#xff0c;或摄像头出现故障时&#xff0c;我们可能会面临一些不便。这时&#xff0c;电脑虚拟摄像头便成为了一个实用的解决方案…

Python中JSON处理技术的详解

引言 JSON&#xff08;JavaScript Object Notation&#xff09;作为当前最流行的数据传输格式&#xff0c;在Python中也有多种实现方式。由于JSON的跨平台性和简便易用性&#xff0c;它在数据交互中被广泛应用。本文将重点讨论如何熟练应用Python的JSON库&#xff0c;将JSON数…

概率论习题

泊松分布习题 假设你在医院值班&#xff0c;每天需要安保人员出动的次数N~P(1),则关于任一天安保人员出动次数&#xff1a; A&#xff1a;出动一次的概率是多少 B&#xff1a;出动次数小于等于一次的概率为 C&#xff1a;出动次数小于一次的概率为 D&#xff1a;若随机事件发生…

在表格中选中el-radio后, 怎么获取选中的这一行的所有数据?

演示: 图中, 选中这行数据后, 怎么获取到当前的数据? 代码: <tr v-for"item in gridData"><td><input type"radio" v-model"checkout" change"getDateFn" :data-type"item.articleType" :data-channelNam…

UE5 视频播放(自动播放和自动清除MediaTexture)

媒体播放器的打开时播放和媒体纹理的自动清除 。 在UE5开发视频播放时&#xff0c;遇到了闪帧的现象。合理选择这两个功能可解决。