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


    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


     

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

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

  • 相关阅读:
    Sentinel-dashboard-X 实现Sentinel高可用及规则数据持久化
    leetcode:1929. 数组串联(python3解法)
    设计模式-装饰器模式
    vue中的ref属性
    vue项目中如何使用websocket(步骤)
    架构思考 (五)
    【目标检测】Generalized Focal Loss V2
    08-流媒体-RTMP拉流
    网红探店一般怎么收费?找网红探店该如何筛选博主
    Git进阶命令-revert
  • 原文地址:https://blog.csdn.net/njbaige/article/details/138043430