Gang Scheduling Performance Benefits for Fine-Grain Synchronization

news2024/9/23 17:15:22

Gang Scheduling Performance Benefits for Fine-Grain Synchronization

题目

  • 什么是 gang secheduling ? 组调度,要么一组全部执行,要么都不执行
  • 什么是 fine-grain 同步 ?细粒度同步 CSDN 博客

摘要

  • gang scheduling, where a set of threads are scheduled to execute simultaneously on a set of processors. gang scheduling 一组线程同时在一组处理器上执行的调度
  • It allows the threads to interact efficiently by using busy waiting, without the risk of waiting for a thread that currently is not running 使用忙等来高效地互动。
  • 否则使用 block 来达到同步地目的会造成上下文切换,造成很大的开销。
  • have developed a model to evaluate the performance of different combi
    nations of synchronization mechanisms and scheduling policies 建立模型来评估同步机制和调度策略的组合
  • gang schedule 在细粒度同步地要求下更高效

INTRODUCTION

  • 随着“虚拟处理器”,多程序多处理器的发展, 程序执行过程中不可见,只能由系统软件管理 mapping 和 scheduling
  • 并行应用的线程互动,体现在线程的同步上。
  • explicit synchronization 显示同步 barrier 同步 互斥同步
  • implicit synchronization 隐式同步,数据存在生产者和消费者关系等。
  • In the case of fine-grain interactions it is shown that it is best for the threads to execute simultaneously on distinct processors,and to coordinate their activities with busy waiting.
    在细粒度的互动中,线程最好在不同的处理器上同时执行,通过忙等来进行协调
  • 在粗粒度的同步中,如果执行时间的方差很大,最好是通过阻塞的方式进行同步。这样就可以将处理器让出来,将给其他线程执行。

Related work

这篇文章是第一个分析 gang scheduling 的性能,以及同步和调度之间相互作用的。

  • This allows us to identify the situations in which gang scheduling
    should be used, namely when the application is based on fine-grain synchronization. 这也使我们能去确定,使用gang scheduling 的情况。

  • It is also the first to report
    experiments based on a real implementation of gang scheduling on a multiprocessor. 他也是第一个真正基于多处理器上的组调度的实际实现的实验。

  • Gang scheduling may cause an effect reminiscent of fragmentation, if the gang sizes do not fit the number of available processors. 如果组的大小和处理器数量不匹配,gang scheduling 将会产生 碎片效果

  • In this paper we
    show that for fine-grain computations gang scheduling
    can more than double the processing capability. 在细粒度计算中,gang scheduling 可以将处理器的能力提高一倍以上。

  • gang scheduling 指的就是将一组线程采用一对一的映射同时调度到一组处理器上。

2 Synchronization And Scheduling

  • busy waiting :忙等的性能非常依赖于系统的调度策略

  • blocking

  • Two-phase :两阶段阻塞,第一阶段使用一段时间的忙等,然后使用阻塞。当和gang scheduling在细粒度的情况下使用,基本上只用到了第一阶段的 忙等。使用其他调度,基本上是blocking,并且还比blocking的开销更大。

  • gang scheduling: 所用互动的线程同时运行,但是一组的线程数存在限制。

  • uncoordinated scheduling:各个处理器上的线程单独调度。

gang scheduling 和 blocking 结合是没有意义的,因为blocking的线程就算切换上下文,让出了处理器,处理器还是不能切换给别的gang的线程。
所以有三种组合:

  • busy waitng with gang scheduling
  • busy waiting with uncoordinated scheduling
  • blocking with uncoordinated scheduling

2.1 Model and Assumptions

20221124195008

  • 线程执行迭代计算
  • 每个迭代中执行 $t_p^{ij} $ 时间的计算,然后执行同步操作
  • 在执行同步的时候,他也会xiao’hao’yi,由于每个线程都需要执行,直接将这一部分的开销计入 $t_p^{ij} $
  • 每个线程,在执行一次迭代的时候,会有一个处理时间,和一个等待时间

平均等待时间
t p = 1 n k ∑ i = 1 n ∑ j = 1 k t p i j t_p = \frac{1}{nk}\sum_{i=1}^n\sum_{j=1}^k t_p^{ij} tp=nk1i=1nj=1ktpij

t p m a x j = m a x 1 ≤ i ≤ n t p i j t_p^{max j} = max_{1\leq i\leq n} t_p^{ij} tpmaxj=max1intpij

迭代 j 的线程 i 的等待时间为

t w i j = t p m a x , j − t p i j t_w^{ij} = t_p^{max,j} - t_p^{ij} twij=tpmax,jtpij

