【论文阅读】互连网络的负载平衡路由算法 (GAL, Globally Adaptive Load-balancing 全局自适应负载平衡)

news2024/10/5 12:50:23
  • Globally Adaptive Load-balancing 全局自适应负载平衡
    • GAL: Globally Adaptive Load-balanced routing 全局自适应负载平衡路由
      • 1. GAL on a ring
      • 2. GAL on higher dimensional torus
      • 3. 实验性能
      • 4. 算法稳定性 Stability
      • 总结
    • References

Globally Adaptive Load-balancing 全局自适应负载平衡

将自适应(adaptive)引入后,可以发现自适应算法比 oblivious 算法具有更优越的平均性能。但最坏情况下(worst-case)的高吞吐量的代价是本地流量(local traffic)的下降,对于任何类型的不经意的错误路由(绕远)来说,良性流量的次优性能仍然亟待解决。

此次重点讨论自适应算法,引入了两种新的全局自适应负载均衡路由方法,称为 GAL[1] 和 CQR[2]。与之前基于本地信息(具有最短输出队列(shortest output queue)的有效维度)做出路由决策的自适应路由算法不同,全局自适应负载均衡算法使用分段注入队列(segmented injection queues)或通道队列(channel queues)来感知全局拥塞,以决定每个维度的路由方向。它们通过自适应地在选定的方向上进行路由来进一步平衡网络的负载。使用近似全局信息使 GAL 和 CQR 能够在良性流量模式上实现最小自适应路由的性能(延迟和吞吐量),同时在对抗性流量上实现明显的负载平衡目标。

GAL: Globally Adaptive Load-balanced routing 全局自适应负载平衡路由

迄今为止讨论(在当时)的自适应算法还没有在良性模式(benigh patterns)(例如 UR、NN)和对抗模式(例如 TOR)上都产生最佳吞吐量。理想的算法会以最小路由路由良性流量,并在网络通道上平衡对抗性流量的负载。在本节中,我们提出一种路由算法 GAL,该算法使用近似全局信息(approximate global infomation),将其路由决策在合适的时刻从最小更改为非最小。首先考虑在节点环上路由良性流量 NN 和对抗性流量 TOR 的算法,然后将 GAL 扩展到更高维的环面网络。

1. GAL on a ring

为了感知 8 节点的 ring 的近似全局信息,需要考虑每个源节点的 8 组注入队列(即将注入队列分段),每个组对应一个目标节点。每个组包含两个队列,一个最小队列和一个非最小队列(高维便是多个非最小队列)。当从终端节点接受数据包时,如果该队列的长度(已存储数据包/flit的个数)小于阈值T(threshold),则将数据包放在目的地组中的最小队列进行最小路由,否则将其插入到两个队列中较短的队列中,如图5.1所示。

在这里插入图片描述

当使用这种方案时,理想情况是 NN 流量模式总是被最小化,即永远不会到达最小队列的阈值。而当用此方案去路由 TOR 流量模式时,最初所有的数据包都会使用最小路由,然而当达到 0.33 load 的负载,最小方向会达到饱和而阈值也会被超过,因此方案接下来会将以非最小路由的方式发送剩下的数据包

在这里插入图片描述

如图5.2所示,方案在低负载时以最小路由进行路由,只有当最小通道在 0.33 的负载下饱和后,最小队列长度才会超过阈值。此时一些流量会被非最小路由。随着负载的增加,更多的流量会被非最小路由。在饱和时,负载会以5/8的流量最小路由和3/8的流量非最小路由比例保持平衡。因此通过使用近似全局拥塞信息做出全局路由决策(最小或非最小),该方案能够在良性模式(NN)和对抗模式(TOR)上实现最佳性能,这是先前路由算法没有实现的

2. GAL on higher dimensional torus

将 GAL 引入高维度 Torus 拓扑。在 n 个维度的 torus 拓扑中,将源节点 s 到目标节点 d 的所有可能路径划分为 2^n 个象限(quadrants),每个象限对应一种方向组合(每个维度提供一个方向)。GAL为每个象限提供一组单独的注入队列。图5.3显示了2-D network的每个节点的设置。

在这里插入图片描述

每个 node(路由器)都有一个无限源队列对终端节点的网络接口进行建模,类似于 Booksim 模拟器模拟中的注入队列。每个节点中共有 S = k^2 个组(Sets),每个组包含4个注入队列(代表四个象限,其中一个为最小路由队列,根据源目标节点对)。当注入单元(injection unit)接收数据包时,注入Sets由目标节点确定。当确定了注入组后,在组中,选择注入队列(即选择象限)按如下步骤:

  • 优先选择与从源到目标节点拥有最小距离且其占用率小于阈值的相关的象限的队列。如果队列超过了阈值,则选择所有队列中最短的队列
  • 一旦选择了象限,数据包就会在该象限内进行自适应路由,如 GOAL 按照本地拥塞信息(具有最短队列的有效维度)进行自适应路由。

