论文阅读:Fast, Scalable, and Programmable Packet Scheduler in Hardware
摘要:
随着链接速度的提高和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的更多相关文章
- 快速人体姿态估计:CVPR2019论文阅读
快速人体姿态估计:CVPR2019论文阅读 Fast Human Pose Estimation 论文链接: http://openaccess.thecvf.com/content_CVPR_201 ...
- [论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks
[论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks 本文结构 解决问题 主要贡献 算法 ...
- [论文阅读笔记] node2vec Scalable Feature Learning for Networks
[论文阅读笔记] node2vec:Scalable Feature Learning for Networks 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 由于DeepWal ...
- [论文阅读笔记] Fast Network Embedding Enhancement via High Order Proximity Approximati
[论文阅读笔记] Fast Network Embedding Enhancement via High Order Proximity Approximation 本文结构 解决问题 主要贡献 主要 ...
- [论文阅读笔记] LouvainNE Hierarchical Louvain Method for High Quality and Scalable Network Embedding
[论文阅读笔记] LouvainNE: Hierarchical Louvain Method for High Quality and Scalable Network Embedding 本文结构 ...
- [置顶]
人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)
这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...
- 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- YOLO 论文阅读
YOLO(You Only Look Once)是一个流行的目标检测方法,和Faster RCNN等state of the art方法比起来,主打检测速度快.截止到目前为止(2017年2月初),YO ...
随机推荐
- 在Ubuntu上安装Hbase
1.下载hbase2.0.5 解压缩并改名为hbase目录,放到/usr/local下(注意权限) sudo mv ~/hbase-2.0.5 /usr/local/hbase 2.修改目录所有者 / ...
- 操作系统(五)CPU调度
CPU调度是多道程序操作系统的基础.
- oa_mvc_easyui_详细页(5)
1.表格详细列中添加a标签,给id参数 <a href="javascript:void(0)" class="details" ids="@n ...
- Linux系统定时备份网站文件到七牛云存储脚本
1.七牛云账号注册. 有些朋友可能会问为什么要备份到七牛云?很简单,七牛云免费注册就能获取1G的存储空间,只要简单几步操作完成实名认证即可获取10G的存储空间,对于一般个人站点来说已经足够备份使用了. ...
- Linux经典操作
1.Linux批量终止在运行中包含某个字符串的所有进程. ps -ef|grep celery | grep -v grep|cut -c 9-15|xargs kill -9
- 2019-11-29-asp-dotnet-core-通过图片统计-csdn-用户访问
title author date CreateTime categories asp dotnet core 通过图片统计 csdn 用户访问 lindexi 2019-11-29 08:26:58 ...
- 基于Chromium的浏览器已上线通用“显示密码”按钮
基于Chromium的Edge在日前发布的Canary通道版本中,对用户界面进行了优化调整从而让InPrivate窗口变得更加简洁.在今天获得的版本更新中,微软继续带来了隐私相关的新内容--实现通用的 ...
- dumpe2fs Linux支持的文件系统
dumpe2fs (-bh)装置文件名 选项与参数: -b : 列出保留为坏轨的部分 -h : 仅列出superblock的数据,不会列出其他的区段内容 查看Linux支持的文件系统哪些支持: ls ...
- 使用sproxy.exe访问基于soap的webservice
使用vc访问基于soap的webservice有多种方法,其中有一种是使用atlsoap,关于这个可以搜索sproxy.exe文章,不在这介绍(主要是我的写作能力太差).我写这个日记主要是项记录访问w ...
- Jmeter Beanshell 编程简介
简介 Jmeter除了提供丰富的组件以外,还提供脚本支持,可通过编写脚本来丰富Jmeter,实现普通组件无法完成的功能.Beanshell是一种轻量级的Java脚本语言,完全符合Java规范,并且内置 ...