平均等待时间
t w = 1 n k ∑ i = 1 n ∑ j = 1 k t w i j t_w = \frac{1}{nk}\sum_{i=1}^n \sum_{j=1}^k t_w^{ij} tw=nk1i=1nj=1ktwij

note: t p + t w = ( 1 k ) ∑ j = 1 k t p m a x j t_p + t_w = (\frac{1}{k})\sum_{j=1}^k t_p^{max j} tp+tw=(k1)j=1ktpmaxj

由于同步的开销可能和处理器的数量相关,因此 t p t_p tp 的值还需要调整。

System Characterization

在多道程序多处理器的情况下,每个处理都映射了多个线程。并且,采用时分策略,为所有的线程提供相同的服务时间。
Assumptiong:

  • the number of threads on each processor is denoted by l
  • 我们只关注 a single gang of n threads ,mapped to n different processors,剩余的 n(l-1)个线程运行好坏不是我们关心的

对于blocking 策略,性能好坏,和其他gang 的线程行为有很大关系。因为blocking 策略有利他性:

  1. 所有的线程的行为都相同,都执行迭代操作
  2. 剩余的 l-1 组线程是独立调度的,纯计算的线程

调度时间片记为 τ q \tau_q τq
上下文切换的开销记为 τ c s \tau_cs τcs
blocking 的开销记为 α \alpha α 倍的上下文开销, KaTeX parse error: Undefined control sequence: \aplpha at position 1: \̲a̲p̲l̲p̲h̲a̲ 一定是大于1的

在粗粒度的情况下:
t p t_p tp 相对于 τ q \tau_q τq可能会大的多,在执行同步步骤之前可能会执行许多个时间片

在细粒度的条件下:
t p t_p tp 相对于 τ q \tau_q τq可能小的多,假设 τ q \tau_q τq的可能会执行 1 0 4 − 1 0 5 10^4 - 10^5 104105 个指令,每10-100个个指令执行一次交互。

k ( t p + t w ) ≫ τ q k(t_p + t_w) \gg \tau_q k(tp+tw)τq
在细粒度情况下,k 要足够大

2.2 Performance Dervition

Busy Waiting with Gang Scheduling

执行k次迭代的时间为:

T = ( k ( t p + t w ) + k ( t p + t w ) τ q τ c s ) T = (k(t_p + t_w) + \frac{k(t_p+t_w)}{\tau_q}\tau_{cs}) T=(k(tp+tw)+τqk(tp+tw)τcs)
乘 l 是因为,要考虑到每个processor 映射了 l个线程,并且采用了时分策略,需要为其他线程提供相同时长的服务。

平均每次迭代所需要的时间为:
t = ( 1 + f r a c τ c s τ q ) ( t q + t w ) l t = (1 + frac{\tau_{cs}}{\tau_q})(t_q + t_w)l t=(1+fracτcsτq)(tq+tw)l

因为 t p + t w = ( 1 k ) ∑ j = 1 k t p m a x j t_p + t_w = (\frac{1}{k})\sum_{j=1}^k t_p^{max j} tp+tw=(k1)j=1ktpmaxj ,所以执行速率取决于执行最慢的线程。

Busy Waiting with Uncoordinated Scheduling

使用忙等和非协调调度的行为表现和粒度是相关的。

粗粒度的情况下
在粗粒度的情况下,Busy Waiting with Uncoordinated Scheduling与 gang scheduling 的行为几乎一样。
由于同一组的线程不必同时执行,会导致 t p + t w t_p + t_w tp+tw 远远大于 τ q \tau_q τq ,每次迭代都会需要若干个调度。
计算 t 和之前的情况是一样的:
t = ( 1 + f r a c τ c s τ q ) ( t q + t w ) l t = (1 + frac{\tau_{cs}}{\tau_q})(t_q + t_w)l t=(1+fracτcsτq)(tq+tw)l

Question:

也是要等到所有线程同时调度时,才能完成同步操作的吧? 所以 t w t_w tw 的计算方式和之前不同?

在细粒度的情况下:
首先明确,在不加干预的情况下,也有一定概率,使得 n 个线程同时调度。当这种情况发生的时候,会完成很多轮的迭代。

当循环周期为 Λ \Lambda Λ时, n 段 长度为 λ \lambda λ 的重叠为 λ n Λ n − 1 \frac{\lambda^n}{\Lambda^{n-1}} Λn1λn

