使用 coscheduling技术,如果有些线程没有和协同的集合同时调度,导致阻塞的部分异常进程,称之为“碎片(fragement)”。
通用的操作系统,在gang scheduling的收益很少。
在这篇文章中,关注SPMD (a single program, multiple data ) 模型,数据被划分到多个线程上进行处理。SPMD 广泛用于 OpenMP 、numerical libraries、MapReduce
gang scheldung 可以从两方面减少同步的开销:
gang scheduling 也有一些缺点:
当处理器的数量,和gang不匹配的时候,会造成碎片,导致处理器的利用不足。
在 gang scheduling 中,收益确实很少,还要满足一系列的限制。
要想 gang scheduling 别其他的调度性能更好,需要满足以下的几个条件:
在这些条件之外还需要一些假设:
workload
使用同步循环,有固定的及那个 interval 和最大差值 variance,在实验中gangs 总是匹配可用的cores数
We first
同时运行两个 BARRIER 应用程序。因为要满足有task竞争的条件。
在一个 BARRIER 程序中,改变 interval 进行一系列的实验。 另一个作为竞争背景程序,interval 设为 0.
在同步间隔为40us的时候gang scheduling 优势就减少了,同步间隔到50ms的时候,几乎没有优势了
工作量最好时均衡的,如果使用 busy-wait 等待的时间过长,还不如block 可以将处理器空出来给其的进程用。
如果一组线程中的工作量不均衡,会导致一些线程的等待时间过长,造成效率降低。
如果负载完全不关心响应时间或完成时间,而只关心吞吐率,那他的性能甚至不如一些简单的算法比如FIFO ,完全没有线程切换的开销,
进行了两组实验,每组实验都运行两个 BARRIER 程序,运行10秒:
batch 方式运行的吞吐率更高,比gang scheduling高了了 1.5%。
采用时间片,将调度的额外开销与 交互与响应的需求 进行tradeoff。
gang scheduling 优于基于优先级的调度的一个必要条件是,对多个并行程序感兴趣。如果只关注一个重要的程序,进行优先级排序,足够保证该程序的所有部分都并行。
空间划分调度:需求在长时间内是静态的,可以将固定数量的硬件分配给应用程序
事实上,如果工作负载的粒度和系统中的cores 是相匹配的,空间划分比gang 调度新能更好,省去了上下文切换开销。
但是如果有很多负载是突发性的,如果不能预先分配CPU给进程,就要进行频繁的重新划分,才能进行空间划分调度。
但是很难探查和重新调配未利用的资源。
因此,我们认为突发的负载是有利于gang scheduling进行的必要条件。
使用假想的交互式负载,并满足上述的条件,和 Linux 默认调度程序进行比较.
an interactive network monitoring application that employs data stream
clustering to analyze incoming TCP streams, looking for packets clustering around a specific attribute suggesting
an attack.