摘要:

随着链接速度的提高和CPU扩展速度的放缓,软件中的数据包调度会导致较低的精度和较高的CPU利用率。

通过将数据包调度卸载到诸如NIC之类的硬件,可以潜在地克服这些缺点。然而为了保持软件分组调度器的灵活性,硬件中的分组调度器必须是可编程的,同时还必须快速且可扩展。

硬件中最先进的数据包调度程序有的折衷了可扩展性(Push-In-First-Out(PIFO)),有的表达了各种数据包调度算法的能力(先进先出(FIFO)) ),即使像PIFO这样的通用调度原语也无法表现出足以表示分组调度算法的某些关键类的能力。

因此在本文中,我们提出了PIFO原语的泛化,称为Push-In-Extract-Out(PIEO),与PIFO一样,它维护元素的有序列表,但与PIFO不同,PIFO只允许从列表的开头出队,PIEO通过支持在出队时基于可编程谓词的过滤,允许从列表中的任意位置出队。

接下来,我们介绍PIEO调度程序的快速且可扩展的硬件设计,并将其原型化在FPGA上,PIEO调度程序比PIFO更具表现力,可扩展性超过30倍。

背景/问题:

数据包调度程序执行一种调度算法或调度策略,该算法或调度策略指定何时以及以什么顺序在网上传输数据包。在软件中实现数据包调度程序可以使用户灵活地快速试验并采用新的调度算法和策略。但是,这种灵活性是以消耗CPU周期为代价的。不幸的是,随着链接速度的增加与CPU速度缩放的减慢之间越来越不匹配,这个问题只会变得更糟。

满足软件中的这些严格要求具有挑战性,这主要是由于不确定的软件处理抖动和缺乏高分辨率软件计时器所致。硬件(例如NIC)中的数据包调度程序可以潜在地克服软件数据包调度程序的上述局限性,但是为了保持软件数据包调度程序的灵活性,硬件中的数据包调度程序必须是可编程的。

硬件中最先进的数据包调度程序基于两个调度原语:

  • 先进先出(FIFO),它按到达顺序简单地调度元素。

  • 推入先出(PIFO),它通过维护元素的有序列表(基于可编程的秩函数)并始终从有序列表的开头进行调度。

不幸的是,基于这些原语的数据包调度程序要么在可伸缩性(基于PIFO的调度程序)上折衷,要么无法表达各种数据包调度算法(基于FIFO的调度程序),即使是像PIFO这样的通用调度原语,其表达能力也不足以表达某些特定类型的分组调度算法。

解决办法:

我们提出了一种新的硬件可编程分组调度器,该调度器比现有技术具有更快的速度,可扩展的性能和更高的表现力。

为了设计可编程的数据包调度程序,我们了解到,大多数数据包调度算法在调度过程中有两个关键点:

  • 当元素(数据包/流)变得适合进行调度时(由某些可编程谓词确定为时间的函数)

  • 在符合条件的元素集合中以什么顺序进行调度(由某个可编程秩函数确定)

在任何给定时间,数据包调度算法都会先过滤当时有资格进行调度的元素集(使用谓词函数),然后再从该集合中调度排名最小的元素。因此,大多数数据包调度算法都可以抽象为以下调度策略:在任何给定时间,调度“最小排序的合格”元素。

我们提出了一种新的调度原语,称为Push-In-Extract-Out(PIEO),可以将其视为PIFO原语的概括。 PIEO与每个元素关联一个等级和一个资格谓词,这两者都可以基于调度算法的选择进行编程。接下来,PIEO通过始终根据元素的等级(“ Push-In”原语)将元素排入列表中的适当位置,从而以排名的升序维护元素的有序列表。最后,对于调度,PIEO首先从有条件谓词当时为真的有序列表中筛选出元素的子集,然后以该子集中最小索引处的元素出队(“ Extract-Out”原语)。

因此,PIEO总是安排“排名最低的合格”元素。

此外,我们使用的见解是,对于大多数数据包调度算法而言,可以在入队到有序列表中时计算出元素适合进行调度的时间(teliдible),并且出队时过滤的资格谓词评估通常减少为(tcur r ent≥teliдible),在这里t可以是时间的任何单调递增函数。

