Dragonfly 拓扑的路由算法

  • Dragonfly 拓扑的路由算法
    • 1. Dragonfly 上的路由
      • (1)最小路由
      • (2)非最小路由
    • 2. 评估

Dragonfly 拓扑的路由算法

John Kim, William J. Dally 等人在 2008 年的 ISCA 中提出技术驱动、高度可扩展的 Dragonfly 拓扑。而文章中也提到了 针对 Dragonfly 拓扑的路由算法。本文对其中提到的路由算法进行汇总归纳。主要是讨论蜻蜓拓扑的最小和非最小路由算法。

1. Dragonfly 上的路由

图 7 显示了如何使用虚拟通道 (VC) 来避免路由死锁。为了防止路由死锁,最小路由需要两个VC,非最小路由需要三个VC。此分配消除了由于路由而产生的所有通道依赖性。对于某些应用程序,可能需要额外的虚拟通道来避免协议死锁 - 例如,对于共享内存系统,请求和回复消息需要单独的虚拟通道集。

在这里插入图片描述

(1)最小路由

Dragonfly 中位于组Gs中的路由器Rs,连接着源节点s,到组Gd中的路由器Rd的目标节点d的最小路由经过单个全局通道,由三步组成

  • 步骤 1:如果 Gs != Gd,并且 Rs 没有到 Gd 的连接,在 Gs 内从 Rs 路由到 Ra,Ra 路由器具有到 Gd 的全局通道。
  • 步骤 2:如果 Gs != Gd,则从 Ra 经过全局信道到达 Gd 中的路由器 Rb。
  • 步骤 3:如果 Rb != Rd,则在 Gd 内从 Rb 到 Rd 路由。

这种最小路由非常适合负载平衡流量(load-balanced traffic),但会导致对抗性流量模式的性能非常差

(2)非最小路由

为了对对抗性流量模式进行负载平衡,Valiant 的算法可以应用于系统级别 - 首先将每个数据包路由到随机选择的中间组 Gi,然后路由到其最终目的地 d。将 Valiant 的算法应用于组足以平衡全局和本地通道上的负载。这种随机非最小路由最多遍历两个全局通道,需要五个步骤:

  • 步骤 1:如果 Gs != Gi 并且 Rs 没有到 Gi 的连接,则在 Gs 内从 Rs 路由到 Ra,一个具有到 Gi 的全局通道的路由器。
  • 步骤 2:如果 Gs != Gi 从 Ra 经过全局信道到达 Gi 中的路由器 Rx。
  • 步骤 3:如果 Gi != Gd 并且 Rx 没有到 Gd 的连接,则在 Gi 内从 Rx 路由到 Ry(具有到Gd 的全局通道的路由器)。
  • 步骤 4:如果 Gi != Gd,则遍历从 Ry 到 Gd 中的路由器 Rb 的全局通道。
  • 步骤 5:如果 Rb != Rd,则在 Gd 内从 Rb 到 Rd 路由。

2. 评估

实验评估最小路由算法 (MIN),Valiant (VAL)路由,UGAL 通用全局自适应负载平衡(UGAL-G,UGAL-L)。UGAL逐个数据包在 MIN 和 VAL 之间进行选择以平衡网络负载。通过使用队列长度和跳数来估计网络延迟并选择延迟最小的路径来做出选择。实验实现了两个版本的 UGAL:

  • UGAL-L —— 使用当前路由器节点的本地队列信息。
  • UGAL-G —— 使用 Gs 中所有全局通道的队列信息(原文中是使用 Gs 中所有全局通道的队列信息,但应该是具有全局信息)。假设了解其他路由器上的队列长度。虽然难以实现,但这代表了 UGAL 的理想实现,因为负载平衡需要全局通道,而不是本地通道。

理想的 UGAL 路由称为 UGAL-G(具有全局信息的 UGAL),假设精确的全局网络状态信息可用,并使用路径上所有链路上的总队列长度来估计路径上最小的数据包延迟。令 T Q M I N TQ_{MIN} TQMIN M I N MIN MIN 路径的总队列长度, T Q V L B TQ_{VLB} TQVLB V L B VLB VLB 路径的总队列长度。若

T Q M I N ≤ T Q V L B + T TQ_{MIN} \leq TQ_{VLB} + T TQMINTQVLB+T

否则为 VLB 路径。这里的 T 是一个偏移常数,可以调整它来决定路径选择将在多大程度上偏向 MIN 路径(T 的较大值优先考虑 MIN 路径)。

