当前位置: 首页 > news >正文

流量类仲裁器(SCHED_NODE_TYPE_TC_ARBITER_TSAR) 和 SCHED_NODE_TYPE_RATE_LIMITER

在 Mellanox mlx5 驱动的 E-Switch QoS 体系中,SCHED_NODE_TYPE_TC_ARBITER_TSARSCHED_NODE_TYPE_RATE_LIMITER 是两种不同的调度节点类型,它们在功能和作用上有显著区别。


1. 流量类仲裁器(SCHED_NODE_TYPE_TC_ARBITER_TSAR)

  • 定义
    • 表示流量类(Traffic Class, TC)的仲裁器节点,负责管理和调度多个流量类之间的资源分配。
  • 功能
    • 仲裁调度:基于优先级或权重,在多个流量类之间分配带宽。
    • 层次结构:通常位于 QoS 层次结构的较高层,用于协调子节点(如速率限制器或虚拟端口)的行为。
  • 应用场景
    • 用于管理多个流量类别(TC),例如区分不同优先级的流量(如控制流量、数据流量等)。

2. 速率限制器(SCHED_NODE_TYPE_RATE_LIMITER)

  • 定义
    • 表示速率限制器节点,负责对特定流量进行带宽限制。
  • 功能
    • 流量整形:通过限制带宽,确保流量不会超过设定的速率。
    • 精细化控制:通常用于具体的虚拟端口或流,以实现更细粒度的 QoS 管理。
  • 应用场景
    • 用于限制单个 vport 或特定流的最大带宽。

3. 新父节点和原父节点为 SCHED_NODE_TYPE_TC_ARBITER_TSAR 的区别

当新父节点和原父节点都为 SCHED_NODE_TYPE_TC_ARBITER_TSAR 时,其主要区别在于它们可能属于不同的层次或表示不同的仲裁策略。例如:

  • 新旧父节点可能位于不同的 QoS 层次
    • 原父节点可能是一个更高层次的仲裁器,新父节点是一个更细化的仲裁器。
  • 仲裁策略可能不同
    • 新父节点可能具有不同的优先级或权重配置,从而影响 vport 的资源分配。

尽管它们类型相同,但切换到新父节点可能意味着 QoS 配置发生了变化,需要重新调整 vport 的 QoS 类型。


4. 当前 vport 的 QoS 类型设置

根据代码逻辑,当前 vport 的 QoS 类型取决于新旧父节点类型以及默认设置:

  1. 如果新父节点为 SCHED_NODE_TYPE_TC_ARBITER_TSAR

    • 当前 vport 的 QoS 类型设置为 SCHED_NODE_TYPE_RATE_LIMITER
      (因为挂载到 TC 仲裁器时,vport 通常需要速率限制器来控制其带宽。)
  2. 如果原父节点为 SCHED_NODE_TYPE_TC_ARBITER_TSAR 而新父节点不是:

    • 当前 vport 的 QoS 类型设置为 SCHED_NODE_TYPE_VPORT
      (因为从 TC 仲裁器切换到其他类型时,不再需要速率限制,而是直接作为虚拟端口处理。)
  3. 如果新旧父节点都不是 SCHED_NODE_TYPE_TC_ARBITER_TSAR

    • 当前 vport 的 QoS 类型保持不变,即继续使用 vport->qos.sched_node->type

总结

  • SCHED_NODE_TYPE_TC_ARBITER_TSAR 是用于管理多个流量类别的仲裁器,而 SCHED_NODE_TYPE_RATE_LIMITER 是用于具体限制带宽的工具。
  • 当新旧父节点均为 TC_ARBITER_TSAR 时,差异可能体现在层次结构或配置策略上。
  • 当前 vport 的 QoS 类型根据新旧父节点类型动态调整,以确保 QoS 配置与新的调度环境一致。
http://www.dtcms.com/a/20705.html

相关文章:

  • Java GC 基础知识快速回顾
  • Dockerfile 编写推荐
  • 前端(JS进阶)学习笔记(CLASS 2):构造函数数据常用函数
  • 1.10. 引用及内部可变性(简单回顾):引用、内部可变性、`Cell`类型及相关操作
  • 2.4.2 常量的定义与使用
  • Python怎样引用其他.py文件?怎样导入其他模块?
  • DeepSeek核心算法解析:如何打造比肩ChatGPT的国产大模型
  • 150,[5] BUUCTF WEB [BJDCTF2020]EasySearch
  • 【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列
  • Mac Golang 开发环境配置
  • Python 模块加载机制导致的问题
  • 146,[1] BUUCTF WEB [SWPU2019]Web1
  • Python的imutils库详细介绍
  • Linux(socket网络编程)UDP---初学
  • nacos学习笔记
  • DeepSeek-R1:通过强化学习激励大型语言模型的推理能力
  • 【LeetCode】3.无重复字符的最长字串
  • Qt中基于开源库QRencode生成二维码(附工程源码链接)
  • Mac 开发工具推荐
  • 《云原生安全攻防》-- K8s镜像安全:镜像全生命周期安全管理
  • 深入解析类方法与静态方法 —— 内存分析与直观图示详解
  • 项目访问出现504 Gateway Time-out nginx/1.21.6的情况
  • 注册表单提交加验证码功能
  • 服务器租用:虚拟化技术都包含哪些内容?
  • 2025年2月9日(数据分析_2)
  • Spring AI发布!让Java紧跟AI赛道!
  • ailx10的发明专利思路
  • HDFS体系结构
  • 【深度学习】深度学习和强化学习算法——深度 Q 网络DQN
  • 【SQL SERVER】sqlserver 该表字段如果被用作其他表的外键不能被truncate table