NFV领域论文 ResQ(NSDI’18)

作者: 周伟林 分类: 科研 发布时间: 2018-08-24 13:31

最近看了一篇论文,来自NSDI'18,题目叫做ResQ: Enabling SLOs in Network Function Virtualization,关于降低NFV部署过程中性能损失,论文原文

看论文前习惯性地查了一下作者的来历。作者Amin Tootoonchian是伊朗人,本科就读于谢里夫理工大学,也相当于伊朗的清华了。硕士和博士去了加拿大多伦多大学深造,15年拿到博士学位。16年开始在Intel lab工作,同时,他也是ICSI的访问研究员。

看了一下他之前发的paper,他发过很多SDN和openflow相关的文章,还参与NOX控制器开发,这篇文章是他第一篇关于NFV的。这篇文章也涉及了很多计算机硬件知识,包括CPU、内存、缓存、缓冲相关的概念,我先给大家捋一遍里面几个比较重要的概念。

一、概念补充

1.cache、buffer、LLC

关于cache和buffer的区别,知乎上最高票答案回答得很好。

cache是为了弥补高速设备和低速设备的鸿沟而引入的中间层,最终起到加快访问速度的作用。buffer 的主要目的进行流量整形,把突发的大数量较小规模的 I/O 整理成平稳的小数量较大规模的 I/O,以减少响应次数(比如从网上下电影,你不能下一点点数据就写一下硬盘,而是积攒一定量的数据以后一整块一起写,不然硬盘都要被你玩坏了)。

如上图所示,现代多核CPU通常有三级缓存,一级缓存又分为指令缓存和数据缓存。LLC是指最后一级缓存,增加缓存的级数可以提高缓存的命中率。假设缓存硬件的命中率固定为80%,使用二级缓存则能提高为 80% + 20%*80% = 96%, 三级缓存能提高到 96% + 4%*80% = 99.2%。

2.DMA、RDMA、DDIO

DMA表示直接内存访问。传统的中断的方式为,IO设备通过操作系统给CPU发起中断,然后操作系统响应中断,CPU从直接从外设读取数据,由于IO拖后腿,这种方式很慢。
而DMA会通过硬件,在I/O设备和内存之间开辟一条直接传送数据的通路。它的过程为中断来了之后,CPU把指令告诉DMA控制器,并分配一块内存作为缓冲区,由DMA控制器控制IO把数据写入DMA缓冲区,写完之后CPU再回来处理,DMA能很大程度上释放CPU的工作量,从而提高设备的吞吐量。之后又发展出来了通道技术,内存分配工作也由通道控制器来控制,CPU进一步释放,不严格的场景下,通道技术也可以统称为DMA。

RDMA表示远程直接内存访问,是数据中心存储领域一项比较新的前沿技术,目前还没有部署。表示能通过网络传输,访问别的机器的内存。

DDIO是Intel的一种技术,把LLC和Nic打通了,而不经过内存。

3.neighbor noisy problem

不同处理器核心上运行的程序,实际上也存在资源竞争。在处理器内部,他们会争用共享的uncore resources,包括总线、LLC、iMC(内存控制器)、IIO(IO控制器)、IDI(管芯内互联)。

资源竞争会导致程序等待,增加处理时延。由于这种争用导致的时延,称之为neighbor noisy problem。

4.memory bandwidth、TX/RX

内存带宽表示内存交换数据的速度,内存带宽=内存频率*内存位宽*倍增系数,单位为GB/s。

TX(transmit),表示发送。常用来表示网卡上行流量。

RX(receive),表示接收。常用来表示网卡下行流量。

二、文章概述

在通用服务器上运行不同种类的多个VNF时,带宽和时延会表现出非常高的不确定性。

