作者:刘旭晖 Raymond 转载请注明出处
Email:colorant at 163.com
BLOG:http://blog.csdn.net/colorant/
更多论文阅读笔记 http://blog.csdn.net/colorant/article/details/8256145
关键字
集群调度
==目标问题 ==
在大规模的集群中,为了充分利用硬件资源,通常会将各种类型(CPU密集,IO密集,批量处理,低延迟等等)的workloads运行在同一台机器上,同时随着集群规模的增大,需要调度的任务的规模也线性增大。该论文的目标是为这种应用场合提供一种能灵活适应各种类型的任务,可扩展的高性能的调度系统
==核心思想 ==
Omega的核心设计目标包括:硬件资源的高利用率,用户定义调度策略,快速调度决策过程以及兼顾各种层面的公平调度
常见的调度方案大致可分为,*集中式的调度框架,和两级式的调度框架如Mesos等,前者无论从调度规模还是调度策略的角度上来说,都很难进行扩展。后者在资源分配和并发度上受其资源可见性和锁机制的影响,也有很大的局限性。
Omega的方案是围绕着资源状态共享的思想,多个并发的调度进程以乐观锁的方式访问这些共享状态来获得调度框架的可扩展性。
==实现 ==
在Omega中,全局所有的资源对于各个调度进程来说都是可见的,各调度进程都有一份资源状态的拷贝,以此为基础来调度资源,在准备好资源的调度方案以后,原子性的进行一次提交,对共享的资源状态进行修改,如果失败则重新调度。无论成功与否,都会对本地的资源状态进行更新。可以看到其调度效率的高低取决于冲突的概率。
其中,资源可以根据任务的优先级被抢占,各调度进程也可以决定是否占用部分资源等。
同时,由于没有*调度进程的存在,不太可能实现绝对的公平调度,但是为了在一定程度满足公平调度的需求,各个调度进程可以配置最大可调度资源和任务的上限等
==其它 ==
不知道Omega最后在Google内部的使用情况如何,个人理解在调度公平性,避免饥饿和减少冲突等方面需要更细化的方案和策略。