在细粒度的情况下

  • λ τ q \lambda \tau_q λτq
  • Λ = l ( τ q + τ c s ) \Lambda = l(\tau_q + \tau_{cs}) Λ=l(τq+τcs) 是一个调度周期
  • 每个调度周期线程重叠时间为 τ q n l n − 1 ( τ q + τ c s ) n − 1 \frac{\tau_q^n}{l^{n-1}(\tau_q + \tau_{cs})^{n-1}} ln1(τq+τcs)n1τqn
  • 每个调度周期完成的迭代数为: τ q n l n − 1 ( τ q + τ c s ) n − 1 ( t q + t w ) \frac{\tau_q^n}{l^{n-1}(\tau_q + \tau_{cs})^{n-1}(t_q + t_w)} ln1(τq+τcs)n1(tq+tw)τqn

执行 k 次迭代所需要的调度轮数 $m =\frac{kl^{n-1}(\tau_q + \tau_{cs})^{n-1}(t_q + t_w)}{\tau_q^n} $

总的执行时间为:
20221124220150

平均每一次迭代的时间为:
20221124220216

如果假设 τ q ≫ τ c s \tau_q \gg \tau_{cs} τqτcs,那么使用 uncoordinated 调度比 gang 调度慢 l n − 1 l^{n-1} ln1

事实上,应满足每个调度周期至少完成一轮迭代。
t = m i n ( E q . ( 8 ) , ( τ q + τ c s ) l ) t = min(Eq.(8), (\tau_q + \tau_{cs})l) t=min(Eq.(8),(τq+τcs)l)

Question: 为什么每个调度周期至少完成一轮迭代?他说这是个假设?没解释

Blocking Mechanism

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/32544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSM框架的基本整合

