Sparrow - Distributed, Low Latency Scheduling
http://www.cs.berkeley.edu/~matei/papers/2013/sosp_sparrow.pdf
http://www.eecs.berkeley.edu/~keo/talks/sparrow-sosp-talk.pdf
解决的问题
现有的scheduler方案, 都是基于master的, 因为schedule必须要知道所有slave的情况, 然后才能决定到底如果schedule
这个对于传统的batch系统是没有问题的, 因为Hadoop一个job可能需要几个小时, 在划分task的时候可以比较粗粒度, task的个数也比较少, 所以花费几秒去schedule task没有任何问题
但是随着对latency的要求越来越高, 比如spark, task的响应时间在100ms左右, 这样会存在非常细粒度的task, 同样的task数量也很多(1 million scheduling decisions per second)
那么在这种场景下, 使用基于master的schedule就会比较低效, 你无法忍受100ms级别的task, 需要同样甚至更多的时间去schedule
所以就需要一种更加low latency和high throughput的schedule方法.

下面就是Sparrow的优势, 当然在quality placement上, Sparrow会稍微差些, 这是balance

How
首先如果要快, high throughput, 要易于扩展, 用中心化的设计就会有单点问题, 所以必须去中心化
Sparrow, 就是一种去中心化的scheduler算法
但是去中心化, 如何知道全局的slave的情况?
答案就是, 你不需要知道, Sparrow是一种基于随机算法的scheduler
最简单的是每次随机选一个worker, 很快很简单, 但是太naive
Per-task sampling
所以使用two choices load balancing technique, 其实也很简单
对每个task随机选两个workers, 然后从两个里面挑一个load轻的(shortest task queue), 这种方法对每个task单独的进行sampling, 所以叫做Per-task sampling

这种方法问题, 过于随机, 运气成分比较大, 比如上图的task1, 同时选到两个都很忙的workers, 就会做出一个很差的schedule
由于Job的响应时间, 是由最差那个task决定的, 因为只要有一个没完成, job也不能算完成.
Job’s response time is dictated by the longestwait time of any of the job’s tasks
而Job的响应时间取决于表现最差的那个task, 所以当load变得比较heavy的时候, 这种差的schedule发生的几率会大增, 导致整个效率随着load变重快速下降
Batch sampling
Batch sampling就是将一个job中的所有task一起来进行sampling
比如有2个task, 先随机选取4个workers, 然后从里面选出2个load轻的, 采取这种策略明显出现差的schedule的概率会大大减小
如下图, 对于上面同样的例子, 使用Batch sampling会做出更好的schedule

这种方法从下面的performance图上看, 是要比Per-task sampling要好些, 但是仍然不太理想
原因是,
1. 以task queue里面的task的数量来进行schedule不合理, 因为task运行的时间是不一定的, 一个long task的运行时间也许远远大于几个short task的和
2. Race condition where multiple schedulers concurrently place tasks, 比如m个scheduler同时发现worker1比较闲, 这样所有scheduler都把task放到worker1上, 导致差的schedule出现
Late binding
首先因为task运行时间是比较难准确预估的, 所以采用late binding的方法
如下图, 还是上面的例子, 随机选中4个worker后, 现不做decision, 而只是在每个worker上都插入一个reservation
这样不用预估, 而是让实际的运行情况来决定, 先排到的reservation就会发通知给scheduler, request task, 而scheduler会选取最先返回的2个workers
如图, worker1虽然task数目比较多, 但是却最先执行到reservation, 这个时候worker1就可以先向scheduler request task

这个方法的问题, 当worker在request task这段时间内是idle的, 有点浪费, 是否值得就看network round trip time和task执行时间之间的比例
在作者的测试系统中, task执行时间远大于network round trip time, 所以是值得的
In our target setting, this tradeoff leads to a 2% efficiency loss compared to queueing tasks at worker machines.
Proactive Cancellation
在late binding中, 当一个job的task已经schedule结束后, 应该主动的发送Proactive Cancellation给剩下的workers, 从queue里面删除相应的reservation
如果等worker发送request task时, 再告诉它已经没有task, 会造成时间浪费
Performance