使用良性和对抗性合成流量模式来评估不同的路由算法。对于均匀随机 (UR) 等良性流量,MIN 足以提供低延迟和高吞吐量,如图 8(a)。 VAL 实现了大约一半的网络容量,因为它的负载均衡使全局通道上的负载加倍。UGAL-G 和 UGAL-L 都接近 MIN 的吞吐量,但在接近饱和时延迟稍高。较高的延迟是由使用并行或贪婪分配引起的,其中每个端口的路由决策是并行做出的。使用顺序分配将减少延迟,但代价是分配器更复杂。

为了测试路由算法的负载平衡能力,使用最坏情况 (WC) 流量模式,其中组 Gi 中的每个节点将流量发送到组 Gi+1 中随机选择的节点。通过最小路由,此模式将导致每个组 Gi 中的所有节点通过单个全局通道将其所有流量发送到组 Gi+1,需要非最小路由通过将大部分流量分散到其他全局通道来平衡此流量模式的负载。此 WC 流量的评估如图 8(b) 所示。由于 MIN 通过单个通道转发来自每个组的所有流量,因此其吞吐量限制为 1/ah。VAL 实现略低于 50% 的吞吐量,这是该流量的最大可能吞吐量。UGAL-G 实现了与 VAL 相似的吞吐量,但 UGAL-L 导致吞吐量有限,并且在中间负载时平均数据包延迟较高。
在这里插入图片描述

未完待续…

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java-函数式编程-语法

目录 1、函数表现形式 分类 lambda表达式 参数类型可以全写,也可以全不写,但不能一部分写,一部分不写lambda 的省略策略:凡是可推导,都可以省略

【c++算法篇】双指针(上)

🔥个人主页:Quitecoder 🔥专栏:算法笔记仓 朋友们大家好啊,本篇文章我们来到算法的双指针部分 目录 1.移动零2.复写零3.快乐数4.盛水最多的容器 1.移动零 题目链接:283.移动零 题目描述: 算法…

Python量化炒股的数据信息获取—获取上市公司分红送股数据信息

Python量化炒股的数据信息获取—获取上市公司分红送股数据信息 上市公司分红送股数据,都存放在STK_XR_XD表中,该表保存在finance包中。要查看表中的数据信息,需要使用query()函数。 单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”…

微服务---gateway网关

目录 gateway作用 gateway使用 添加依赖 配置yml文件 自定义过滤器 nacos上的gateway的配置文件 我们现在知道了通过nacos注册服务,通过feign实现服务间接口的调用,那对于不同权限的用户访问同一个接口,我们怎么知道他是否具有访问的权…

Grafana:云原生时代的数据可视化与监控王者

🐇明明跟你说过:个人主页 🏅个人专栏:《Grafana:让数据说话的魔术师》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、Grafana简介 2、Grafana的重要性与影响力 …

开发体育赛事直播平台,研发技术选型与架构设计实现方案

本文将深入探讨“东莞梦幻网络科技”现成体育直播源码的技术实现方案,如何为用户提供流畅、互动、个性化的观赛体验。 一、技术栈选择:强强联合的基石1、后端开发:采用Java与PHP作为主要开发语言。Java以其强大的企业级应用支持,保…

双向冒泡法,可以只求最大最小值