如图5.3所示,GAL 路由算法需要和 GOAL 一样的 3 个 VC 通道在每个单向的物理通道去保证无死锁。一旦为数据包选择了象限,数据包就会在该象限中单调地前进,从而无活锁。

3. 实验性能

将 GAL 与自适应算法 CHAOS、MIN AD 和 GOAL 的性能进行比较。图 5.3 显示了 GAL 节点的实验设置。每个节点都有一个无限源队列来对网络接口进行建模,并且有 8x8 = 64 组用于 8x8 环面的注入队列。每组都有与每个象限相对应的 4 个注入队列(每个队列都有128flit deep)。路由器中每个单向的物理通道分别有 3 个 VC 通道(32 flits deep each)。假设每个数据包长度为 1 flit,以便将路由算法研究与流量控制问题分开。对于每个最小注入队列,GAL 的阈值为 2 flits。所有算法的总缓冲区资源保持恒定,即 VC 数量和 VC 通道缓冲区深度的乘积保持恒定

在这里插入图片描述

良性和对抗性流量模式的四种算法的吞吐量性能。两种良性流量模式如图 5.4 所示,而四种对抗性模式如图 5.5 所示。这些数字表明,GAL 是唯一能够在这两类流量模式上提供最佳性能的算法。它成为一种类似 GOAL 的负载均衡算法,并与对抗流量上 GOAL 的吞吐量相匹配。同时,它在良性模式上的表现并与 MIN AD 在这些模式上的性能相匹配。

在这里插入图片描述

此外还有延迟等性能的比较,此处不一一总结。

4. 算法稳定性 Stability

之前讨论了路由算法稳定性的重要性。即如果提供的负载增加到超过饱和点,可接受的吞吐量仍保持恒定,则算法是稳定的对于非最小自适应路由算法来说,实现稳定性可能具有挑战性,因为很难区分负载不平衡引起的拥塞和负载平衡网络饱和引起的拥塞。在前一种情况下,重新路由流量(可能是非最小流量)可以缓解这种不平衡并增加吞吐量。然而,在负载平衡但饱和的情况下,重新路由流量可能会导致不平衡并降低吞吐量。 GAL 通过测量吞吐量的变化并调整其队列阈值来解决这种不稳定问题。更改这些阈值可以控制非最小发送的数据包比例,这反过来又用于保持稳定性。

一个简单的示例来演示控制非最小发送数据包比例的必要性。考虑使用 GAL 路由 UR 流量但使用固定队列阈值的情况。对于超出饱和的提供的负载,流量最初将被最小化路由,因为最小队列是空的(应该是没有到达阈值)。由于网络无法承受所有流量,背压将导致数据包传输到到最小队列中。尽管最小路由完美地平衡了 UR 流量的负载,但这些队列的占用率最终将超过固定阈值,并且某些流量将被非最小路由。此时,吞吐量将开始下降,因为通道带宽被非最小数据包浪费(图 5.10)。

在这里插入图片描述

相反,如果数据包没有进行非最小路由,吞吐量将保持稳定。为了控制非最小路由的数据包数量,GAL 在队列深度设置的最小值Tmin和最大值Tmax之间动态改变每个阈值 T。这是针对每个队列集(queue set,即针对每一个目标节点进行动态调整)独立完成的。然后,阈值限制非最小路由的数据包的比例 - 增加会降低数据包被放置在非最小队列中的可能性,并且当 T = Tmax 时,所有数据包都被最小路由。 为了确保稳定性,只要观察到吞吐量下降,T就会增加。如果一直下降,T会持续增加到Tmax为止。流量模式可能之后会进行变化,使得非最小路由重新有效,当吞吐量不变或者增加,T就会下降

文章通过检测每个源节点对应集合中的所有注入队列在一个周期内排出的数据包的总数来估算每个源-目标节点对的吞吐量。这也是针对每个队列集(queue set,即针对每一个目标节点进行动态调整)独立完成的。

在这里插入图片描述

在这里插入图片描述

图 5.11 显示了阈值调整的示例。测试设置如下:在 1.10 注入负载下施加 UR 流量,然后在第 600 个周期切换到注入负载下的 TOR。因此,具有阈值调整方案的 GAL 对于良性和硬性流量模式都是稳定的。但是在阈值进行调整的过程中,以及通过阈值进行最小非最小路由切换所带来的延迟较高,后续需要解决

