无损以太网的ROCE革命,队列的缓存空间优化分析

embedded/2024/9/23 18:27:29/

1560be46c3512baa4768a4922d8698d0.jpeg 

ROCE无损以太网,队列的缓存空间优化

   

多级缓存架构优化芯片性能:
* 缓存空间细分为芯片级、端口级和队列级,实现精细管理。
* 无损队列引入Headroom缓存空间,确保数据完整性。

   在芯片层面:

e986731050cd410b18617fd9863be381.jpeg


静态缓存为端口提供保证的缓存空间,采用独占分配机制。一旦端口分配到缓存资源,即使闲置,也不会被其他端口占用。这确保了端口始终拥有预留的缓存容量。

动态缓存:芯片上 Packet 缓存包含动态和静态部分。动态缓存进一步划分为 Service Pool 和 Headroom Pool。
Service Pool 专用于满足流量需求,而 Headroom Pool 为意外流量高峰提供缓冲。这两个分区独立运作,无法相互使用空闲缓存。

  • Service Pool:服务于端口级的Port Service缓存划分,所有端口级的Port Service缓存共享同一个芯片级Service Pool。例如,如果芯片级Service Pool缓存容量为100KBytes,端口1和端口2的Port Service缓存需求同为80KBytes。当某一时刻端口1已占用70KBytes的Port Service缓存时,端口2理论上最多还能再使用30KBytes的Port Service缓存。
  • Headroom Pool:针对端口级的Port Headroom缓存进行划分,所有端口级的Port Headroom缓存同样共享芯片级的Headroom Pool。假定芯片级Headroom Pool缓存大小设定为50KBytes,端口1和端口2的Port Headroom缓存需求均为40KBytes。在某一时间点,若端口1已占用30KBytes的Port Headroom缓存,那么端口2在此情况下最多还能额外占用20KBytes的Port Headroom缓存空间。

   在端口层面:

a323d9823da3c1a499537901adde5625.jpeg

1. Port Guaranteed

Queue Guaranteed的缓存资源遵循独占分配原则,专用于分配给队列级缓存,确保队列资源隔离。这种设计防止队列间缓存共享,确保每个队列拥有独立的缓存空间,最大化资源利用效率。

2. Port Service

Port Service缓存主要用于分配给队列级的Queue Service缓存。所有队列级的Queue Service缓存共享同一端口级别的Port Service缓存资源。

举例来说,假设端口级别的Port Service缓存容量为80KBytes,队列1和队列2的Queue Service缓存需求量都设置为60KBytes。在某一时间节点,若队列1中的数据包已占用50KBytes的Queue Service缓存空间,那么队列2此时最多还可使用30KBytes的Queue Service缓存空间。

3. Port Headroom

Port Headroom缓存区段用于分配给队列级的Queue Headroom缓存,所有队列级的Queue Headroom缓存均共享同一端口级别的Port Headroom缓存资源。假如端口级别的Port Headroom缓存总量为40KBytes,而队列1和队列2的Queue Headroom缓存需求均为30KBytes。在某一具体时刻,若队列1中的数据包已占据了25KBytes的Queue Headroom缓存空间,那么队列2此时最多还能再分配到15KBytes的Queue Headroom缓存空间。

   在队列层级:

35c4258aa2211e21b1e04010257ed670.jpeg

1. Queue Guaranteed

Queue Guaranteed 确保队列的基本报文传输能力,即使未获取队列服务缓存,也能转发一定量的报文。它包括两个阶段:
- 入队列 Queue Guaranteed:报文进入队列前
- 出队列 Queue Guaranteed:报文离开队列前

2. Queue Service

Queue Service 应对流量激增,为队列提供临时缓存空间。包含入队列和出队列,当待转发报文大小小于缓存剩余空间时,才能加入并转发。否则,报文将被丢弃。

3. Queue Headroom

Queue Headroom是网络中宝贵的缓冲空间,它确保即使在暂停帧通知期间,新报文也能被安全接收,避免因缓存不足而丢失数据。它充当保护屏障,防止报文丢失,从而确保网络通信的顺畅和稳定。

避免报文丢失风险:
芯片内部的单一服务池可能导致无损报文丢失,当有损报文流量激增时,它们会占用服务池。
为了防止这种情况,应规划无损报文队列的头部空间,以确保充足的存储空间应对流量激增。

优化缓存分配机制,释放设备转发潜力。先进的无损队列优化功能合理分配缓存空间,确保在不同流量负载下无损队列始终保持零丢包高效转发。

通过缓存空间优化,可划分芯片共享缓存,创建无损和有损队列。无损队列的缓存大小基于Headroom Pool和无损队列自身的Service Pool,确保不丢包转发。自动或手动配置Service Pool和Headroom Pool,优化无损队列的性能。

e964167df62276a326489eeb50c26ebb.jpeg


 

-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-


http://www.ppmy.cn/embedded/7791.html

相关文章

设计模式-观察者模式

概述 观察者设计模式(Observer Design Pattern)是一种行为型设计模式,它主要用于解决对象间的一对多依赖问题,当一个对象的状态发生改变时,所有依赖于它的对象都能得到通知并自动更新状态,无需显式调用。该…

一个java项目各个层级的介绍

在springbootmybatisplus的项目中(使用lombok) entity类可以使用Data注解来加入get、set等方法 这里值得注意的是该类实现了Serializable类,目的是实现序列化,在 Java 和其他语言进行通信的时候,需要将对象转化成一种通…

Redis入门

1.初始Redis Redis是一种键值型的NoSql数据库,这里有两个关键字: 键值型 NoSql 其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值、甚至json:…

Node.js

js生成参数,提高定制化能力,需要用到nodejs.更快执行js代码的环境. Node.js和浏览器差距. Node.js可以做到本地文件读写,HTTP网络请求及响应,socket监听请求等;cmd mac系统的功能. 在Node.js上尽量不要执行未知代码. Node.js主要提高性能. 在…

JavaEE 初阶篇-深入了解 I/O 流(FileInputStream 与 FileOutputStream 、Reader 与 Writer)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 I/O 流概述 2.0 文件字节输入流(FileInputStream) 2.1 创建 FileInputStream 对象 2.2 读取数据 2.3 关闭流 3.0 文件字节输出流(FileOutputStream) 3.1 创建 Fi…

浏览器生成Excel文件 ,Apache POI 使用方法及示例

Apache POI 是 Apache 软件基金会的开源项目&#xff0c;它提供 API 用于读取和写入 Microsoft Office 格式的文件&#xff0c;如 Excel、Word 等。在 Spring Boot 应用中&#xff0c;结合使用 Apache POI 可以方便地处理 Excel 文件 一 引入依赖&#xff1a; <dependency&…

【数据结构】顺序表:与时俱进的结构解析与创新应用

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 数据结构与算法 先赞后看&#xff0c;已成习惯 创作不易&#xff0c;多多支持&#xff01; 目录 一、数据结构的概念 二、顺序表&#xff08;Sequence List&#xff09; 2.1 线性表的概念以及结构 2.2 顺序表分类 …

计算机网络----第十三天

DNS协议和文件传输协议 DNS&#xff1a; 含义&#xff1a;用于域名和IP地址的互相解析 DNS域名&#xff1a; 背景&#xff1a;通过IP地址访问目标主机&#xff0c;不便于记忆 域名的树形层次化结构&#xff1a; ①根域 ②顶级域&#xff1a;主机所处的国家/区域&#xf…