int BiBubbleSort(int Arr[],int n,int maxnum){int left0,rightn-1;int i;bool notDone true;int temp;if(n<2)return -1;while(left<right&&notDone){ notDone false; //设置未发生交换标志 for(ileft;i<right;i){if(Arr[i]>Arr[i1]){//swap(Arr[…

初识指针(1)<C语言>

前言 指针是C语言中比较难的一部分&#xff0c;大部分同学对于此部分容易产生“畏难情结”&#xff0c;但是学习好这部分对C语言的深入很大的帮助&#xff0c;所以此篇主要以讲解指针基础为主。 指针概念 变量创建的本质就是在内存中申请空间&#xff0c;找到这个变量就需要地址…

tiny-Tcmalloc(高并发内存池)

项目地址&#xff08;绝对可运行&#xff09; 一. 初识高并发内存池 1、项目介绍 当前项目是实现一个高并发的内存池&#xff0c;它的原型是google的一个开源项目tcmalloc&#xff0c;tcmalloc全称Thread-Caching Malloc&#xff0c;即线程缓存的malloc&#xff0c;实现了高…

Pytorch 实现 GAN 对抗网络

GAN 对抗网络 GAN&#xff08;Generative Adversarial Network&#xff09;对抗网络指的是神经网络中包括两个子网络&#xff0c;一个用于生成信息&#xff0c;一个用于验证信息。下面的例子是生成图片的对抗网络&#xff0c;一个网络用于生成图片&#xff0c;另一个网络用于验…

Bookends for Mac:文献管理工具

Bookends for Mac&#xff0c;一款专为学术、研究和写作领域设计的文献管理工具&#xff0c;以其强大而高效的功能深受用户喜爱。这款软件支持多种文件格式&#xff0c;如PDF、DOC、RTF等&#xff0c;能够自动提取文献的关键信息&#xff0c;如作者、标题、出版社等&#xff0c…

Unity 性能优化之静态批处理(三)

提示&#xff1a;仅供参考&#xff0c;有误之处&#xff0c;麻烦大佬指出&#xff0c;不胜感激&#xff01; 文章目录 前言一、静态批处理是什么&#xff1f;二、使用步骤1.勾选Static Batching2.测试静态合批效果 三、静态合批得限制1、游戏对象处于激活状态。2、游戏对象有一…

Kannala-Brandt 鱼眼相机模型

最近在学习 ORB-SLAM3 的源代码&#xff0c;并模仿、重构了相机模型的实现 在学习的过程中发现针孔相机 (Pinhole) 与鱼眼相机 (Fisheye) 都有畸变参数&#xff0c;但是鱼眼相机无法使用 cv::undistort 函数去畸变 在对鱼眼相机的深度归一化平面进行可视化后&#xff0c;发现…

CNN实现卫星图像分类(tensorflow)

使用的数据集卫星图像有两类&#xff0c;airplane和lake&#xff0c;每个类别样本量各700张&#xff0c;大小为256*256&#xff0c;RGB三通道彩色卫星影像。搭建深度卷积神经网络&#xff0c;实现卫星影像二分类。 数据链接百度网盘地址&#xff0c;提取码: cq47 1、查看tenso…

swift微调多模态大语言模型

微调训练数据集指定方式的问题请教 Issue #813 modelscope/swift GitHubQwen1.5微调训练脚本中&#xff0c;我用到了--dataset new_data.jsonl 这个选项&#xff0c; 可以训练成功&#xff0c;但我看文档有提到--custom_train_dataset_path这个选项&#xff0c;这两个有什么…

C语言中字符串输入的3种方式

Ⅰ gets() 函数 gets() 函数的功能是从输入缓冲区中读取一个字符串存储到字符指针变量 str 所指向的内存空间 # include <stdio.h> int main(void) {char a[256] {0};gets(a);printf("%s",a);return 0; }Ⅱ getchar() # include <stdio.h> int mai…

「 网络安全常用术语解读 」通用安全通告框架CSAF详解

1. 简介 通用安全通告框架&#xff08;Common Security Advisory Framework&#xff0c;CSAF&#xff09;通过标准化结构化机器可读安全咨询的创建和分发&#xff0c;支持漏洞管理的自动化。CSAF是OASIS公开的官方标准。开发CSAF的技术委员会包括许多公共和私营部门的技术领导…

VsCode插件 -- Power Mode

一、安装插件 1. 首先在扩展市场里搜索 Power Mode 插件&#xff0c;如下图 二、配置插件 设置 点击小齿轮 打上勾 就可以了 第二种设置方法 1. 安装完成之后&#xff0c;使用快捷键 Ctrl Shift P 打开命令面板&#xff0c;在命令行中输入 settings.json &#xff0c; 选择首…

流畅的python-学习笔记_数据结构

概念 抽象基类&#xff1a;ABC, Abstract Base Class 序列 内置序列类型 分类 可分为容器类型和扁平类型 容器类型有list&#xff0c; tuple&#xff0c; collections.deque等&#xff0c;存储元素类型可不同&#xff0c;存储的元素也是内容的引用而非内容实际占用内存 …

.排序总讲.

在这里赘叙一下我对y总前四节所讲排序的分治思想以及递归的深度理解。 就以788.逆序对 这一题来讲&#xff08;我认为这一题对于分治和递归的思想体现的淋淋尽致&#xff09;。 题目&#xff1a; 给定一个长度为 n&#x1d45b; 的整数数列&#xff0c;请你计算数列中的逆序对…