首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    目前学术界最先进的数据包调度器介绍!

    随着链路速度的提高和CPU速度缩放速度的降低,软件中的数据包调度会导致较低的精度和较高的CPU利用率。通过将数据包调度卸载到诸如NIC之类的硬件,可以潜在地克服这些缺点。然而,为了保持软件分组调度器的灵活性,硬件中的分组调度器必须是可编程的,同时还必须快速且可扩展。硬件中最先进的数据包调度程序要么折衷了可扩展性(Push-In-First-Out(PIFO)),要么表达了各种数据包调度算法的能力(先进先出(FIFO)))。此外,即使是像PIFO这样的通用调度原语,其表达能力也不足以表达分组调度算法的某些关键类别。因此,在本文中,我们提出了PIFO原语的泛化,称为Push-In-Extract-Out(PIEO),它与PIFO一样,维护元素的有序列表,但与PIFO不同,PIFO只允许从列表的开头出队,PIEO通过在出队时支持基于断言的可编程过滤,允许从列表中的任意位置出队。接下来,我们介绍PIEO调度程序的快速且可扩展的硬件设计,并在FPGA上进行原型设计。总体而言,PIEO调度程序比PIFO具有更高的表达力和30倍以上的可伸缩性。

    02

    DAOS的事件队列(EventQueue)与事件(Event)和任务调度引擎(TSE)及源码分析

    DAOS API 函数可以在阻塞或非阻塞模式下使用。 这是通过传递给每个 API 调用的指向 DAOS 事件的指针来确定的:如果 NULL 表示操作将被阻塞。 操作完成后会返回。 所有失败情况的错误码都将通过API函数本身的返回码返回。 如果使用有效的事件,则该操作将以非阻塞模式运行,并在内部调度程序中调度该操作以及将 RPC 提交到底层堆栈后立即返回。 如果调度成功,则操作的返回值为success,但并不表示实际操作成功。 返回时可以捕获的错误要么是无效参数,要么是调度问题。 当事件完成时,操作的实际返回代码将在事件错误代码 (event.ev_error) 中提供。 必须首先通过单独的 API 调用创建要使用的有效事件。 为了允许用户一次跟踪多个事件,可以将事件创建为事件队列的一部分,事件队列基本上是可以一起进行和轮询的事件的集合。 事件队列还在内部为所有 DAOS 任务创建一个单独的任务调度程序以及一个新的网络上下文。 在某些网络提供商上,网络上下文创建是一项昂贵的操作,因此用户应尝试限制在 DAOS 之上的应用程序或 IO 中间件库中创建的事件队列的数量。 或者,可以在没有事件队列的情况下创建事件,并单独跟踪。 在这种情况下,对于阻塞操作,将使用内部全局任务调度程序和网络上下文来代替为事件队列创建的独立任务调度程序和网络上下文。 事件完成后,它可以重新用于另一个 DAOS API 调用,以最大限度地减少 DAOS 库内事件创建和分配的需要

    00

    业界第一个真正意义上开源100 Gbps NIC Corundum介绍

    来源:内容由「网络交换FPGA」编译自「FCCM2020」,谢谢。FCCM2020在5月4日开始线上举行,对外免费。我们有幸聆听了其中一个有关100G开源NIC的介绍,我们对该文章进行了翻译,并对其中的开源代码进行了分析并恢复出基于VCU118的工程,通过实际测试感受到了第一款真正意义上的100G开源NIC的强大(很多100G的开源都是基于HLS等非HDL语言,尽管可以转化成HDL,但电路架构参考意义已经不大)。开源Verilog代码中每个.v文件都是所有的组合和时序分别用一个always模块描述,代码中高位宽分段处理方式,多级流水的架构等很多地方都是非常值得借鉴和学习的地方。我们认为,github是一个宝库。我觉得现在的研究生培养质量的评价其实就可以看开源项目的参与程度,这完全能反应出一个学生的自学能力和独立研究的能力。而一个科研工作者,尤其是搞工程或应用基础研究的,如果没有做出来一两个星数100以上的开源项目,就不算成功。欢迎感兴趣的同学一起交流讨论。以下先附上本次会议的视频

    05
    领券