本文通过一系列的分析和实验指出,利用Intel提供的cache划分技术(CAT),能在部分情况下降低资源竞争,从而保障多个VNF运行在同一台主机上的性能。但经过进一步实验发现,当数据包MTU比较大时,会出现leaky DOM problem, CAT并不能解决这一问题,其根本原因在于Intel的DDIO技术,他会占用10%的LLC作为buffer来作为VNF的公共buffer。 作者通过加入cache隔离机制,并控制I/O buffer的大小,实现VNF的QoS控制。并把这两项措施,封装成ResQ管理框架,通过对NF行为的预先分析和运行时的调度,尽可能地降低buffer资源竞争,保证VNF性能。

作者通过1)处理器缓存隔离;2)通过算法,控制I/O buffer的大小;两个手段来提升同一台服务器内运行多个VNF时的性能。
结果,性能损失,吞吐量方面,从44.3%下降到2.9%;95百分位点的时延,从24.5%下降到2.5%。
提出了ResQ,一个NFV资源管理框架。其相比之前工作,60% – 236%更高效。

三、作者的Slides剖析

page2. NFV构建于是资源共享

经典方式:专用硬件、每台专用设备运行单一的网络功能,功能之间相互独立
NFV方式:不同网络功能之间共享硬件、以软件的方式实现 –> 共享就会出现竞争

page3. 提供性能保障是困难的

  • VNF的性能会受到邻居行为的影响。这里的邻居是指同一台设备上部署的其他VNF
  • 因为他们之间共享网络、服务器、处理器资源
    下面的三张图逐渐细分,依次表示服务器集群、单台服务器内部、服务器的一台处理器。我们直接看第三幅图,这是一个多核处理器。

page4. 资源共享和隔离的一些假设

我们有两个假设:
+ 不同用户的流量,会通过交换机和网卡分离开来。流量是隔离的。
+ 不同VNF不会共用同一个CPU核心,但他们之间仍然存在资源竞争,这些资源称之为uncore resources, 即除了CPU核心之外的其他资源,包括PCI-e、IIO、LLC、IDI、iMC。 –> 资源争用问题(neighbor noisy problem)

page5. 资源争用对性能影响有多大?

作者做了两组实验。
左边是只占用一个CPU核心,运行一种VNF,测量吞吐量和时延。
右边是存在竞争的场景,分配一个CPU核心运行红色的VNF,剩余的核心都运行另外一种VNF,测量这种情况下,红色VNF的吞吐量和时延。

定义两个评估参数:
吞吐量降级 = (Tsolo – min(Ti))/ Tsolo
时延降级 = (max(Li) – Lsolo) / Lsolo

page6. 同上(我们来看实验结果)

其中每张图里面的蓝条表示数据包的大小是64B,红条表示数据包大小是1518B。

左图是混合部署导致的吐吞量的下降百分比,测量了9种VNF。
可以看出,由于资源竞争,吞吐量下降最高的MazuNAT会下降44.3%,和数据包的大小方面,没有明显的相关性。

右图是时延增加的百分比,测量的是95百分位点的时延值。
测量了7种VNF,MazuNAT和IPSec没测量是因为流量生成器的事件戳嵌入会影响本身的VNF功能,所以没法进行测量。
可以看出,由于混合部署VNF,时延最高增加了24.5%。同样和数据包大小方面,没有看出明显的相关性。

page7. 已有的减少混合部署导致性能下降的方法

那么,我们来看看已有的方法如何解决这个问题,主要包括两类方法。

第一类是基于预测。
– 即放置VNF的时候,避免把竞争更严重的VNF部署在一起,需要构建竞争模型。(其实竞争情况也和流量有关系)
– 这种方法有如下缺点,1)精准的预测是比较困难的;2)预测和部署算法比较复杂;3)只能缓解,不能根治;

第二类是基于隔离。(硬件和软件两方面)
– 邻居之间,互不干扰,相对独立。
– 有如下优点:1)不需要预测;2)算法更简单;3)解决的比较彻底。
推动者: 硬件上的隔离技术(Intel CAT)

page8. 通过直接隔离,来保证SLO

作者提出了ResQ,基于缓存隔离技术。下面基于以下两点来讲
+ 1.怎么做隔离的?
+ 2.隔离后的性能如何?

page9. —- 我们先来看看是怎么做资源隔离的 —-

