从计算机架构师的角度看DPDK性能

0?wx_fmt=gif

对于典型的数据中心或者云,为了充分利用硬件,往往依赖于虚拟化技术。在这种情况下,OvS是云和数据中心在提供虚拟机网络方面的关键连接组件,比如OpenStack,以及OpenNebula。但是,问题是随着线路速率从10Gb增长到40Gb再到100Gb,OvS很难跟上这样的增长速度。因此,为解决这个问题,基于DPDK的OvS得以开发。确实,基于DPDK的OvS的性能高于Vanilla OvS,但这是为什么呢?接下去我们将一探究竟。

云/数据中心OvS典型应用场景

有两种基本的虚拟机通信场景:一种是不跨主机的虚拟机间通讯;另一种是需要经过物理网卡的跨主机的虚拟机间通讯。

0?wx_fmt=png

OvS,OvS-DPDK I/O比较

Vanilla OvS有两个典型的组件,一个是位于内核空间的kernel module,另一个是位于用户空间的OvS daemon。典型场景下,流量会从一台虚拟机进入内核module,然后去向别处。但是如果相应的rule没有缓存在内核module中,那么内核module就需要和OvS daemon通信来获取相应的rule。而这就会导致很多用户空间和内核空间的上下文切换。在OvS-DPDK中,整个data path都在用户空间。如果想要和外界通信,可以直接绕过内核,通过PM Ddriver与物理网卡通信。

0?wx_fmt=png典型的处理器有很多的core。每个core都有自己的L1 cache、L2 cache,并共享LLC cache。离core越远,就会有越大的访问开销。

0?wx_fmt=png

下图数据来源:Intel 64 andIA-32 Architectures: Optimization Reference Manual

0?wx_fmt=png

测试方案

在Guest-Guest (VM2VM)中,我们有一个物理host,运行2个虚拟机,它们可以通过OvS或者OvS-DPDK通信。

0?wx_fmt=png

在Guest-Host(VM2Host)中,有2 个物理host,一个运行虚拟机并运行OvS或者OvS-DPDK,另一个运行iperf服务器。

0?wx_fmt=png具体配置信息如下:

0?wx_fmt=pngIperf测试命令如下:

0?wx_fmt=pngEvaluation 1 四种场景下吞吐量和ICP比较

OvS-DPDK-VM2VM的吞吐量是OvS-VM2VM的5.5倍;OvS-DPDK-VM2HOST的吞吐量是OvS-VM2HOST的3倍左右。从IPC来看,对于典型的4-issue架构,理想的IPC是4,如果我们没有使用OvS-DPDK,IPC会低于1,差不多是0.3或0.2;而使用了OvS-DPDK,这一数值会大大提高。

0?wx_fmt=png

Evaluation 2 Cache 行为比较

第一个蓝色柱子和第三个蓝色柱子相比,我们可以看到有七倍左右的增长;第二个蓝色柱子和第四个蓝色柱子相比,我们可以看到有八倍左右的增长。也就是说当我们使用OvS-DPDK时会有更多的cache hits,更少的cache misses。图中的L1data miss rate,从9.84%下降到4.8%。这得益于DPDK的预取机制。

0?wx_fmt=png

 

Evaluation 3 LLC Cache和TLB 行为

从图表中可以看出,使用OvS-DPDK时, TLB的 miss rate几乎为0。这得益于大页的应用。

0?wx_fmt=png

虚拟机之间的跨socket通信

现代的数据中心通过部署多路处理器平台来扩展性能。我们的测试平台如下:

0?wx_fmt=png

Evaluation 4吞吐量和cache行为比较

跨socket的设计会对性能有不利影响。在有多socket的平台中,比较好的做法是如果有很高的带宽,则使用同一个socket。在同一个socket中,会得到更高的吞吐量和更好的LLC行为。

0?wx_fmt=png

Evaluation 5 上下文转换比较

相对于原始的OvS,OvS-DPDK有更少的上下文切换。此外, 跨socket的通信并不是导致上下文切换的根本原因。

0?wx_fmt=png

总结

本文从计算机架构师的角度详细分析了Vanilla OvS 和OvS-DPDK的性能。总的来说有两点:A.OvS-DPDK通过以下两点提高系统性能:1.增加IPC和cache hits;2. 减少cache miss(软件预取功能),减少TLB miss(大页),减少上下文切换(用户空间驱动)。

B.多socket 平台中可能导致:1. 更低的系统吞吐量和更少的LLC命中;2. 但跨socket的通信不是导致上下文切换的根本原因。

作者简介

Dr. Peilong Li,2016年获得马萨诸塞大学洛厄尔分校计算机工程博士学位。现今在该大学电气和计算机系从事博士后研究工作。他的研究领域包括异构和并行计算体系结构、分布式计算框架研究,软件定义网络的数据平面创新等等。 

0?wx_fmt=png

DPDK开源社区 ∣一个有用的公众号

0?wx_fmt=jpeg

长按,识别二维码,加关注

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值