数据平面开发套件(DPDK)中的Vhost / Virtio的配置和性能

目录

Vhost / Virtio简介

接收和发送路径

可合并路径

向量路径

不可合并的路径

PVP路径性能比较

I / O转发吞吐量

Mac转发吞吐量

PVP MAC转发吞吐量 

测试台信息

关于作者

告示

相关阅读


 

Vhost / Virtio简介

Vhost / virtio是一种半虚拟化的设备抽象接口规范,已广泛应用于QEMU *和基于内核的虚拟机(KVM)。当它在来宾操作系统中用作前端驱动程序时,通常称为virtio;当在主机中用作后端驱动程序时,则称为vhost。与在主机上进行纯软件输入/输出(I / O)仿真相比,virtio可以实现更好的性能,并广泛用于数据中心。Linux *内核提供了相应的设备驱动程序,分别是virtio-net和vhost-net。

virtio-net和vhost-net

为了帮助提高数据吞吐性能,数据平面开发套件(DPDK)提供了用户状态轮询模式驱动程序(PMD)virtio-pmd和用户状态实现vhost-user。

用户状态轮询模式驱动程序(PMD)virtio-pmd和用户状态实现vhost-user

本文将介绍如何使用DPDK代码示例配置和使用vhost / virtio,testpmd。列出了每个虚拟主机/虚拟Rx / Tx路径的性能编号。

virtio的典型应用场景
virtio的典型应用场景

接收和发送路径

在DPDK的vhost / virtio中,为不同的用户场景提供了三个Rx(接收)和Tx(发送)路径。可合并路径是为大数据包Rx / Tx设计的,是纯I / O转发的向量路径,如果没有给出参数,则不可合并路径是默认路径。

可合并路径

使用此接收路径的优势在于,虚拟主机可以将可用环中的独立mbuf组织到一个链表中,以接收较大大小的数据包。这是最广泛采用的路径,也是最近几个月DPDK开发团队的性能优化重点。该路径使用的接收和发送功能配置如下:

eth_dev->tx_pkt_burst = &virtio_xmit_pkts;
eth_dev->rx_pkt_burst = &virtio_recv_mergeable_pkts;

在虚拟主机和QEMU之间的连接协商期间,可以通过设置标志VIRTIO_NET_F_MRG_RXBUF来启动路径。虚拟主机用户默认情况下支持此功能,并且在QEMU中启用此功能的命令如下:

qemu-system-x86_64 -name vhost-vm1
…..-device virtio-net-pci,mac=52:54:00:00:00:01,netdev=mynet1,mrg_rxbuf=on \
……

DPDK将根据VIRTIO_NET_F_MRG_RXBUF标志选择相应的Rx功能 :

if (vtpci_with_feature(hw, VIRTIO_NET_F_MRG_RXBUF))
                        eth_dev->rx_pkt_burst = &virtio_recv_mergeable_pkts;
else
                        eth_dev->rx_pkt_burst = &virtio_recv_pkts;


可合并路径与其他两个路径之间的区别在于,只要启用可合并,rte_eth_txconf-> txq_flags的值就不会受到影响。

向量路径

该路径利用处理器中的单个指令,多个数据(SIMD)指令来矢量化数据Rx / Tx动作。在纯I / O数据包转发方案中,它具有更好的性能。该路径的接收和发送功能如下:

eth_dev->tx_pkt_burst = virtio_xmit_pkts_simple;
eth_dev->rx_pkt_burst = virtio_recv_pkts_vec;

使用此路径的要求包括:

  1. 平台处理器应支持相应的指令集。x86平台应支持Streaming SIMD Extensions 3(SSE3),可以通过DPDK中的rte_cpu_get_flag_enabled(RTE_CPUFLAG_SSE3)进行检查。ARM *平台应支持NEON *,可以通过DPDK中的rte_cpu_get_flag_enabled(RTE_CPUFLAG_NEON)进行检查。
  2. Rx端的可合并路径应关闭,这可以通过DPDK中的功能进行检查。关闭此功能的命令如下:
    qemu-system-x86_64 -name vhost-vm1
    	…..
    	-device virtio-net-pci,mac=52:54:00:00:00:01,netdev=mynet1,mrg_rxbuf=off \
    	……
    	
  3. 未启用“卸载”功能,包括VLAN卸载,SCTP校验和卸载,UDP校验和卸载以及TCP校验和卸载。
  4. rte_eth_txconf-> txq_flags需要设置为1。例如,在DPDK提供的testpmd示例中,我们可以使用以下命令在虚拟机中配置virtio设备:
testpmd -c 0x3 -n 4 -- -i --txqflags=0xf01

可以看出向量路径的功能是相对有限的,这就是为什么它没有成为DPDK性能优化的重点的原因。

不可合并的路径

不可合并的路径很少使用。这是它的接收和发送路径:

eth_dev->tx_pkt_burst = &virtio_xmit_pkts;
eth_dev->rx_pkt_burst = &virtio_recv_pkts;

应用此路径需要以下配置:

  1. 沿Rx方向可合并关闭。
  2. rte_eth_txconf-> txq_flags需要设置为0。例如,在testpmd中,我们可以使用以下命令在虚拟机中配置virtio设备:
#testpmd -c 0x3 -n 4 -- -i --txqflags=0xf00

PVP路径性能比较

使用Physical-VM-Physical(PVP)测试比较了不同DPDK vhost / virtio接收和传输路径的性能。在此测试中,使用testpmd生成vhost-user端口,如下所示:

testpmd -c 0xc00 -n 4 --socket-mem 2048,2048 --vdev'eth_vhost0,iface = vhost-net,queues = 1'--i --nb-cores = 1

在VM中,testpmd用于控制virtio设备。测试方案如下图所示。主要目的是在虚拟化环境中测试南北数据转发功能。Ixia公司*流量发生器发送64字节的数据包发送到以太网卡以每秒10个千兆比特的线速度,testpmd在物理机调用虚拟主机用户来转发数据包到虚拟机,并且testpmd在虚拟机调用virtio-user将数据包发送回物理计算机,最后发送回Ixia。其发送路径如下:

IXIA→NIC port1→Vhost-user0→Virtio-user0→NIC port1→IXIA

发送路径

 

I / O转发吞吐量

将DPDK 17.05与I / O转发配置一起使用,不同路径的性能如下:

I / O转发测试结果

在纯I / O转发的情况下,矢量路径具有最佳吞吐量,比可合并的吞吐量高出近15%。 

Mac转发吞吐量

在MAC转发配置下,不同路径的转发性能如下:

MAC转发测试结果

在这种情况下,这三个路径的性能几乎相同。我们建议使用可合并路径,因为它提供了更多功能。

PVP MAC转发吞吐量 

下图显示了从DPDK 16.07开始在x86平台上PVP MAC的转发性能趋势。由于可合并路径的应用场景更广,DPDK工程师从那时开始对其进行了优化,并且PVP的性能在此路径上提高了近20%。

PVP MAC转发测试结果

注意:DPDK 16.11的性能下降主要是由于添加的新功能(例如vhost xstats和间接描述符表)带来的开销。

测试台信息

CPU:英特尔®至强®CPU E5-2680 v2 @ 2.80GHz

操作系统:Ubuntu 16.04

关于作者

姚雷是英特尔的软件工程师。他主要负责与DPDK虚拟化测试相关的工作。

告示

性能测试中使用的软件和工作负载可能仅针对英特尔微处理器的性能进行了优化。性能测试(例如SYSmark *和MobileMark *)是使用特定的计算机系统,组件,软件,操作和功能进行测量的。任何这些因素的任何变化都可能导致结果变化。您应该查阅其他信息和性能测试,以帮助您全面评估您的预期购买,包括该产品与其他产品组合时的性能。

欲了解更多信息,请访问HTTP :// www.intel.com/performance

英特尔技术的功能和优势取决于系统配置,并且可能需要启用硬件,软件或服务才能激活。性能因系统配置而异。请与您的系统制造商或零售商联系,或在intel.com上了解更多信息。

 

相关阅读


Linux虚拟化KVM-Qemu分析(八)之virtio初探

Linux虚拟化KVM-Qemu分析(九)之virtio设备

virtio 网络的演化

使用DPDK打开Open vSwitch(OvS) *概述

Open vSwitch(OVS)文档

《深入浅出DPDK》读书笔记(十五):DPDK应用篇(Open vSwitch(OVS)中的DPDK性能加速)

virtio 网络的演化:原始virtio > vhost-net(内核态) > vhost-user(DPDK) > vDPA

Virtio原理简介

Virtio、Vhost、Vhost-user介绍

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值