摘要:根据中心的流量优化(例如:流量调度,负载均衡)一直是难以解决的实时决策问题。在此之前是根据操作人员对于负载的理解和环境进行的启发式方式解决的。因此,设计和实现合适的算法至少需要几周的时间。受最近成功应用深度强化学习(DRL)技术来解决复杂的在线控制问题的鼓舞,我们研究了DRL是否可以在没有人为干预的情况下用于AUTO。然而,我们的实验表明,当前DRL系统的延迟不能处理低于当前数据中心级别的数据,因为短数据(主要)流,在处理之前就已经消失了。
利用数据中心long-trace分布,我们开发了一个二级DRL系统,AuTO,模拟动物的外围和中枢神经系统,以解决可扩展性问题。外围系统(PS)驻留在终端主机上,收集流信息,在本地进行决策,对于较短的流,延迟最小。PS的决策由一个中央系统(CS)提供信息,在这个系统中,全球流信被聚合和处理。长期以来,中央系统一直以来只对较长的流进行单个的TO决策。通过CS&PS, AuTO是一个端到端自动到系统,可以收集网络信息,从过去的决策中学习,并执行行动以实现操作人员制定的目标。我们使用流行的机器学习框架和通用服务器实现了AuTO,并将其部署到32服务器的测试平台上。相比现有的方法,AUTO转时间从几周到毫秒级,实现的巨大的优化改进,例如,如现有算法相比,在FCT的性能上提高了48.14%。
INTRODUCTION
数据中心流量优化(to:flow/coflow调度[1,4,8,14,18,19,29,61],拥塞控制[3,10],负载平衡和路由[2])对应用程序性能有显著影响。目前,对不同流量负载、低粒径分布、流量密度等,TO都依赖于手工制作的heuristics(启发式)。当参数设置不匹配流量,TO启发算法会面临性能负反馈。例如,在PIAS[8]中,阈值是基于长期的流大小分布计算的,并且在运行时容易与当前/真实大小分布不匹配。在不匹配的情况下,性能下降可能高达38:46%[8]。当在有限的交换机队列中实现pFabric[4]时也存在同样的问题:在某些情况下,即使精心优化了阈值,平均FCT也可以减少30%以上。此外,在coflow调度中,Aalo[18]中的可修改的阈值取决于操作者提前选择好的值的能力,因为没有运行时适应性。
除了参数环境不匹配之外,从设计到启发的周期很长——至少是几周。因为它们需要操作人员的洞察力、应用知识和长期收集的trac数据。一个典型的过程包括:首先,部署监控系统来收集终端主机和/或交换机的统计数据;其次,在收集到足够的数据后,操作者对数据进行分析,设计启发式,并使用仿真工具和优化工具进行测试,以找到合适的参数设置;最终,测试的启发式被强制执行(带有应用模型[19,61],操作系统内核模块[8,14],交换机congurations[10],或上述任何组合)。
因此,自动化TO流程很有吸引力,我们希望有一个自动化的TO agent,它能够适应大量的、不确定的和不稳定的数据中心trac,同时实现操作人员设定的目标。在本文中,我们研究了强化学习(RL)技术[55],因为RL是与决策和动作控制有关的机器学习的一个分支。它研究了一个agent如何在复杂、不确定的环境中学习实现目标。RL代理观察以前的环境状态和奖励,然后决定一个动作以最大化奖励。近年来,随着深度神经网络(DNN)技术的进步,RL在许多dicult环境中都取得了良好的效果:DeepMind的Atari结果[40]和AlphaGo[52]使用了深度RL (DRL)算法,对其环境的假设很少,因此可以在其他环境中推广。受这些结果的启发,我们有动机为自动数据中心启用DRL。
我们从验证DRL在TO的有效性开始。我们使用基本的DRL算法,策略梯度[55],实现了系统的低级别集中。然而,在我们的实验中(s2.2),即使是在当前机器学习软件框架s2和高级硬件(GPU)上运行的这个简单算法,也无法在生产数据中心(>105台服务器)的规模上处理流量优化任务。关键是计算时间(∼100 ms):短流量(构成大多数流量)已经消失,在DRL决定回来之前,反馈的决定因此是无用的。
因此,在本文中我们试图回答的关键问题是:如何使基于drl的自动到数据中心规模?为了使DRL可伸缩,我们首先需要了解数据中心流量长度分布[3,11,33]:大多数流是短数据流,但大多数字节来自长流。因此,对于短期流的决策必须快速生成;然而,长时间的决策更无关紧要,因为它们需要更长的时间来完成。
我们提供了AuTO,一个端到端DRL系统,用于数据输入规模,与商品硬件一起工作。AuTO是一个二级DRL系统,模仿动物的外围和中枢神经系统。外围系统(PS)在所有终端主机上运行,收集流信息,并在本地对短期流进行即时决策。PS的决策是由中央系统(CS)提供信息的,在中央系统中,全球流量信息被聚合和处理。CS进一步使个人在长时间内做出决定,从而能够容忍较长时间的处理延迟。
AuTO的可伸缩性的关键是将耗时的DRL处理与短流程的快速动作处理分离开来。为此,我们采用多级反馈排队(MLFQ)[8]对PS进行调度,以根据一组阈值对流进行调度。每个新的flow从优先级最高的first队列开始,在它的发送字节通过某些阈值之后,它逐渐降级为较低的队列。使用MLFQ, AuTO的PS可以在本地信息(字节发送和阈值)上立即做出每个流决策,而在CS中,阈值仍然通过DRL算法在较长一段时间内进行优化。通过这种方式,global TO decision以MLFQ阈值的形式交付给PS(该阈值更具有延迟容忍度),使AuTO能够在仅具有本地信息的情况下,对大多数ows的决策进行全局通知。此外,MLFQ很自然地将短的和长的ows分隔开来:短的ows在最初的几个队列中完成,长的ows下降到最后一个队列。对于长流程,CS使用dierent DRL算法集中处理它们,以确定路由、速率限制和优先级。
我们使用Python实现了一个AUTO模型。因此,AuTO与Keras/TensorFlow等流行的学习框架兼容。这允许网络和机器学习社区轻松地开发和测试新的算法,因为AuTO中的软件组件可以在datacenter中的其他RL项目中重用。
我们进一步构建了一个测试台,32台服务器通过2个交换机连接来评估AuTO。我们的实验表明,对于负载稳定、尺寸分布低的trac,经过8小时的训练后,与标准的启发式方法(最短的job-rst和最少获得的service-rst)相比,AuTO的性能提升高达48:14%。AuTO还能稳定地学习和适应时间和空间异构trac:仅经过8小时的训练,与启发式方法相比,AuTO平均FCT (tail)降低了8:71%(9:18%)。
在接下来的文章中,我们回顾了DRL,并揭示了为什么目前的DRL系统不能在x2中大规模工作。我们描述了x3中的系统设计,以及x4中的DRL配方和解决方案。我们在x5中实现了AuTO,并在x6中进行了大量的实验,并对其进行了评估。最后,我们回顾了x7中的相关工作,并在x8中进行了总结。
2.DRL
本章讲解了DRL,推荐博主songrotek的文章。songrotek的博客十分基础,而且通俗易懂,讲解纤细全面,无论是入门还是深入了解都值得看一下。
3.auto
当前DRL系统的关键问题是流问题收集和动作的生成之间的长时间延迟。在现代数据中心与≥10 gbps链接速度,实现流级别操作、往返延迟的操作至少应该是毫秒级的。如果不引入专门的硬件,这是无法实现的(x2.2)。使用普通硬件,DRL算法的处理延迟是一个硬限制。在此约束下,如何将DRL布置到数据中心TO上?
最近的研究[3,11,33]表明,大多数数据中心流是短的流,而大多数流量字节来自长流。根据这种长尾分布,我们的想法是将大部分短流程操作委托给终端主机,并制定DRL算法,生成长流TO决策。我们设计的AUTO作为一个二级系统,模拟动物的外围和中枢神经系统。如图3所示,外围系统(PS)在所有终端主机上运行,收集流信息,并在本地以最小的延迟对短流进行决策。中央系统(CS)使对长流有针对的算法,能够容忍更长进程延迟。此外,PS的决策是由CS来通知的,在CS中,全局流量信息被聚合和处理。
3.1外围系统
enforcement module
为了实现上述目标(仅有local information 的情况下全局调度短流),我们实行多层反馈队列来调度流量,没有对每一个六进行控制。有K个优先顺序,Pi,i介于1和K之间,K-1降级的阈值,aj,j介于1和K-1之间。我们在DSCP的基础上对所有的交换机进行严格的优先级排队。在终端主机上,当一个新的流初始化时,它的包被标记为p1,给它们网络中的最高优先级。随着更多的字节发送,这个流的包标记减少优先级Pj(2≤≤j K),因此他们将减少网络中的优先级。降级的阈值优先级从Pj−1到Pj,αj−1。
对于MLFQ, PS具有以下特性:
•它可以根据本地信息,即字节发送和阈值,对每个用户进行即时决策。
•它可以适应全局流量的变化。为了可扩展,CS不能直接控制小型流量。相反,CS优化和设置MLFQ阈值与全局信息在较长一段时间。因此,可以更新PS中的阈值以适应流量的变化。相比之下,PIAS[8]需要经过数周的流量跟踪才能更新阈值。
•它可以判别短的信息流和长的信息流。如图5所示,在之后少数队列中显示的短流,长流下降到最后一个队列。因此,CS可以集中处理长时间独立的路由、速率限制和优先级决策。
监控模块为CS生成阈值,监控模块收集所有完成流的流量大小和完成时间,使CS可以更新流量大小分布。监测模块还报告正在进行的长流量已经下降到其终端主机的最低优先级,以便CS可以做出单独的决策。
4.DRL
4.1 optimizing MLFQ shresholds
我们考虑数据中心网络连接多层服务。流量调度在主机被分为K个优先级,网络开关在每一个IP头中被设置成一个DCSP区域,流越长,他的优先级则越低,这是为了符合SJF优先级规则,报的优先级贯穿整个数据中心构造,直至到达目的地。
MLFQ面临的挑战之一是计算主机上K个优先队列的最优降级阈值。文献(8,9、14)提供数学分析和模型优化降级阈值:fα1;α2;:::αK−1 。Bai等人的[9]还建议每周/每月重新计算阈值,并收集低层次的路径。AUTO需要进一步提出了DRL优化α的值的方法。与以往在数据中心问题中使用机器学习的工作不同[5,36,60],AuTO因其在连续动作空间中对真实值的目标优化而独一无二。我们将阈值优化问题定义为DRL问题,并尝试探索DNN为计算MLFQ阈值的复杂数据中心网络建模的能力。
在2.2中显示PG是一个基础的DRL问题,agent通过矢量sita设定πθ(a|s)并按经验改进。但是这些算法通常只考虑随机方法,πθ(a|s)=Pθ(a|s;θ),状态下对a的选择根据被θ参数化的行为A的概率分布。PG不能用于值优化问题,因为值优化问题计算的是实际值。因此,DPG算法被使用,ai=miuθ。DPG在确定的方法中是actor-critic[12]算法,主张一个参数化的行文功能miuθ,代表最近的策略和批判神经网络Q(s|a),更新使用贝尔曼方程(如Q学习[41])。我们描述的算法方程(4、5、6)。
深度确定性策略梯度(DDPG)[35]是DPG算法的扩展,它利用了[41]的深度学习技术。我们使用DDPG作为优化问题的模型,并在下面解释它是如何工作的。与DPG一样,DDPG也是一个A-C[12]算法,它维护了四个DNNs算法。其中的两个DNN算法,criticQθQ(s,a)和行为θ(s)权重θQ和θmiu,当行为与环境交互时,训练的采样mini-batches大小为N,其中一个项目表示一位经验丰富的过渡元组(si;ai;ri;si+1)。DNNs在随机样本上进行训练,这些样本储存在buffer中,以避免导致DNNs分化[41]的相关状态。另外两个DNN,目标行为miu’sita和目标评论Q‘(θQ‘)使用设定的规则更新(算法(1)[35])。更新步骤稳定的训练行为批评网络,并在连续的空间动作[35]上达到了最先进的效果。AuTO应用DDPG来优化阈值,以实现更好的流量调度决策。
DRL
这部分描述DDPL,指示累加的流尺寸分布的密度参数为F(x),为不超过X流尺寸的概率。Li代表在队列Qi给定流带入队列的数据包数量。定义流到达概率为入,包到达对流Qi概率为入i=入E(Li),队列的服务率取决于高优先级的队列是否为空。因此P1(高优先级)有miu1=miu,其中miu是链路的服务率,闲置的rou为rate利用率。
State space:在我们的模型中,state表所有完成流的集合,Fd,在所有网络中当前时间节点下。每一个流都会识别五个元组:源/目标IP;port number;传输协议。我们只汇报完成的流,也可以重新计算FCT和流的大小。
Action space:集中代理计算,sRLA。在时间t,代理提供的时间是一组MLFQ阈值{ati}
Rewards:反馈是对主机的反馈 ,代表上一个时间截行为有多好,反馈标准rt=T(t-1)/Tt,如果之前的操作导致FCT平均值较低,或者降低了整体性能,它就会发出信号。
4.2 长流优化
最后一个阈值,αK−1,分离sRLA长来自短流,因此αK−1是根据当前交通特点,动态更新与之前使用固定阈值短期和长时间流(1、22)。对于长流和lRLA,我们使用的PG算法类似于x2.2中的流调度问题,唯一的冲突是在动作空间。
行动空间:每个活动流f,在时间步t,其相应的行动是{Priot(f);Ratet(f);Patht(f)},Priot(f)是流的优先级,Ratet(f)速率限制,和Patht(f)的路径。我们假设路径的枚举方式与XPath[32]相同。
状态空间:与x2.2相同,状态表示为当前步骤t在整个网络中的所有活动流、Fat和所有finished flow Fdt的集合。每个完成的流都有两个附加属性:FCT和流大小。
反馈:对完成的流量Ftd组进行奖励。奖励函数的选择可以是:发送率、链路利用率和连续时间步长的吞吐量的差异或比率。对于链路速度至少为10Gbps的现代数据中心来说,获取主动流的及时流级信息并不容易。因此,我们选择只计算完成流程的奖励,并使用两个连续时间步长的平均吞吐量之间的比值作为奖励,如式(3)所示。
5 实现
在本节中,我们将描述实现。我们用Python 2.7开发AuTO。语言的选择促进了与现代深度学习框架的集成[17,45,57],后者提供了出色的Python接口[45]。目前的原型使用Keras[17]深度学习库(以TensorFlow作为后端)。
5.1 外围系统
PS是每个服务器上运行的守护进程。它有一个监视模块(MM)和一个执行模块(EM)。MM线程收集有关流的信息,包括最近完成的流和当前活动的长流(在MLFQ的最后一个队列中)。在每个周期结束时,MM聚集收集信息,并发送给CS。PS的EM线程根据当前活动的流上的MLFQ阈值执行标记,以及长流上的路由、速率限制和优先级标记。我们实现了一个远程过程调用(RPC)接口,用于PS和CS之间的通信。CS使用RPC设置MLFQ阈值,并对活动的长流执行操作。
5.1.1监控模块(MM):为了最大限度地提高效率,MM可以实现为Linux内核模块,如PIAS[8]。但是,对于当前原型,由于我们使用一个流生成器(如[8,10,20]中所示)来生成工作负载,所以我们选择直接在流生成器中实现MM。这种选择使我们能够获得地面真相,并摆脱其他可能干扰结果。
对于长流(MLFQ的最后一个队列中的流),每T秒,MM将nl活跃的的长流(每个都有6个属性)合并到一个列表中,并且ml完成了长流(每个都有7个属性)。对于同一时期的短流程(在MLFQ的前几个队列中),MM将已完成的ms(每个包含7个属性)收集到一个列表中。最后,MM将这两个列表连接起来,并将它们发送到CS以观察环境。
AuTO的参数(nl;ml;ms)由流量负载和T决定:对于每台服务器,nl (ml)应该是T内活动(n)长流数量的上限,ms也应该是完成的短流数量的上限。如果活动(完成)流的实际数量小于(nl;ml ms),观察向量是在相同的大小相应的代理的DNN。我们之所以做出这个设计选择,是因为在CS中DNN的输入神经元数目被减少了,因此只能接受fixedsize的输入。我们将动态神经网络和递归神经网络结构作为未来的工作。对于目前的原型和对原型的实验,由于我们控制流生成器,所以很容易遵守这个约束。实验中我们选择(nl=11;ml=10;ms=100)。
5.1.2执行模块(EM):。EM定期从CS接收操作。这些行动包括新的MLFQ阈值,以及对本地长时间工作的决策。对于MLFQ阈值,EM构建在PIAS[8]内核模块的基础上,并添加降级阈值的动态填充。
对于较短的流,我们利用ECMP[30]来进行路由和负载平衡,这并不需要集中的每个流控制,而DCTCP[3]用于拥塞控制。
对于较长的时间,TO操作包括优先级、速率限制和路由。EM利用相同的内核模块进行优先级标记。在Linux trac控制(tc)中,使用分层令牌桶(HTB)排队规则进行速率限制。EM与HTB中具有出站速率限制的父类合并,以表示该节点上CS管理的出站总带宽。当一个流下降到MLFQ中的最后一个队列时,EM会创建一个HTB lter来匹配这个流的确切的5元组。当他们收到率分配决策的CS,EM更新特定的子类通过向Linux内核Netlink消息:TC类的速度设置为集中式调度程序决定的速度,和它的上限设置为原始的上限和CS利率的两倍。
5.2 中枢系统
对于lRLA,我们还使用Keras实现了PG算法,将NN完全连接,其中包含10个300个神经元的隐藏层。RL代理接受状态(每个服务器136个特性(nl=11, ml=10)和所有活动流的动作的输出概率。
超参数(结构、层数、高度和DNN的宽度)的选择是基于一些经验训练的会话。我们的观察是,具有更多隐藏层和更多参数的更复杂的dnn需要更长的时间来训练,并且没有比选择的拓扑更好的性能。总的来说,我们认为这种RLA组合会带来良好的系统性能,并且考虑到计算延迟的重要性,这是相当合理的,我们将在下面的评估中揭示这一点。
6 评价
这部分主要就该算法的几个相关问题进行解答
homogeneous等性能都表现得很好
setting:将AUTO应用于小规模的试验器中,包括32个服务器,应用以往流量生成器生成我们想要的流量。使用两个真实的工作负载:网络搜索工作负载和数据挖掘工作负载,15个服务主机流量被称为应用服务,剩下一个主机CS。每个应用程序服务器使用其3个端口连接到数据平面交换机,以及使用剩余端口与CS服务器通信的控制平面交换机。这3个端口合并到不同的子网,在任意一对应用服务器之间形成3个路径。两个交换机都是Pronto-3297 48端口千兆以太网交换机。在控制平面开关上发送状态和动作(图7)。
comparison targets :SJF和LAS,
QSJF:三个阈值,分别赋予不同的优先级
QLAS:最开始都赋予最高优先级,如果流量高于bi,则他的优先级是第(i+1)个优先级,这种情况下,最长的流量是最低的优先级
阈值选择【14】中的type-2/3流量原则。
7 相关工作
负载均衡、拥塞控制和流量调度是除了流量优化的其他方面问题,routing和负载均衡从1990s开始就已经开始基于RL算法的研究,然而,他们是基于开关的机制,在大数据情况下很难实行,RL可以实现图像流。
ML技术对拥塞孔氏方面使用参数设置优化,在给定一组流量分布的情况下,对参数进行归一化,并且在运行的时候不可以自适应。
【61】没看。
8 结论
受DRL技术在解决复杂在线控制问题方面取得的成功启发,本文尝试将DRL用于自动to。然而,我们的实验表明,当前DRL系统的延迟是当前数据中心规模的主要障碍。我们利用数据中心trac的长尾分布来解决这个问题。为了解决可扩展性问题,我们开发了一个二级DRL系统,AuTO,模拟动物的外围和中枢神经系统。我们在一个真实的试验台上部署并评估了AuTO,并展示了其在数据中心中对动态trac的性能和适应性。AuTO是实现数据中心自动化的第一步,我们希望AuTO中的许多软件组件可以在数据中心的其他DRL项目中重用。
针对未来的工作,本文重点研究了如何利用RL实现ow调度和负载均衡,同时开发了用于拥塞控制和任务调度的RL算法。除了x5&6中提到的潜在改进之外,我们还计划研究RL在数据中心之外的应用,例如广域网带宽管理