这种见解使PIEO调度程序的硬件实现非常有效。

论文阅读:Fast, Scalable, and Programmable Packet Scheduler in Hardware的更多相关文章

  1. 快速人体姿态估计:CVPR2019论文阅读

    快速人体姿态估计:CVPR2019论文阅读 Fast Human Pose Estimation 论文链接: http://openaccess.thecvf.com/content_CVPR_201 ...

  2. [论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks

    [论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks 本文结构 解决问题 主要贡献 算法 ...

  3. [论文阅读笔记] node2vec Scalable Feature Learning for Networks

    [论文阅读笔记] node2vec:Scalable Feature Learning for Networks 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 由于DeepWal ...

  4. [论文阅读笔记] Fast Network Embedding Enhancement via High Order Proximity Approximati

    [论文阅读笔记] Fast Network Embedding Enhancement via High Order Proximity Approximation 本文结构 解决问题 主要贡献 主要 ...

  5. [论文阅读笔记] LouvainNE Hierarchical Louvain Method for High Quality and Scalable Network Embedding

    [论文阅读笔记] LouvainNE: Hierarchical Louvain Method for High Quality and Scalable Network Embedding 本文结构 ...

  6. [置顶] 人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)

    这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...

  7. 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  8. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  9. YOLO 论文阅读

    YOLO(You Only Look Once)是一个流行的目标检测方法,和Faster RCNN等state of the art方法比起来,主打检测速度快.截止到目前为止(2017年2月初),YO ...

随机推荐

  1. c++学习笔记之类和对象(三、static静态成员变量和静态成员函数)

    一.static静态成员变量 对象的内存中包含了成员变量,不同的对象占用不同的内存,这使得不同对象的成员变量相互独立,它们的值不受其他对象的影响.是有时候我们希望在多个对象之间共享数据,对象 a 改变 ...

  2. Git上传相关资料

    ############ssh key及 配置信息############# 设置Git的user name和email: $ git config --global user.name " ...

  3. thinkPHP模型before_insert新增前 before_update更新前 before_write写入前 区别

    thinkPHP模型中有个save方法,可用于新增数据和修改数据,这里容易出现混淆. 经过调试: before_write,不管是插入新数据还是修改数据都会执行: before_insert,只有插入 ...

  4. Mysql学习(二)之安装、开启自启、启动、重启、停止

    安装 方法一:通过homebrew brew install mysql 方法二:通过官网dmg文件安装(Mac) https://dev.mysql.com/downloads/mysql/ 通过h ...

  5. Gsview裁剪EPS文件

    (1)菜单栏  “options--show bounding boxs”  选中. (2)打开eps图,然后File->PS TO EPS,不选择Automatically calculate ...

  6. bzoj 3837 pa2013 Filary

    bzoj 先搞第一问.考虑简单情况,如果\(m=2\),那么一定有个剩余类大小\(\ge \lceil\frac{n}{2}\rceil\),同时这也是答案下界 然后我们每次随机选出一个数\(a_i\ ...

  7. 关于redis的几件小事(九)redis的并发竞争问题

    1.什么是并发竞争 就是多客户端同时并发写一个key,可能本来应该先到的数据后到了,导致数据版本错了.或者是多客户端同时获取一个key,修改值之后再写回去,只要顺序错了,数据就错了. 2.怎么解决 采 ...

  8. java读取blob全身乱码

    一.BLOB操作 .入库 ()JDBC方式 //通过JDBC获得数据库连接 Class.forName("oracle.jdbc.driver.OracleDriver"); Co ...

  9. openlayers之点,线,面(以城市,河流,省份为例,分别对应点线面)

    kpst._this这里指向初始化的map // 设置标注样式函数 function createStyle(name) { // 河流style var riverStyle = new Style ...

  10. HTML 5的革新之一:语义化标签一节元素标签。

    摘至于:<HTML 5的革新——语义化标签(一)> HTML 5的革新之一:语义化标签一节元素标签. 在HTML 5出来之前,我们用div来表示页面章节,但是这些div都没有实际意义.(即 ...