总结

在低负载和良性流量模式下,GAL 最小限度地路由所有流量,因此与此类友好流量上的最小路由算法的低延迟和高吞吐量相匹配。在对抗性流量模式下,GAL 在低负载时进行最小路由,然后在注入队列检测到拥塞时切换到非最小路由。在饱和状态下,GAL 与最佳负载平衡的不经意路由的吞吐量相匹配。这结合了最小算法(低负载下的低延迟)和明显负载平衡算法(高饱和​​吞吐量)的最佳功能

虽然 GAL 在各种吞吐量和延迟指标上比任何其他已知的路由算法表现更好,但 GAL 存在四个严重问题

  • 一旦开始非最小路由流量,它就会具有非常高的延迟。
  • 适应流量变化较慢。
  • 需要复杂的方法来实现稳定性。
  • 算法实施起来很复杂。

这些问题都与 GAL 使用注入队列长度来推断全局拥塞有关。之后将介绍通道队列路由(CQR - 发音为“seeker”)[2],它与 GAL 在本地和困难模式上实现高吞吐量的能力相匹配,但克服了 GAL 的局限性。 CQR 通过使用通道队列而不是注入队列来估计全局拥塞,从而克服了这些限制在需要非最小路由的负载下,CQR 的延迟比 GAL 低得多。它能够快速适应流量的变化,无条件稳定,并且实现简单

References

[1] A. Singh, W. J. Dally, A. K. Gupta, and B. Towles, “Adaptive channel queue routing on k-ary n-cubes,” in Proceedings of the sixteenth annual ACM symposium on Parallelism in algorithms and architectures, Barcelona Spain: ACM, Jun. 2004, pp. 11–19. doi: 10.1145/1007912.1007915.
[2] A. Singh, W. J. Dally, B. Towles, and A. K. Gupta, “Globally Adaptive Load-Balanced Routing on Tori,” IEEE Comput. Arch. Lett., vol. 3, no. 1, pp. 2–2, Jan. 2004, doi: 10.1109/L-CA.2004.8.

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

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

相关文章

node.js + @elastic/elasticsearch 操作elasticsearch数据库

我这边node.js 使用的是 koa2,elasticsearch是8.11.1版本 官网:https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/getting-started-js.html 一、elastic/elasticsearch 连接 elasticsearch数据库 如果elasticsearch没有设…

开发模型???

开发模型??? 一:什么是需求??二:开发模型2.1:软件的生命周期2.1.1:软件生命周期 2.2:常见开发模型2.2.1:瀑布模型2.2.2:螺旋模型2.2.3:增量模型 && 迭代模型 二级目录 一级目录二级目录二级目录二级目录三级目录 一:什么是需求?? 用户需求:通常就是一句话,没有…

网络原理(qq消息发送原理)

1.网络初识 IP地址 概念: IP地址主要⽤于标识⽹络主机、其他⽹络设备(如路由器)的⽹络地址。简单说,IP地址⽤于定位主机的⽹络地址。 就像我们发送快递⼀样,需要知道对⽅的收货地址,快递员才能将包裹送到…

时间序列生成数据,TransformerGAN

简介:这个代码可以用于时间序列修复和生成。使用transformer提取单变量或者多变时间窗口的趋势分布情况。然后使用GAN生成分布类似的时间序列。 此外,还实现了基于prompt的数据生成,比如指定生成某个月份的数据、某半个月的数据、某一个星期的…

Git变更账户、查看账户

1、变更账户 (1)修改当前文件夹用户 git config user.name “新用户名” git config user.email “新邮箱” (2)修改全局git用户 git config - -global user.name “新用户名” git config - -global user.email “新邮箱”…

TensorRT模型压缩

参考链接: https://www.jianshu.com/p/805b76c9d229 https://blog.csdn.net/chenhaogu/article/details/132677778 基本理论 TensorRT是一个高性能的深度学习推理优化器,可以为深度学习应用提供低延迟、高吞吐率的部署推理。TensorRT可用于对超大规模数…

(六)几何平均数计算 补充案例 #统计学 #CDA学习打卡

一. 两个案例 1)几何平均数计算:基金年平均增长率计算 在财务、投资和银行业的问题中,几何平均数的应用尤为常见,当你任何时候想确定过去几个连续时期的平均变化率时,都能应用几何平均数。其他通常的应用包括物种总体…

《HCIP-openEuler实验指导手册》1.2Apache主页面配置