Sparrow - Distributed, Low Latency Scheduling的更多相关文章
- Optimizing web servers for high throughput and low latency
转自:https://blogs.dropbox.com/tech/2017/09/optimizing-web-servers-for-high-throughput-and-low-latency ...
- LMAX Disruptor – High Performance, Low Latency and Simple Too 转载
原文地址:http://www.symphonious.net/2011/07/11/lmax-disruptor-high-performance-low-latency-and-simple-to ...
- Big Data资料汇总
整理和翻新一下自己看过和笔记过的Big Data相关的论文和Blog Streaming & Spark In-Stream Big Data Processing Discretized S ...
- Awesome Big Data List
https://github.com/onurakpolat/awesome-bigdata A curated list of awesome big data frameworks, resour ...
- Learning Spark: Lightning-Fast Big Data Analysis 中文翻译
Learning Spark: Lightning-Fast Big Data Analysis 中文翻译行为纯属个人对于Spark的兴趣,仅供学习. 如果我的翻译行为侵犯您的版权,请您告知,我将停止 ...
- Awesome Go
A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python. Contrib ...
- Go 语言相关的优秀框架,库及软件列表
If you see a package or project here that is no longer maintained or is not a good fit, please submi ...
- Awesome Go (http://awesome-go.com/)
A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python. Contrib ...
- Awesome Go精选的Go框架,库和软件的精选清单.A curated list of awesome Go frameworks, libraries and software
Awesome Go financial support to Awesome Go A curated list of awesome Go frameworks, libraries a ...
随机推荐
- Eclipse 最有用的快捷键
Eclipse中10个最有用的快捷键组合 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升. ...
- 03、同事分享课程的笔记 —《Android应用低功耗设计》
这是安卓组的同事一个月前分享的一节课程,听课时写了一下笔记,之前是写在本子上的,感觉内容挺不错 的,就保存在博客了吧,方便回看. 他曾经在就职于英特尔公司,是与芯片设计相关的,这课程标题虽然是与安卓相 ...
- FMC—扩展外部 SDRAM
本章参考资料:< STM32F4xx 参考手册 2>.< STM32F4xx 规格书>.库帮助文档< stm32f4xx_dsp_stdperiph_lib_um.chm ...
- EXTI—外部中断/事件控制器
外部中断/事件控制器(EXTI)管理了控制器的 23 个中断/事件线.每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测. EXTI 可以实现对每个中断/事件线进行单独 ...
- ParagraphFormat 对象【精品】
ParagraphFormat 对象 贡献者:motolola 日期:2009-05-27 阅读:5261 回复: 相关标签:wps > API > paragraphfo ...
- 纯CSS炫酷3D旋转立方体进度条特效
在网站制作中,提高用户体验度是一项非常重要的任务.一个创意设计不但能吸引用户的眼球,还能大大的提高用户的体验.在这篇文章中,我们将大胆的将前面所学的3D立方体和进度条结合起来,制作一款纯CSS3的3D ...
- 一款基于jQuery的全屏广告图片焦点图
之前为大家分享了很多jQuery焦点图插件.今天我们要介绍的这款jQuery全屏广告图片焦点图插件也非常不错,图片切换时有淡出淡出的动画效果,并且也相当流畅.效果图如下: 在线预览 源码下载 实现 ...
- groupBox和panel
private void Form1_Load(object sender, EventArgs e) { groupBox1.Text = "信息表"; panel1.Borde ...
- HTML5关于上传API的一些使用(中)
上一次写了关于HTML的上传API,XMLHttpRequest2.0的上传方式,以及HTML5中上传之前本地的预览,包括对于图片以及部分信息的预 览.这次我们就讲下HTML5中关于上传的一些各种个性 ...
- cssText方式写入css
<div class="a" id="a">hello world</div> <script> //通过JS来覆写对象的样 ...