page10. 硬件上的资源隔离

  • 首先要介绍一下,Intel CAT技术
    • 为不同的程序/任务分配不同的CPU核心、线程、(虚拟机不太理解,作者也没细讲)
    • 为运行同一程序的几个CPU核心,划分出一块独立的LLC。如图中的颜色所示。

但进过做实验发现,仅仅利用CAT技术是不够的,资源竞争并没有完全消除掉。

page11. 这张ppt解释了具体原因。作者做了一组实验,即使用CAT技术后与使用CAT技术前进行比较,实验发现(见论文table 2):

  • 对于小数包,使用CAT技术,效果比较好。
  • 使用了CAT之后,对于大数据包,性能损失扔能够达到15%
    • 尽管小数据包的流量,会更加密集地消耗资源
  • 大数据包,产生更高的内存带宽占用
    • 一般来说,希望VNF运行时,产生更低的内存带宽占用
    • 并不是命中率的问题。因为他们的命中率相当。
  • 根本原因是,大数据包导致很高的内存带宽占用。CAT技术使用了DDIO技术,这个技术也比较简单粗暴,取10%的LLC作为buffer,打通了IO和内存通信。 –> 内存泄漏问题

page12. DMA泄漏问题

  • 为了加速,Intel使用了DDIO技术
    • DDIO是为了实现网卡(NIC)和内存(DMA)更快地交换数据。
    • cache直接与IO控制器交换数据。
  • DDIO导致的LLC竞争
    • 更大的数据包比小数据包,需要占用12倍左右的LLC空间 (1518B/64B = 23.7)
    • CAT并没对IO隔离,IO对VNF来说,仍然是共享的

解决方案,buffer sizing, 避免VNF同时IO

page13. ResQ隔离的性能降级改善效果

  • 吞吐量和时延结果都非常好

page14. —- 然后,我们来看看ResQ具体是怎么做得 —-

page15. ResQ SLOs

  • 预留SLOs: 静态分配 (offline模型)
    输入:NF,预期配置和流量配置文件
    目标:T,L
  • 按需SLOs: 动态分配 (online模型)
    输入:NF
    目标:L

page16. ResQ接入过程

  • NF分析 (如右图)
    • (一个profiler分析一个VNF)
    • 构造VNF性能模型,LLC分配对VNF性能的影响
    • 快速和可扩展 (耗时10分钟左右)
  • 快速贪心分配
    • 若LLC不够用了,则先拒绝给他分配LLC
    • 若LLC够用,计算VNFI的数量
    • 计算-分配

page17. ResQ最优资源分配模型(前面一张ppt是启发式的,不是最优的)

  • 形式化为MILP问题
    • 与启发式方案比较,需要的时间更长
  • 后台运行
    • 如果有收获/付出(gain/cost)大于某个阈值了,就重新调度NFs
  • 小型集群(40台服务器以内)上的实践
    • 时间开销是 几十秒-几分钟
    • 大型集群:分割为子问题来解~

page18. 效率(Efficiency)评估(运行方案,需要使用的服务器数量)

insensitive指性能受分配到的LLC大小不敏感的VNF(猜测是,IO频率比较少的VNF)。conbination混合,sensitive是敏感型VNF。
比较了四种方案的结果需要的服务器数量,依次是offline的MILP-based调度、online的贪心法的解启发式解、不做隔离操作(E2,当流量来了,VNFI处理不过来就新启动一个VNFI)、基于预测隔离。
可以看出,不敏感型VNF,四种方案使用的服务器数量相同。对敏感型VNF,Optimal比启发式解法可以少使用(45-38)/38=18.5%台服务器。我们看中间两组的绿色,Dynamic的方案比启发式方案少用一台服务器,因为启发式方案需要一台服务器来做资源划分的计算。

page19. 结论

  • ResQ 实现了更好的精确度和效率
    • 尽管使用了简单的启发式算法
      — 基于直接性能隔离
    • 通过软件机制改善性能还有很大空间
  • 开源github

发表评论

电子邮件地址不会被公开。 必填项已用*标注