知识点 一、配置服务器监听IP及端口 注释主配置文件“监听IP及端口”部分 cd /etc/httpd/conf cp httpd.conf httpd.conf.bak vim httpd.conf可以在普通模式下搜索Listen关键字 :/Listen按n键继续向后搜索 在/etc/httpd/conf.d中新建子配置文件port.conf: tou…

FPGA秋招-笔记整理(3)无符号数、有符号数

参考:Verilog学习笔记——有符号数的乘法和加法 一、无符号数、有符号数 将输入输出全部定义为有符号数 (1)无符号数的读取按照原码进行,有符号数的读取应该按照补码读取,计算规则为去掉符号位后取反、加1在计算数值…

84.柱形图中最大的矩阵

二刷终于能过了. 思路解析: 不愧是hard,第一步就很难想, 对于每一个矩阵,我们要想清楚怎么拿到最大矩阵, 对于每个height[i],我们需要找到left和right,left是i左边第一个小于height[i]的,right是右边第一个小于height[i]的,那么他的最大矩阵就是height[i] * (right-left-…

暗区突围无限测试资格获取教程 暗区突围怎么参加测试教程推荐

《暗区突围:无限》是一款强调极致真实与沉浸感的军事策略游戏,它邀请玩家踏入危机四伏的战场,通过射击、智取与突袭,铺就一条满载财富的道路。在这片未知与挑战并存的土地上,游戏赋予玩家极高的行动自由,旨…

苍穹外卖绕过微信支付

经过以下改动可实现: 1、不用微信支付端口 2、弹出支付成功的界面 3、数据库修改支付成功后的数据 #在OrderServiceImpl.java里加入Autowiredprivate OrderService orderService; #在OrderServiceImpl.java里的payment函数做以下改动 #图片里有,红色为原…

如何从requirements.txt文件中安装pytorch

平时使用requirements.txt文件来安装python的依赖,如下所示: Flask3.0.0 Flask-Cors4.0.0 elastic-transport8.11.0 elasticsearch8.11.1但是如果我们的依赖中包含pytorch依赖,显然是不能简单的通过这个方式来进行的,例如&#x…

怎样将便签软件搬家?便签迁移攻略

便签软件已成为我们日常生活中不可或缺的记录工具。无论是重要的工作内容,还是琐碎的生活事务,我们都会在便签中一一记下。然而,当我们需要更换电脑或其他设备时,如何将这些珍贵的便签内容迁移到新设备上,成为了许多人…

Linxu系统服务管理,systemd知识/进程优先级/平均负载/php进程CPU100%怎么解决系列知识!

shell脚本(命令)放后台 sleep 300& 放到后台运行,脚本或命令要全路径 nohup:用户推出系统进程继续工作 【功能说明】 nohup 命令可以将程序以忽略挂起信号的方式运行起来,被运行程序的输出信息将不会显示到终端 如…

VS2019配合QT5.9开发IRayAT430相机SDK

环境配置 VS2019 QT5.9 编译器版本 MSVC2017_64添加系统环境变量(完毕后重启电脑) 从VS2019中下载Qt插件 从VS2019中添加单个编译组件 上述操作完成后用VS打开工程文件,工程文件地址 : C:\Users\86173\Desktop\IRCNETSDK_W…

337. 打家劫舍 III 树上最大独立集

这个题目其实就是 树形结构的 打家劫舍 (隔一家抢一家) 在打家劫舍中,我们是使用dp[i]记录当前的最大值,如果上一家刚抢过,就返回dp[i-2] 而对于这个题目,我们对每个节点记录两个状态,就是抢和没抢的最大值 具体转移方程如下: dfs(node,rob) 表示对于当前node节点,抢了true或…

最大连续1的个数 ||| ---- 滑动窗口

题目链接 题目: 分析: 题目中说可以将最多k个0翻转成1, 如果我们真的这样算就会十分麻烦, 所以我们可以换一种思路: 找到一个最长的子数组, 最多有k个0解法一: 暴力解法: 找到所有的最多有k个0的子字符串, 返回最长的解法二: 找到最长的子数组, 我们可以想到"滑动窗口算…

968.监控二叉树 树上最小支配集

法一: 动态规划 一个被支配的节点只会有三种状态 1.它本身有摄像头 2.他没有摄像头, 但是它的父节点有摄像头 3.他没有摄像头, 但是它的子节点有摄像头 我们 dfs(node,state) 记录在node节点时(以node为根的子树),状态为state下的所有最小摄像头 // 本身有摄像头就看左右孩子…

2024/4/28 C++day5

有以下类&#xff0c;完成特殊成员函数 class Person { string name; int *age; } class Stu:public Person { const double score; } #include <iostream> #include <string> using namespace std; class Person { string name; int *age ; publi…