整合SSM框架要做哪些事情: SpringMVC: pom web.xml a. 前端调度器servlet b. 编码过滤器filter c. 支持rest的过滤器springmvc.xml a. 扫描controller包 b. 添加 c. 视图解析器 d. 静态资源解析添加控制器类… Spring:web.xml a. 监听器(在启动web容器时…

Qt QHeaderView 添加复选框

有两种方法&#xff1a; 1. 重载paintSection 主要是重载paintSection和mousePressEvent这两个函数 headview.h #ifndef HEADERVIEW_H #define HEADERVIEW_H#include <QObject> #include <QHeaderView> #include <QPainter> #include <QCheckBox> …

后端进阶知识 Buffer pool 图文详解 之 free链表

Buffer pool 图文详解 之 free 链表 前言数据页缓存页描述信息初始化 Buffer poolfree 链表获取空闲页数据页是否缓存可关注专栏 》MySQL 进阶知识 收藏点赞加关注 前言 Buffer pool 是 InnerDB 存储引擎的一个重要组件&#xff0c;MySQL 的所有 CRUD 操作都是围绕 Buffer poo…

MariaDB 数据文件 迁移

1. 需求 原MariaDB采用默认安装&#xff0c;安装在/所在的分区下&#xff0c;现在该服务器的磁盘空间不补足了&#xff0c;现在扩展插入了一块新的磁盘&#xff0c;并且挂载到了/www/目录下&#xff0c;现在需要将原来的数据库数据迁移至该目录下。 2. 查询数据存储目录 首先…

预测足球世界杯比赛

目录 1. 下载数据集 2. 数据预处理 3. 模型训练与选择 4. 预测 1. 下载数据集 下载后数据如下&#xff1a; FIFA World Cup | Kaggle 2. 数据预处理 reprocess_dataset() 方法是数据进行预处理。预处理过的数据如下&#xff1a; save_dataset() 方法是对预处理过的数据&…

LibreOJ_10010

链接 点此跳转 思路 题目描述 有 nnn 个小朋友坐成一圈&#xff0c;每人有 aia_iai​ 颗糖果。 每人只能给左右两人传递糖果。每人每次传递一颗糖果的代价为 111 。 求使所有人获得均等糖果的最小代价。 分析 设 xix_ixi​ 表示第 iii 个朋友向第 i−1i-1i−1 个小朋友…

爬虫与云服务器云数据库

腾讯云轻量应用服务器TDSQL-MYSQL数据库PYTHON做爬虫 实现目标&#xff1a;轻量应用服务器上运行Python爬虫&#xff0c;把数据写到TDSQL-MYSQL数据库中。 最近双十一&#xff0c;趁着这一波福利&#xff0c;在腾讯云购买了一个轻量应用服务器和TDSQL-MYSQL版的数据库。买来之…

OpenGL学习

1.1&#xff0c;状态机-上下文-对象 GPU渲染流程 OpenGL自身是一个巨大的状态机(State Machine)&#xff1a;一系列的变量描述OpenGL此刻应当如何运行。 状态机&#xff1a;变量&#xff08;描述该如何操作&#xff09;的大集合 OpenGL的状态通常被称为OpenGL上下文(Contex…

异构图注意力网络Heterogeneous Graph Attention Network ( HAN )

文章目录前言一、基础知识1.异构图&#xff08;Heterogeneous Graph&#xff09;2.元路径3.异构图注意力网络二、异构图注意力网络1.结点级别注意力&#xff08;Node-level Attention&#xff09;2.语义级别注意力&#xff08;Semantic-level Attention&#xff09;总结前言 异…

微信商城小程序怎么开发_分享微信商城小程序的搭建

如何搭建好一个微信商城&#xff1f;这三个功能要会用&#xff01; 1.定期低价秒杀&#xff0c;提高商城流量 除了通过私域流量裂变&#xff0c;低价秒杀是为商城引流提高打开率的良好手段。 以不同节日作为嘘头&#xff0c;在情人节、38妇女节、中秋国庆、七夕节等日子&…

前端框架 Nuxtjs Vue3 SEO解决方案 SSR

目录 一、Nuxtjs安装 二、路由规则 三、公共布局 四、Vue3中TypeScript的使用 一、Nuxtjs安装 参考&#xff1a;Installation Get Started with Nuxt安装 - NuxtJS | Nuxt.js 中文网Installation Get Started with Nuxt yarn create nuxt-app <项目名> 项目运行…

GAMES101 作业0 环境配置 PC下简单配置i

前言 GAMES101提供了计算机图形学相关教学知识&#xff0c;闫教授及其团队也为大家准备了相应课程作业。课程作业部署在虚拟机上&#xff0c;以便免去环境部署的麻烦。但对于一些同学来说&#xff0c;还是希望直接在WIN的VS上使用并编码&#xff0c;本文对此进行简单说明。 环…

神经网络和深度学习-后向传播back propagation

后向传播back propagation 首先我们要了解&#xff0c;前向传播&#xff0c;损失函数这些前置知识&#xff0c;下面我们给出一张神经网络的图 反向传播通过导数链式法则计算损失函数对各参数的梯度&#xff0c;并根据梯度进行参数的更新 下面举个简单的例子 我们需要知道x,y,…

Linux C网络通信过程

socket函数、sockaddr_in结构体 和 bind函数 socket函数的作用是创建一个网络文件描述符&#xff0c;程序通过这个文件描述符将数据发送到网络&#xff0c;也通过这个文件描述符从网络中接受数据。观察一下socket函数&#xff1a; int listenfd; listenfd socket(AF_INET, S…

NNDL 作业11:优化算法比较

目录 1. 编程实现图6-1&#xff0c;并观察特征 2. 观察梯度方向 3. 编写代码实现算法&#xff0c;并可视化轨迹 4. 分析上图&#xff0c;说明原理&#xff08;选做&#xff09; 5. 总结SGD、Momentum、AdaGrad、Adam的优缺点&#xff08;选做&#xff09; 6. Adam这么好&…

Python威布尔分布

文章目录威布尔分布及其性质在Python中生成威布尔分布的随机数指数分布和拉普拉斯分布的对比威布尔分布及其性质 威布尔分布&#xff0c;即Weibull distribution&#xff0c;又被译为韦伯分布、韦布尔分布等&#xff0c;是仅分布在正半轴的连续分布。 在numpy.random中&#…

python中urllib库的使用

1. 获取目标页面的源码 以获取百度页面源码为例 #使用urllib获取百度首页的源码 import urllib.request#1 定义一个url 作为需要访问的网址 url http://www.baidu.com#2 模拟浏览器向服务器发送请求 response响应 response urllib.request.urlopen(url)#3 获取响应中的页面…

Monkey测试

一、什么是 Monkey 测试 Monkey 测试是通过向系统发送伪随机的用户事件流&#xff08;如按键输入、触摸屏输入、手势输入等&#xff09;&#xff0c;实现对应用程序客户端的稳定性测试&#xff1b;通俗来说&#xff0c;Monkey 测试即“猴子测试”&#xff0c;是指像猴子一样&a…

JVM垃圾回收算法整理

JVM垃圾回收算法整理前言关键概念了解标记–清除算法复制算法标记–整理算法分代收集算法仰天大笑出门去&#xff0c;我辈岂是蓬蒿人前言 大概内容&#xff1a; jvm垃圾回收算法&#xff1a; 1、“标记–清除”算法&#xff1b;首先标记出所有需要被回收的对象&#xff0c;然…

搭建自己的SSR

Vue SSR介绍 是什么 官方文档&#xff1a;https://ssr.vuejs.org/Vue SSR&#xff08;Vue.js Server-Side Rendering&#xff09; 是 Vue.js 官方提供的一个服务端渲染&#xff08;同构应用&#xff09;解 决方案使用它可以构建同构应用还是基于原有的 Vue.js 技术栈 官方文档…