CN111711579A - 用于预测性调度和速率限制的系统和方法 - Google Patents

用于预测性调度和速率限制的系统和方法 Download PDF

Info

Publication number
CN111711579A
CN111711579A CN202010098455.7A CN202010098455A CN111711579A CN 111711579 A CN111711579 A CN 111711579A CN 202010098455 A CN202010098455 A CN 202010098455A CN 111711579 A CN111711579 A CN 111711579A
Authority
CN
China
Prior art keywords
queue
rate limiter
packet
level
scheduling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010098455.7A
Other languages
English (en)
Inventor
K.S.达诺亚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN111711579A publication Critical patent/CN111711579A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/58Changing or combining different scheduling modes, e.g. multimode scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2425Traffic characterised by specific attributes, e.g. priority or QoS for supporting services specification, e.g. SLA
    • H04L47/2433Allocation of priorities to traffic types
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • H04L47/528Minimum bandwidth guarantee
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/623Weighted service order
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/628Queue scheduling characterised by scheduling criteria for service slots or service orders based on packet size, e.g. shortest packet first
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6295Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/80Actions related to the user profile or the type of traffic
    • H04L47/805QOS or priority aware
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/39Credit based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开的主题是“用于预测性调度和速率限制的系统和方法”。公开了用于通过以下操作来增强网络性能的系统和方法:使用改进的业务控制(例如,速率限制和/或调度)技术来控制由服务质量(QoS)引擎调度的到队列的分组(例如,数据分组)业务的速率以用于读取和传输。特别地,QoS引擎在耦合到QoS引擎的直接存储器存取(DMA)引擎已知实际分组大小之前使用估计的分组大小来调度分组。QoS引擎随后补偿估计的分组大小和实际分组大小之间的差异(例如,当DMA引擎已经接收到调度的分组的实际分组大小时)。使用利用估计分组大小的这些改进的业务控制技术可减少和/或消除由于确定实际分组大小而引入的时延。

Description

用于预测性调度和速率限制的系统和方法
技术领域
本公开一般涉及网络接口装置,诸如服务质量(QoS)引擎、直接存储器存取(DMA)引擎和/或网络接口控制器(NIC)。更特别地,本公开涉及改善DMA引擎和NIC之间的业务控制操作的QoS引擎。
背景技术
本章节旨在向读者介绍可与下文描述和/或要求权利的本公开的各个方面有关的领域的各个方面。相信本讨论有助于为读者提供背景信息,以促进更好理解本公开的各个方面。因此,应了解,这些陈述要按此角度来阅读,并且不作为现有技术的承认。
服务质量(QoS)引擎可包括调度器和/或速率限制器以控制从主机队列发送的分组业务的速率来履行QoS或服务等级协定(SLA)。特别地,直接存储器存取(DMA)引擎可参考QoS引擎和/或响应于QoS引擎进行操作以分派带宽,或以其它方式调节来自队列的分组的传输,以满足SLA和/或QoS条件的要求。调度器和/或速率限制器可使得能够不同地对待不同的业务类别、业务流等,使得为每个业务类别或业务流分配特定量的带宽或特定数量的分组以用于相应的传输。然而,调度器和/或速率限制器可基于已知的(例如,实际的)分组大小来执行这些操作,这可导致由DMA引擎进行的延迟的和/或低效的业务处理(例如,由于与确定实际分组大小相关联的时延)。
附图说明
当阅读以下详细描述并参考附图时,可更好理解本公开的各个方面,附图中:
图1是示出根据本公开的实施例的包括直接存储器存取(DMA)引擎和服务质量(QoS)引擎的系统的框图;
图2是根据本公开的实施例的包括速率限制器和调度器的图1的QoS引擎的框图;
图3是示出根据本公开的实施例的对图2的调度器的等级应用正校正因子的图;
图4是示出根据本公开的实施例的对图2的调度器的等级应用负校正因子的图;
图5是示出根据本公开的实施例的由于应用负校正因子而导致的图2的调度器的负等级的图;
图6是示出根据本公开的实施例的对图2的速率限制器的等级应用正校正因子的图;
图7是示出根据本公开的实施例的对图2的速率限制器的等级应用负校正因子的图;
图8是示出根据本公开的实施例的由于应用负校正因子而导致的图2的速率限制器的负等级的图;
图9是示出根据本公开的实施例的用于使用预测性调度技术来调整图2的速率限制器的等级的方法的流程图;以及
图10是示出根据本公开的实施例的用于使用预测性调度技术来调整图2的调度器的等级的方法的流程图。
具体实施方式
下面描述一个或多个具体实施例。为了提供这些实施例的简明描述,本说明书中并非描述实际实现的所有特征。应意识到,在开发任何此类实际实现中,如同在任何工程或设计项目中一样,必须做出众多实现特定的决策以实现开发人员的特定目标,诸如符合可从一个实现到另一个实现不同的系统相关和业务相关的约束。此外,应意识到,此类开发工作可能是复杂且耗时的,但是对于那些得益于本公开的本领域技术人员而言将不过是常规的设计、制造和生产任务。
本实施例涉及用于通过以下操作来增强网络性能的系统和方法:使用改进的业务控制(例如,速率限制和/或调度)技术来控制由服务质量(QoS)引擎调度的到队列的分组(例如,数据分组)业务的速率以用于读取和传输。特别地,本发明实施例涉及至少部分地基于估计的分组大小来控制分组业务的高性能网络接口装置,诸如QoS引擎。例如,在直接存储器存取(DMA)引擎和/或QoS引擎已知实际分组大小之前,可使用估计的分组大小来调度分组。可在以后的时间(例如,当QoS引擎已经接收到调度的分组的实际分组大小时)补偿估计的分组大小和实际分组大小之间的差异。使用利用估计分组大小的这些改进的业务控制技术可减少和/或消除由于确定实际分组大小而引入的时延。
在第一实施例中,一种方法包括:响应于调度要从队列读取的数据分组,至少部分地基于估计的分组大小来减小等级,其中该等级跟踪从主机系统读取的数据的带宽;接收数据分组的实际分组大小;至少部分地基于数据分组的实际分组大小和估计的分组大小之间的差来确定校正因子;以及通过对等级应用校正因子来调整等级。
在第二实施例中,一种装置包括:配置成作为调度操作的一部分将要被读取的分组排队的队列;配置成实施装置的带宽要求的速率限制器,其中速率限制器与指示对装置的当前带宽分配的速率限制器等级相关联;以及服务质量(QoS)引擎,所述服务质量(QoS)引擎配置成至少部分地基于估计的分组大小和速率限制器等级来执行调度操作,其中QoS引擎配置成在没有数据分组的实际分组大小的知识的情况下经由调度操作来调度数据分组。
在第三实施例中,一种有形的非暂时性机器可读介质包括机器可读指令以使得处理器:接收要调度队列的分组的通知;至少部分地基于估计的分组大小来减小等级,其中等级配置成跟踪分配用于分组的调度的资源量;接收分组的实际分组大小;至少部分地基于实际分组大小和估计的分组大小之间的差来确定校正因子;以及通过应用校正因子来调整等级。
在一些实施例中,QoS引擎可参考一个或多个速率限制器和/或调度器的信用等级或等级来确定何时以及按什么模式从要被读取的一个或多个队列调度分组,同时遵守任何带宽使用约束(例如,从服务质量(QoS)度量或服务等级协定(SLA)建立的约束)。本文中所使用的术语“等级”或“信用等级”是指速率限制器和/或调度器可用来确定何时允许调度数据的分组的度量。特别地,每个分组可对应于属于群组(例如,一个或多个队列的群组)的队列,并且可分别为每个队列或群组指派优先级或带宽分配。每个速率限制器可对应于特定群组,并且因此可对于也对应于该特定群组的每个队列实施最大带宽分配。速率限制器通过限制该群组可发送数据的带宽速率(例如,以位每秒(b/s)(诸如1千兆位每秒(Gb/s))、分组每秒或任何合理的单位或单位的组合为单位)来实施最大带宽分配。在每个调度循环(例如,周期性持续时间)期间,每个速率限制器可基于分配给它的对应群组的带宽量(例如,1Gb)将它的对应的速率限制器等级递增。调度器可管理多个队列的相应队列信用等级,并且因此可通过跨多个队列分派带宽来实施最小带宽分配。特别地,调度器可基于通过该队列的调度权重相对于其它队列的任何额外调度权重而分配的带宽量来将队列信用等级递增。当从队列调度分组时,调度器可将对应于队列的队列信用等级递减分组中的数据量(例如,100字节)。当队列的速率限制器等级和队列的队列信用等级均高于单独的等级的相应阈值(诸如高于零值,或者不为零或负)时,QoS引擎命令DMA引擎从队列调度分组。但是,如果对应的速率限制器等级和/或队列信用等级中的任一者低于或等于阈值(例如,等级等于零或为负),那么QoS引擎不允许DMA引擎调度队列的分组。
信用等级和/或等级(例如,队列信用等级和/或速率限制器等级)可表示为诸如整数、小数、浮点数或任何其它合适的格式的值。在一些实施例中,可使用数据结构来表示等级,诸如以“信用桶(credit bucket)”或“信用计(credit meter)”的形式。在此类情况下,如果速率限制器的信用桶不缺乏信用或大于阈值等级,诸如当对应等级等于零或为负值时,可允许调度分组。等级可对应于调度的粒度,诸如群组(例如,业务群组)、业务类别、业务流等,并且可对应于一个或多个客户。如果基于估计的或预期的分组大小和/或在没有分组大小的先验知识的情况下递增和/或递减这些等级,那么DMA引擎和/或QoS引擎的调度操作可改善并变得更加高效。例如,当与耦合到等待调度分组直到分组的实际大小可用的QoS引擎的DMA引擎相比时,耦合到使用预测性调度(例如,在调度时当分组的实际大小原本不可用时可涉及分组大小估计而不是分组的实际大小的预测性调度操作)的QoS引擎的DMA引擎可相对更加高效和/或经历减少量的时延。
考虑到前述内容,图1是示出包括芯片上系统(SoC)12的系统10的框图。注意,系统10和SoC 12只是在调度分组时使用服务质量(QoS)考虑的合适系统的一个示例,并且可在本文中没有明确讨论的各种应用(诸如不被包含在单个集成电路上或包括不设置在单个集成电路上的组件的系统)中使用QoS考虑。可以用本文中没有明确讨论的方式来应用从该当前公开的应用获得的益处和改善。
SoC 12可包括任何合适的处理电路,并且可以是使用调度技术来管理不同的QoS考虑的现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)等。SoC 12可包括与网络接口控制器(NIC)16和/或直接存储器存取(DMA)引擎18通信的处理器14。处理器14和DMA引擎18可至少部分地基于从配置电路17接收和/或存储在配置电路17中的信号和/或配置数据文件(例如,在一些实施例中为配置位流)来进行操作。NIC 16可使得SoC 12能够在系统10的物理层和数据层之间传送数据,并且因而可使得能够与存储器20和/或耦合的网络通信。存储器20可包括有形的非暂时性机器可读介质,诸如易失性存储器(例如,随机存取存储器(RAM))和/或非易失性存储器(例如,只读存储器(ROM))。存储器20可存储可用于各种目的的各种信息,并且在一些实施例中,可包括用于长期存储和/或短期存储的存储器。DMA引擎18可以是基于硬件和/或基于软件的接口连接引擎。NIC 16还可经由合适的有线和/或无线耦合来实现系统10和网络连接(例如,以太网、Wi-Fi)之间的耦合。服务质量(QoS)引擎19可实现用来管理不同的QoS考虑的调度技术,诸如从主机装置和/或主机逻辑的一个或多个队列中调度由主机装置和/或主机逻辑生成的分组。
例如,系统10还可包括主机装置或逻辑(它可包括电路、软件或两者)(例如,主机22)和一个或多个虚拟机24(VM)。虚拟机24可模拟计算机机器和/或运行计算机应用(例如,软件)。主机22可诸如通过管理对在存储器20中或经由由NIC 16提供的网络连接可访问的信息的请求来管理虚拟机24的仿真。这样,主机22可使用多个虚拟机24来管理多个用户。SoC 12的NIC 16和/或其它电路可以是经由计算机总线接口25(例如,个人计算机(PC)总线)可由主机22访问和/或可与主机22通信的。例如,计算机总线接口25可以是用来在通信上将SoC 12耦合到外部电路的外围组件互连高速(PCIe)接口或其它合适的接口连接电路。虚拟机24可由供应商不可知的接口支持,以使得在虚拟机24上运行的软件能够访问诸如NIC 16、存储器20或者SoC 12或系统10内的其它组件的装置。
主机22可包括分配给传送环和/或接收环的存储器。NIC 16可使用传送环和/或接收环来处理分组(例如,数据分组)。软件和/或硬件可代表SoC 12或其它处理电路生成事务请求。传送环和/或接收环可以是使用单个固定大小的缓冲器的数据结构,就好像它是诸如圆形环那样端到端连接的。DMA引擎18、QoS引擎19和/或NIC 16可至少部分地基于存储在传送环和/或接收环内(诸如描述符内)的与分组有关的信息(例如,长度、分组结束指示符等)来调度和/或处置主机22的分组。
有时,在系统10的操作期间,诸如在虚拟机24中的一个或多个上的仿真、SoC 12的操作、经由NIC 16在系统10和网络之间的通信等的期间,可通过主机22的一部分生成分组,并且因此要调度该分组以便传输到网络和/或存储器20。QoS引擎19可命令DMA引擎18关于如何调度主机22的分组(例如,顺序)。例如,QoS引擎19可包括调度器26和一个或多个速率限制器28,所述调度器26和一个或多个速率限制器28管理在从主机22的一个或多个队列30调度分组时使用的等级。注意,在一些实施例中,DMA引擎18可包括QoS引擎19的一部分或全部,尽管本文中将它们描述为单独的组件。
注意,尽管将本公开描述为涉及QoS引擎19命令DMA引擎18关于何时以及按什么顺序从主机22调度分组,但是本文中描述的技术可应用于其它系统,诸如用硬件实现以便从和/或向主机处理器系统(例如,服务器、计算系统、电子工作站)读取和/或写入分组的其它DMA引擎。例如,将主机接口卸载(offload)到硬件中的计算系统可使用本文中描述的技术来改善客户虚拟机和诸如网络卡和/或存储介质的其它装置(例如,为在客户虚拟机上运行的软件提供供应商不可知的接口以使得能够访问其它装置的virtio系统)之间的通信(例如,通过减少与确定实际分组大小相关联的时延)。
在系统10的操作过程期间,QoS引擎19(经由对DMA引擎18的指令)可基于分组的实际大小调度分组。基于分组的实际大小的调度可适合于在主机22和SoC 12之间使用合适的通信协议的系统,该协议在过程的早期通告分组大小。然而,基于分组的实际大小的调度可能会增加不希望的时延,并且可能无法以适合于其它通信协议(诸如virtio)的方式扩展(scale)。特别地,QoS引擎19可在调度时、但是只通过读取存储分组大小的描述符来确定每个分组的分组大小,如果在能够读取描述符之前要求另一个处理步骤(例如,读取描述符的索引以去往并提取),那么这可花费过多的时间量。即,QoS引擎19可读取保留关于分组存储在哪里和/或分组的大小的信息的系统10上的描述符。这些描述符可存储在表、环等中。通常,系统10可包括许多不同的描述符表。例如,系统10可包括各种虚拟机24、容器、不同的应用等,它们可共享对公共资源(诸如存储器20和/或通过NIC 16耦合的网络)的访问。可由单独的表、圆形环或其它合适的数据存储服务于这些来源(例如,虚拟机24、容器、应用等)中的每个来源。QoS引擎19直到读取存储在合适数据存储中的描述符之前可能不知道分组的分组大小。在一些实施例中,DMA引擎18、SoC 12的其它电路和/或QoS引擎19、DMA引擎18和SoC 12的其它电路的组合确定分组的分组大小。但是,为了便于描述,本文中将QoS引擎19描述为确定分组的分组大小。
为了减少这些时延和可扩展性问题,可通过QoS引擎19在读取描述符之前调度分组并且因此在没有分组大小的先验知识的情况下改善业务控制操作(例如,调度操作)。当QoS引擎19在没有实际分组大小的知识的情况下调度要被发送的队列30的分组时,QoS引擎19可基于估计的分组大小来减小队列30的队列信用等级和/或队列30所属于的群组(或多个群组)(例如,包括该队列30的队列30的群组)的速率限制器等级。QoS引擎19可随后基于指示实际分组大小和估计的分组大小之间的差(例如,差异)的校正因子来调整队列信用等级,以补偿用于传送实际分组的实际带宽量。QoS引擎19可在在分组的调度期间或调度之后通过参考描述符来确定实际分组大小,然而,QoS引擎19现在在QoS引擎19和/或DMA引擎18的调度操作正在进行中时自由地执行该参考,因此减少额外时延。以此方式,系统10的任何合适的处理电路可确定从队列30调度的数据分组的实际分组大小,并且可使用实际分组大小来确定要传送给QoS引擎19以便应用于队列信用等级和/或速率限制器等级的校正因子。尽管本文中描述为QoS引擎调整队列信用等级和/或速率限制器等级,但是应了解,在一些实施例中,DMA引擎18或任何合适的处理电路可直接调整队列信用等级和/或速率限制器等级。
以与调度来自队列30的分组时的队列信用等级类似的方式,QoS引擎19可基于估计的分组大小来减小群组(例如,队列30群组,共享速率限制器并至少部分地基于共享的速率限制器等级来调度分组的队列30的群组)的速率限制器等级。QoS引擎19可随后基于指示实际分组大小和估计的分组大小之间的差(例如,差异)的校正因子来调整速率限制器等级,以补偿用于传送实际分组的实际带宽量。
为了有助于详细阐述,图2是与QoS引擎19相关联的调度器26和/或速率限制器28的示例布置的框图。每个相应队列30可包括要由主机22发送给SoC 12的排队的分组36。每个队列30可对应于一个或多个速率限制器28,并且调度器26可调度要从队列30发送的分组。主机22可包含任何合适数量的队列30。速率限制器28可促进以使得不超过队列30的规定带宽(例如,实施最大带宽分配)的方式调度要从它的对应队列30发送(例如,读取)的分组。调度器26可管理跨不同队列30的带宽的分配(例如,管理总带宽的一部分)(例如,实施最小带宽分配)。
在描绘的示例中,QoS引擎19包括队列30和速率限制器28的各种组合。应了解,可使用队列30和速率限制器28的任何合理的组合。在一些实施例中,一个速率限制器(例如,28B)对应于一个队列30(例如,30D)。在额外的或备选的实施例中,多个速率限制器(例如,28C、28D)对应于一个队列30(例如,30E),以实施对应于该队列的多个条件。例如,第一速率限制器28C可实施队列30E的带宽分配,而第二速率限制器28D可实施队列30E的分组分配。然而,在一些实施例中,使一个速率限制器(例如,28A)对应于多个队列30(例如,30A、30B、30C)也可以是合适的,诸如当多个队列30对应于多个用户时。在这些实施例中,一个速率限制器可定义共享的度量,通过该共享的度量来控制从多个队列30调度分组(例如,如果多个用户各自已经同意相同的带宽分配、相同的分组分配、相同的QoS度量、相同的SLA等,并且因此可经由共享的速率限制器28D来被管理,那么情况可如此)。在这些描绘的示例中的每个示例中,队列30共享调度器26(它定义分配给队列30中的每个队列的总带宽的比例)。调度器26通过改变为队列30分别指派的队列信用等级来跟踪分配给队列30中的每个队列的相应带宽。
为了详细阐述,QoS引擎19可经由速率限制器等级38(例如,38A、38B、38C、38D)和队列信用等级40来跟踪带宽分配。等级38、40中的每个等级可在系统10中被实现为存储在存储器20中和/或在QoS引擎19本地内的数值或计数器,或者用来分别跟踪与调度器26和/或速率限制器28相关联的等级的任何其它适合的指示符。可使用主机22的每个队列30来对要由DMA引擎18读取的传出分组41进行排队。QoS引擎19可经由速率限制器28确定何时可从队列30读取对应群组的分组(例如,何时带宽可用于特定群组),同时QoS引擎19可经由调度器26确定允许由DMA引擎18从哪个群组读取(例如,基于特定队列30的分别定义的调度权重)。
QoS引擎19可经由速率限制器28基于对应群组的带宽配置来调整指派给每个群组的速率限制器等级38。特别地,速率限制器28可将指派给每个群组的速率限制器等级38增加预定的带宽量。预定的带宽量可基于在一定持续时间内要分配给该群组的最大带宽。例如,可为指派给速率限制器28A的群组指派等于10字节每秒的预定带宽量,并且可为指派给速率限制器28B的群组指派100字节每秒。在该示例中,因此速率限制器28每秒向速率限制器等级38A增加10字节,并且每秒向速率限制器等级38B增加100字节。因此,速率限制器等级38可独立于由DMA引擎18和/或QoS引擎19进行的分组调度而递增,并且而是可对应于系统时钟或其它合适定义的时间周期。
QoS引擎19可允许DMA引擎18调度队列30的分组。出于本公开的目的,等级(例如,速率限制器等级38、队列信用等级40)可足以调度分组,至少足以调度分组的估计的分组大小,并且因此大于阈值量(例如,零、正量)。
此外,QoS引擎19可允许DMA引擎18至少部分地基于调度权重42(例如,权重参数、调度权重参数)来调度分组。可为每个队列30定义调度权重42,并且调度权重42可定义相同群组的队列30之间的相对地允许的带宽分配。QoS引擎19可经由调度器26以各种方式对此进行管理,包括通过对队列信用等级40分配信用(例如,以维持期望的调度比)、通过从相应队列30调度分组(例如,允许在队列30之间相对地调度特定比例的分组)等。以此方式,调度器26可为队列30(例如,具有为1的调度权重的30A)和向第二队列(例如,具有为10的调度权重的30B)分配带宽,使得在调度操作对于队列30发生之后,调度队列30的一个分组,同时调度队列30的十个分组。此外,在一些实施例中,调度器26可基于队列30的调度权重和可用的总带宽为队列30分配带宽。例如,调度器26可具有带有为2的调度权重的第一队列30(例如,30A)和带有为1的调度权重的第二队列30(例如,30B),使得调度权重总共为3,并且因此为第一队列30分配第一队列30的总可用带宽的2/3(例如,66.7%),而为第二队列30分配1/3(例如,33.3%)。
在一些实施例中,可基于服务等级协定(SLA)和/或QoS承诺为队列30或队列30的群组指派权重。以此方式,对应于(例如,第一群组的)第一队列30的第一客户或用户可已经为第一QoS度量付费并因此将为该第一客户或用户提供第一QoS度量,而将为对应于(例如,第二群组的)第二队列30的第二客户或用户提供第二QoS度量。因此,QoS引擎19可使用速率限制器28进行操作,以履行SLA,来提供特定于客户的QoS度量。QoS引擎19可使用(例如在每个客户的基础上定义的)队列30的群组来为每个客户管理不同的QoS等级。注意,如果多个客户已经各自分别承诺共享相同的QoS,那么这些客户可共享速率限制器28。在两个客户已经各自分别对不同的QoS做出承诺的情况下,可将客户指派给相应群组,每个群组具有至少一个相应速率限制器28。例如,如果第一客户同意10字节/秒的带宽并且第二客户同意100字节/秒的带宽,那么可将第一客户的队列30A指派给第一群组的速率限制器28A(所述速率限制器28A在其它客户队列30B、30C之间共享),而可将第二客户指派给第二群组的速率限制器28B(所述速率限制器28B可以或者可以不在其它客户队列30之间共享)。
可在每个调度循环调整速率限制器等级38,其中调度循环可对应于充分考虑了由队列30使用的总带宽的系统10的时间周期。因此,在调度循环完成的期间和/或调度循环完成时,可调整速率限制器等级38,以使得能够通过DMA引擎18调度额外的分组。如在本文中将意识到的,可基于包括在调整时的总的确定的带宽、预定的调整值等的各种因素来调整速率限制器等级38和/或队列信用等级40。
QoS引擎19可经由调度器26和/或速率限制器28至少部分地基于调度的分组的估计的分组大小从相应速率限制器等级38和/或队列信用等级40中扣除信用。在之后的时间(例如,在分组的调度之后),QoS引擎19可确定在分组的实际大小和在分组调度中用于调整速率限制器等级38和/或队列信用等级40中的等级的估计的分组大小之间存在差异。响应于差异的确定,QoS引擎19可确定用来调整速率限制器等级38和/或队列信用等级40的校正因子,以补偿分组大小之间的差异。
考虑到前述内容,图3是示出根据本公开的实施例的对队列信用等级40应用正校正因子的图。如上所述,QoS引擎19可在分组的调度期间或在调度之后通过参考描述符来确定实际分组大小。QoS引擎19可随后基于校正因子43调整队列信用等级40,以补偿实际分组大小和估计的分组大小之间的差。
如图3中所示,在第一时间(例如,t0),某个队列30的队列信用等级40可之前已经具有由调度器26添加的100字节的信用。因此,在第一时间,队列信用等级40可等于100字节的总信用。
调度群组的分组可导致从该群组的队列信用等级40中扣除。如所示的,在第二时间(例如,t1),QoS引擎19可调度要从队列30读取的分组。然而,QoS引擎19(例如,以及因此调度器26)可不知道要调度的分组的大小。因此,调度器26可基于分组估计大小从队列信用等级40中扣除信用。在该示例中,分组估计大小等于50字节,但是应了解,可基于系统10使用任何合适的分组估计大小(诸如1位-1000千字节(kB)、1字节-100千字节、10字节-64千字节等)。通过信用扣除46来表示等于分组估计大小的信用的扣除。此外,在一些实施例中,分组估计大小可在系统10的操作期间基于操作、随时间应用于队列信用等级40的平均校正因子、带宽分配、随时间应用的校正因子之间的标准偏差等而改变。注意,虚线表示100字节的原始队列信用等级40,并且实线表示50字节的随后的队列信用等级40。
在第三时间(例如,t2),可调度和/或读取分组(例如,传出分组41)。此外,在这时,QoS引擎19可知道分组的实际大小,并且因此可对队列信用等级40应用校正因子43,以针对分组估计大小和实际分组大小之间的任何差异进行调整。在该示例中,QoS引擎19对队列信用等级40应用等于10字节的校正因子43。即,QoS引擎19确定该示例的实际分组大小是40字节(例如,在发送分组之后通过读取存储实际分组大小的描述符),并通过对队列信用等级40增加10字节来补偿分组估计大小和实际分组大小之间的该差异(例如,50字节的估计的分组大小减去10字节的校正因子43等于40字节的实际分组大小)。这是正校正因子43的示例,因为校正因子43的值大于零值。注意,虚线表示50字节的原始等级,并且实线表示60字节的最终等级。该示例是正校正因子43的示例,因为QoS引擎19对队列信用等级40增加信用以针对分组估计大小和实际分组大小之间的差进行调整。
图4是示出对队列信用等级40应用负校正因子43的图。与图3类似,某个群组的队列信用等级40可之前已经具有由调度器26添加的100字节的信用(例如,在t0)。在该示例中,分组估计大小等于40字节。通过信用扣除46来表示等于分组估计大小的信用的扣除。因此,同样与图3类似,调度器26可响应于在第二时间(例如,t1)调度分组而基于分组估计大小从队列信用等级40中扣除信用。注意,虚线表示100字节的原始等级,并且实线表示60字节的随后等级。
在第三时间(例如,t2),分组可以是传出的和/或已经被发送。在这时,QoS引擎19可知道分组的实际大小(例如,在发送分组之后通过读取存储实际分组大小的描述符),并且因此可对队列信用等级40应用校正因子43。在该示例中,QoS引擎19应用等于-10字节的校正因子43。即,QoS引擎19确定该示例的实际分组大小是50字节,并且QoS引擎19通过从队列信用等级40扣除10字节来补偿分组估计大小和实际分组大小之间的该差异(例如,40字节的分组估计大小减去-10字节等于50字节的实际分组大小)。这是负校正因子43的示例,因为校正因子43的值小于零值。注意,虚线表示60字节的原始等级,并且实线表示50字节的最终等级。这是负校正因子43的示例,因为QoS引擎19从队列信用等级40中去除信用,以针对分组估计大小和实际分组大小之间的差进行调整。
图5是示出由于应用负校正因子而导致的负队列信用等级40的图。与图4中应用的负校正因子43类似,在该示例中,在第三时间(例如,t2)应用的校正因子43针对分组估计大小和实际分组大小之间的差进行调整。但是,与第一负校正因子43示例不同,该示例中使用的校正因子43是足够大的负数以使得将队列信用等级40的等级调整为负值(例如,等级= -10字节)。即,在该示例中,QoS引擎19确定实际分组大小是100字节,并且QoS引擎19通过从队列信用等级40中扣除60字节来补偿分组估计大小(例如,50字节)和实际分组大小(例如,110字节)之间的该差异(例如,等于50字节的分组估计大小减去-60字节的校正因子等于110字节的实际分组大小)。
当队列信用等级40为负或为零时,QoS引擎19可不命令DMA引擎18调度与该队列信用等级40对应的队列的任何分组。随着时间推移,可将信用添加回到队列信用等级40,并且队列信用等级40可随时间而增加来再次变为正。当队列信用等级40的信用为正和/或足够大以使得能够调度分组(例如,具有至少与分组估计大小一样大和/或大于阈值量的信用量)时,QoS引擎19可允许调度与队列信用等级40的队列对应的分组。因此,队列信用等级40具有负值的能力使得能够应用负校正因子43来补偿分组估计大小和实际分组大小之间的差异,其中实际分组大小大于分组估计大小,并且负校正因子43在量值上大于队列信用等级40(例如,在被应用时导致队列信用等级40变为负)。在没有这种能力的情况下,QoS引擎19可能不能补偿此类差异。
如图5中所示,在第三时间(例如,t2),队列信用等级40等于负等级。在第三时间(例如,t2)和第四时间(例如,t3)之间的时间期间,调度器26可对队列信用等级40添加经编程的(programmed)信用量(在该情况下,为由信用47表示的100字节)。这表现为信用从-10字节变成正90字节。等级现在可大于阈值(例如,大于零、大于或等于分组估计大小),并且响应于等级大于阈值,可根据队列信用等级40调度分组。然而,如果没有要调度分组,那么可继续由调度器26增加队列信用等级40(例如,诸如直到达到最大值和/或直到对于对应队列30要调度分组为止)。
图6-8讨论关于速率限制器28的调度操作。图6是示出根据本公开的实施例的对速率限制器等级38应用正校正因子43的示例的图。与队列信用等级40类似,可在分组调度的时间之后调整速率限制器等级38,以补偿估计的分组大小和实际分组大小之间的任何差异。
在上述第一时间(例如,t0)之前,QoS引擎19经由速率限制器28根据速率限制器28的配置将速率限制器等级38递增了两次。例如,在t-2和t-1之间,将速率限制器等级38增加了量48。量48可至少部分地基于对于速率限制器28的对应群组的带宽分配。以此方式,速率限制器28在每个调度循环开始时将速率限制器等级38调整相同量,其中调度循环可对应于充分考虑了由队列30的群组使用的总带宽的时间周期。例如,并且如所描绘的,速率限制器28可基于指派给与速率限制器28对应的群组的等于100字节每秒的带宽分配来在每秒(例如,每个调度循环)对速率限制器等级38添加100字节的信用。
速率限制器28可在DMA引擎18和/或QoS引擎19从队列30调度一个或多个分组的同时继续对速率限制器等级38添加信用。在第一时间和第二时间(例如,t1)之间,DMA引擎18从与速率限制器28对应的队列30调度分组。因此,在第二时间,速率限制器28响应于从它的队列30调度分组而减小速率限制器等级38。速率限制器28可将速率限制器等级38减小等于分组估计大小的量(例如,50字节)。
在第三时间(例如,t2),分组可以是传出的和/或已经被调度。此外,在第二时间和第三时间之间,DMA引擎18和/或QoS引擎19可知道分组的实际大小,并且因此QoS引擎19可对速率限制器等级38应用校正因子43,以针对分组估计大小和实际分组大小之间的任何差异进行调整。在该示例中,QoS引擎19对速率限制器等级38应用等于10字节的校正因子43。即,QoS引擎19确定该示例的实际分组大小是40字节,并且QoS引擎19通过增加10字节来补偿分组估计大小和实际分组大小之间的该差异(例如,50字节的估计的分组大小减去10字节的校正因子43等于40字节的实际分组大小)。
图7是示出根据本公开的实施例的对速率限制器等级38应用负校正因子43的示例的图。与图5类似,速率限制器等级38可之前已经具有基于对于它的对应群组的带宽分配来添加的特定量的信用。因此,在第一时间(例如,t0),速率限制器等级38可等于200字节,这可对应于特定量的调度循环(例如,2个或如由相应带宽分配定义的任何合适的数量)。
在该示例中,分组估计大小等于50字节。通过信用扣除46来表示等于分组估计大小的信用的扣除。因此,同样与图3类似,QoS引擎19可在第二时间(例如,t1)经由速率限制器28基于分组估计大小从速率限制器等级38中扣除信用。注意,虚线表示200字节的原始等级,并且实线表示150字节的随后等级。
在第三时间(例如,t2),分组可以是传出的和/或已经被发送。在第二时间和第三时间之间,QoS引擎19可确定分组的实际大小,并且因此QoS引擎19可对速率限制器等级38应用校正因子43。在该示例中,QoS引擎19应用等于-50字节的校正因子43。即,QoS引擎19确定该示例的实际分组大小是100字节,并且QoS引擎19通过扣除50字节来补偿分组估计大小和实际分组大小之间的该差异(例如,50字节的分组估计大小减去-50字节等于100字节的实际分组大小)。注意,虚线表示150字节的原始等级,并且实线表示100字节的最终等级。这是负校正因子43的示例,因为QoS引擎19从速率限制器等级38中去除信用,以针对分组估计大小和实际分组大小之间的差进行调整。
图8是示出根据本公开的实施例由于应用负校正因子而导致的负速率限制器等级38的图。与图7中应用的负校正因子43类似,在该示例中,在第三时间(例如,t2)或在此之前应用的校正因子43针对分组估计大小和实际分组大小之间的差进行调整。在该示例中使用的校正因子43足够负而导致将速率限制器等级38的等级调整为负值(例如,等级= -50字节)。在该示例中,QoS引擎19确定实际分组大小是250字节,并且通过从速率限制器等级38中扣除200字节来补偿分组估计大小和实际分组大小之间的该差异(例如,等于50字节的分组估计大小减去-200字节的校正因子等于250字节的实际分组大小)。
当速率限制器等级38为负或为零时,速率限制器28可根据它的配置继续对速率限制器等级38添加信用。但是,速率限制器等级38在以负值开始时比在以小于阈值但大于负值的值开始时需要更长的时间来达到阈值。以此方式,速率限制器28能够通过延迟进一步调度直到将信用提供回到速率限制器等级38为止来补偿它的队列30的任何潜在的过度调度。以此方式,随着时间的推移,速率限制器28可基于带宽分配和调度循环将信用添加回到速率限制器等级38,并且因此速率限制器等级38可随时间增加而变为正。当速率限制器等级38的等级为正和/或足够大以允许调度分组(例如,具有至少与阈值一样大的信用量)时,QoS引擎19可命令DMA引擎18恢复对应于速率限制器等级38的调度操作。
如图8中所示,在第三时间(例如,t2),速率限制器等级38等于负等级。与队列信用等级40类似,速率限制器等级38具有负值的能力使得能够应用负校正因子43来补偿分组估计大小和实际分组大小之间的差异,其中实际分组大小大于分组估计大小,并且负校正因子43在量值上大于速率限制器等级38(例如,在被应用时导致速率限制器等级38变为负)。在没有这种能力的情况下,速率限制器28可能不能补偿此类差异。在第三时间(例如,t2)和第四时间(例如,t3)之间的时间期间,速率限制器28可至少部分地基于对于对应群组的带宽分配添加经编程的信用量(在这种情况下,为对应于量48的100字节)。这表现为信用从-50字节变成正50字节。由于等级现在足够正(例如,大于或等于分组估计大小),所以速率限制器28可继续进行从速率限制器等级38中扣除信用,并从对应队列30调度分组。
本文中按照添加到用于每个相应组件的队列信用等级40和/或速率限制器等级38的经编程的信用量来讨论了图3-8。根据经编程的量和/或经编程的模式,调度器26可对队列信用等级40添加信用和/或速率限制器28可对速率限制器等级38添加信用。然而,基于实施例,诸如在调度循环中间和/或结束时,调度器26可遵循不同的模式对队列信用等级40添加信用和/或速率限制器28可遵循不同的模式对速率限制器等级38添加信用。此外,在一些实施例中,以与和速率限制器28对应的速率限制器等级38和/或队列信用等级40不同的模式,调度器26可对队列信用等级40添加信用和/或速率限制器28可对与调度器26对应的速率限制器等级38添加信用。另外地或备选地,如上所述,队列信用等级40和/或速率限制器等级38在第一时间的初始信用等级可等于调度循环相当的信用(scheduling-cycle-worth-of-credit),然而应了解,初始信用等级可以是任何合适的值。例如,初始信用等级可等于零个调度循环相当的信用、一个调度循环相当的信用或更多。
为了帮助详细阐述,图9是示出根据本公开的实施例的使用上文描述的预测性调度技术来调整速率限制器等级38的方法60的流程图。在一些实施例中,方法60可至少部分地通过使用处理电路(诸如处理器14、主机22的处理电路和/或DMA引擎18)执行存储在有形的非暂时性计算机可读介质(诸如存储器20)中的指令来实现。但是,如本文中所描述,将方法60描述为由QoS引擎19执行。
在调度操作过程中,在框62,QoS引擎19(例如,QoS引擎19经由速率限制器28)可基于速率限制器28和/或它的对应群组的配置来增加速率限制器等级38。为了便于本文中的讨论,应了解,QoS引擎19对一个速率限制器28执行任何操作,QoS引擎19可分别对QoS引擎19的每个速率限制器28执行相同操作。速率限制器28的配置可与要对速率限制器等级38添加的信用或带宽的量和/或添加发生的频率相关联。要添加的信用或带宽的量和/或添加的频率可至少部分地基于QoS约束或指导原则、队列30的特性(例如,队列30的配置或深度)等。速率限制器28可具有不同的配置,并且因此可通过相应的信用或带宽值来被调整。以此方式,可至少部分地基于相应的速率限制器28配置将第一速率限制器28增加与第二速率限制器28不同的信用或带宽的量。
在框64,QoS引擎19可接收要由DMA引擎18调度分组的通知。当通过接收通知而启动调度操作时,在框66,QoS引擎19可经由速率限制器28确定对应的速率限制器等级38是否具有大于或等于阈值信用量的信用。QoS引擎19可执行该确定,使得不对具有零、负或不足的信用的群组调度分组,或使得不对导致零、负或不足的信用的群组调度分组。足够的信用的示例可以是等于代表用于经由队列30调度分组和/或传送调度的分组的资源量的分组估计大小的等级。
响应于QoS引擎19确定速率限制器等级38小于阈值,QoS引擎19可向DMA引擎18指示终止或停止与该分组相关联的调度操作,并且在恢复对该分组的调度操作之前等待至少足够的时间,以便对速率限制器等级38添加合适的信用量。尽管在系统10的实际实现中可以有许多合适的方法来这样做,但是在方法60中,这通过QoS引擎19重复操作来表示。例如,QoS引擎19可继续在框62增加速率限制器等级38,并在框64再次接收先前延迟了调度循环的分组的通知。在此时间点,QoS引擎19可再次确定速率限制器等级38的信用是否大于或等于阈值。
最终,QoS引擎19可确定速率限制器等级38大于或等于阈值,并且可在框70继续进行经由向DMA引擎18的指示来允许调度与速率限制器等级38的队列30对应的分组。一旦确定调度分组,QoS引擎19便可在框72经由速率限制器28至少部分地基于分组估计大小来减小速率限制器等级38中的信用。如上所述,分组估计大小可表示在由QoS引擎19做出实际分组大小的确定之前用于修改等级38、40的预定值。分组估计大小表示用于传送分组(例如,调度的分组)的估计带宽。以此方式,QoS引擎19可跟踪对每个群组的资源分配。
在框74,QoS引擎19接收分组的实际大小(例如,诸如从DMA引擎18接收作为反馈信号的分组大小)。如上所述,QoS引擎19可从任何合适的数据存储中取回分组的实际大小,所述数据存储可以或者可以不基于数据源或客户来被单独管理。例如,QoS引擎19可参考存储在一个或多个表、一个或多个圆形环或者一个或多个其它合适的数据存储中的描述符来确定分组的实际大小。
在确定和/或接收分组的实际大小之后,在框76,QoS引擎19可确定校正因子(例如,诸如校正因子43)。校正因子可用于调整先前在框72使用分组估计大小递减的速率限制器等级38,如图6-8中所示。校正因子的值可至少部分地基于实际分组大小和在框72使用的分组估计大小之间的差。以此方式,校正因子的值可以是代表要对速率限制器等级38应用的分组的调整量的值(例如,正数、负数或零值)。
使用校正因子,在框78,QoS引擎19可经由速率限制器28通过对速率限制器等级38应用校正因子来调整速率限制器等级38。应意识到,等级38、40被描述为在调度操作期间上升和下降的等级,并且可通过跟踪代表等级的数值来实现。以此方式,QoS引擎19可采用反映确定的校正因子的方式递增、递减或调整速率限制器等级38的数值。例如,QoS引擎19可通过对该数值添加10字节(或按比例代表10字节的值)而对等级应用等于10字节的校正因子。因此,应用于等级的校正因子可以是这样的值(或代表这样的值),该值相对于其它等级示出相对于其它群组的其它等级对于调整后的等级的群组可用的带宽量。
注意,QoS引擎19可重复在框62的方法60,同时至少执行框74、框76和/或框78的操作。还注意,在一些情况下,QoS引擎19可没有在框64接收到通知。在这些情况下,QoS引擎19可而是在每个调度循环重复在框62的操作,以继续修改速率限制器等级38,直到要调度分组为止。
图10是示出根据本公开的实施例的使用上文描述的预测性调度技术来调整队列信用等级40的方法90的流程图。在一些实施例中,方法90可至少部分地通过使用处理电路(诸如处理器14、主机22的处理电路和/或DMA引擎18)执行存储在有形的非暂时性计算机可读介质(诸如存储器20)中的指令来实现。但是,如本文中所描述,将方法90描述为由QoS引擎19执行。
在框92,QoS引擎19可接收分组可用于被调度的通知。当通过接收通知而启动调度操作时,在框94,QoS引擎19可经由调度器26基于调度权重和/或当前带宽来增加队列信用等级40。响应于接收到要调度分组的通知等,可根据预定的时间周期(例如,以特定间隔)调整队列信用等级40。因此,可基于经由DMA引擎18和/或NIC 16可访问的当前带宽来增加队列信用等级40。此外,可至少部分地基于与调度器26相关联的调度权重、耦合到系统10的网络的当前带宽或任何其它合适的因素来对相应的队列信用等级40分派信用。队列信用等级40的调度权重为每个群组定义对队列信用等级40的成比例的带宽分配。以此方式,例如,在信用分配时,具有第二群组的带宽的四倍带宽的第一群组可使它的队列信用等级40被提供有分派给第二群组的信用的四倍的信用。要添加的信用或带宽的量和/或添加的频率可至少部分地基于QoS约束、队列30的特性等。队列信用等级40可具有不同的配置,并且因此可通过相应的信用或带宽值来被调整。
在框96,QoS引擎19可确定对应的队列信用等级40是否具有大于或等于阈值信用量的信用。QoS引擎19可执行该确定,使得不对具有零、负或不足的信用的群组调度分组,或使得不对导致零、负或不足的信用的群组调度分组。足够的信用的示例可以是等于代表用于经由队列30调度分组和/或传送调度的分组的资源量的分组估计大小的等级。
响应于QoS引擎19确定对应的队列信用等级40小于阈值,QoS引擎19可命令DMA引擎18延迟与该分组相关联的调度操作,并在调度分组之前等待将合适量的信用分派给队列信用等级40。尽管这在QoS引擎19的实际实现中可以用许多合适的方式表现,但是在方法90中,这通过QoS引擎19继续在框92经由调度器26增加队列信用等级40并在框94再次接收要调度延迟的分组的通知来表示。在此时间点,QoS引擎19可再次确定对应的队列信用等级40是否具有至少等于分组估计大小的信用。
最终,QoS引擎19可确定对应的队列信用等级40大于或等于阈值。响应于该确定,在框100,QoS引擎19可允许分组的调度(例如,经由对DMA引擎18的指示)。在分组的调度之后或在分组的调度期间,在框102,QoS引擎19可至少部分地基于分组估计大小来调整对应的队列信用等级40。与框72类似,QoS引擎19可经由对队列信用等级40的调整来跟踪对每个队列30的资源分配。在确定分组的实际分组大小之前,QoS引擎19可递减对应的队列信用等级40。
在框104,QoS引擎19可确定和/或接收分组的实际分组大小。如上所述,QoS引擎19可从任何合适的数据存储取回实际分组大小,所述任何合适的数据可以或者可以不基于数据来源或客户来被单独管理,和/或QoS引擎19可从DMA引擎18(例如,作为来自DMA引擎18的反馈信号)接收实际分组大小(或校正因子)。例如,QoS引擎19可参考存储在一个或多个表、一个或多个圆形环或者一个或多个其它合适的数据存储中的描述符来确定实际分组大小。
在确定实际分组大小之后,在框106,QoS引擎19可确定校正因子(例如,诸如校正因子43)。校正因子可用于对分组调整对应的队列信用等级40。如上所述,校正因子的值可至少部分地基于实际分组大小和分组估计大小之间的差,并在框108(类似于框78),由QoS引擎19应用校正因子,以对于分组调整对应的队列信用等级40,如图3-5中所示。以此方式,在框108应用的校正因子的值可以是代表要对队列信用等级40应用的分组的调整量的值(例如,正数、负数或零值)。该校正因子可以是在方法60的框78应用的相同校正因子。此外,可经由QoS引擎19的大体上相同的确定过程在大体上相同的时间确定方法90的校正因子和方法60的校正因子。以此方式,对于相同或类似的分组调度操作,QoS引擎19可不重复在框106的确定。此外,注意,方法90的框100、框104和框106可至少部分地基于与方法60的框70、框74和框76类似和/或共享的QoS引擎19的控制操作。
注意,QoS引擎19可重复在框92的方法90,同时至少执行框102、框104、框106和/或框108的操作。还注意,在一些情况下,QoS引擎19可没有在框94接收到通知。在这些情况下,QoS引擎19可而是在每个调度循环重复在框92的操作,并继续修改队列信用等级40,直到要调度分组为止。此外,QoS引擎19可基于速率限制器等级38和队列信用等级40两者来允许或拒绝调度。以此方式,在任一方法中,QoS引擎19可在框66和/或在框96确定对应的队列信用等级40和对应的速率限制器等级38是否均大于或等于分别定义的阈值。如果是,那么QoS引擎19允许分组的调度(例如,在框70和/或框100),但如果否,那么QoS引擎19拒绝分组的调度(例如,继续进行至框62和/或继续进行至框92)。
在一些实施例中,对队列信用等级40的调整可导致对速率限制器等级38执行调整。例如,队列信用等级40可以是对应于正速率限制器等级38的负等级。因此,可将队列信用等级40增加调度循环相当的信用,并且速率限制器等级38仍要被递减该调度循环相当的信用(例如,等级扣除等于等级的增加)以保持操作平衡,即使在允许队列30在其调度权重分配之外过度调度(如经由根据队列信用等级40的操作来控制)的情况下也是如此。对速率限制器等级38的这种扣除可导致负等级。
此外,在一些实施例中,当QoS引擎19在框108应用校正因子时,可根本没有响应于校正因子调整对应的速率限制器等级38(例如,速率限制器等级38可没有被递减)。其原因可能是,在过去,之前基于分组估计大小递减了速率限制器等级38,该分组估计大小结果是不充分的估计(例如,太大)。允许速率限制器等级38响应于不准确的分组估计大小而被选择性地修改,使得能够以使得补偿不准确的分组估计大小的方式调度分组。
如上所述,在一些实施例中,分组估计大小可在系统10的操作期间变化。QoS引擎19可在调度操作期间基于预测的调度操作、应用于等级38、40的平均校正因子、带宽分配、随时间应用的校正因子之间的标准偏差等来动态地改变分组估计大小。以此方式,QoS引擎19可基于先前调度的分组的实际分组大小的历史记录来调整响应于调度分组而扣除多少信用。例如,当观察到与应用的校正因子相关联的一个或多个模式时,QoS引擎19可随时间减小分组估计大小,从而使得QoS引擎19能够使用反映随时间调度的分组的分组估计大小。注意,可通过系统10的任何合适的处理电路来执行调整分组估计大小(或确定对分组估计大小进行的调整)。
考虑到前述内容,系统10可以是数据处理系统或者可以是数据处理系统的组件,其可从本文中描述的预测性调度技术的应用中受益。例如,SoC 12可以是现场可编程门阵列,并且可以是数据处理系统的组件。数据处理系统可包括主机处理器(例如,类似于处理器14)、存储器和/或存储电路(例如,类似于存储器20)和网络接口(例如,类似于NIC 16和/或PCIe接口)。数据处理系统可包括更多或更少的组件(例如,电子显示器、用户接口结构、专用集成电路(ASIC))。主机处理器可包括可管理对数据处理系统的数据处理请求(例如,以执行机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排序、生物信息学、网络安全模式标识、空间导航等)的任何合适的处理器,诸如Intel® Xeon®处理器或精简指令处理器(例如,精简指令集计算机(RISC)、高级RISC机器(ARM)处理器)。存储器和/或存储电路可包括随机存取存储器(RAM)、只读存储器(ROM)、一个或多个硬盘驱动器、闪速存储器等。存储器和/或存储电路可对于SoC 12被认为是外部存储器,并且可保留要由数据处理系统处理的数据。在一些情况下,存储器和/或存储电路也可存储用于将作为可编程逻辑器件的SoC 12编程的配置程序(例如,位流)。网络接口可使得数据处理系统能够与其它电子装置通信。数据处理系统可包括若干个不同的封装,或者可被包含在单个封装衬底上的单个封装内。
在一个示例中,数据处理系统可以是处理各种不同请求的数据中心的一部分。例如,数据处理系统可经由网络和/或计算机总线接口25接收数据处理请求,以执行机器学习、视频处理、语音识别、图像识别、数据压缩、数据库搜索排序、生物信息学、网络安全模式标识、空间导航或某个其它专门化的任务。主机处理器可使得用与所请求的任务有关的特定加速度器来将作为可编程逻辑器件的SoC 12的可编程逻辑组构(programmable logicfabric)编程。例如,主机处理器可命令将存储在存储器/存储电路上或在作为可编程逻辑器件的SoC 12的扇区对准的存储器中缓存的配置数据(位流)编程到作为可编程逻辑器件的SoC 12的可编程逻辑组构中。配置数据(位流)可表示与所请求的任务有关的特定加速度器功能的电路设计。由于可编程逻辑组构的高密度、大量的扇区对准的存储器与可编程逻辑组构的接近性或这里描述的作为可编程逻辑器件的SoC 12的其它特征,SoC 12可快速地辅助数据处理系统执行所请求的任务。实际上,在一个示例中,加速器可通过使用扇区对准的存储器在加速器中快速地访问和处理大量数据而在少于几毫秒内(例如,在微秒级上)辅助语音识别任务。
本公开的方法和装置可并入到任何合适的电路中。例如,方法和装置可并入到诸如微处理器或其它集成电路的众多类型的装置中。示例性的集成电路包括一个或多个可编程逻辑阵列(PAL)、现场可编程逻辑阵列(FPLA)、电可编程逻辑器件(EPLD)、电可擦除可编程逻辑器件(EEPLD)、逻辑单元阵列(LCA)、现场可编程门阵列(FPGA)、专用标准产品(ASSP)、专用集成电路(ASIC)和微处理器,仅举几个例子。此外,本公开的方法和装置可与多种调度技术配合使用。例如,当使用诸如先进先出(FIFO)、基于优先级、轮循、最短剩余时间优先、多等级队列调度等的调度规则时,可使用预测性调度技术。
此外,尽管已经按特定顺序描述了方法操作,但是应了解,可在描述的操作之间执行其它操作,可对描述的操作进行调整以使得它们在略微不同的时间发生,或者描述的操作可分布在系统中,只要根据需要执行叠加操作的处理,该系统就可允许处理操作在与处理相关联的各种间隔发生。
因此,本公开的技术效果包括对用于计算装置的带宽管理技术的改善,所述计算装置诸如诸如芯片上系统(SoC)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)或者其它合适的计算和/或处理装置。技术包括经由利用分组大小估计来执行业务控制操作(例如,调度操作)的直接存储器存取(DMA)引擎和/或服务质量(QoS)引擎来调度分组。这些技术还包括在调度操作和/或业务控制操作期间使用校正因子来调整QoS引擎所参考的等级(例如,信用等级、信用的等级),以补偿和/或校正分组大小估计和调度的分组的实际大小之间的任何差异。QoS引擎可在分组的调度之后或分组的调度期间的时间应用校正因子,以减少当基于要调度的分组的实际大小来管理调度操作和/或业务控制操作时通常会经历的时延和/或低效率。
虽然本公开中阐述的实施例可易于有各种修改和备选形式,附图中已经作为示例示出了并且在本文中已经详细描述了特定实施例。然而,应了解,本公开不旨在局限于所公开的特定形式。本公开将覆盖落在如由以下随附权利要求定义的本公开的精神和范围内的所有修改、等效物和备选物。
示例1提供了一种方法,包括:
响应于调度要从队列读取的数据分组,至少部分地基于估计的分组大小来减小等级,其中所述等级跟踪从所述队列读取的数据的带宽;
接收所述数据分组的实际分组大小;
至少部分地基于所述数据分组的所述实际分组大小和所述估计的分组大小之间的差来确定校正因子;以及
通过对所述等级应用所述校正因子来调整所述等级。
提供了示例2:如示例1所述的方法,其中主机装置配置成经由一个或多个用户生成要从所述队列读取的所述数据分组。
提供了示例3:如示例1所述的方法,其中在接收所述数据分组的所述实际分组大小之前,所述数据分组的所述调度发生。
提供了示例4:如示例1所述的方法,其中所述等级对应于速率限制器,其中所述速率限制器配置成实施最大带宽分配。
提供了示例5:如示例4所述的方法,包括至少部分地基于所述速率限制器的配置来增加所述等级。
提供了示例6:如示例1所述的方法,其中所述等级对应于调度器,其中所述调度器配置成在所述队列和额外队列之间实施最小带宽分配。
提供了示例7:如示例6所述的方法,包括至少部分地基于配置成指示所述队列的相对调度权重的权重参数来增加所述等级。
示例8提供了一种装置,包括:
队列,所述队列配置成作为调度操作的一部分将分组排队;
速率限制器,所述速率限制器配置成实施所述装置的带宽要求,其中所述速率限制器与指示对所述装置的当前带宽分配的速率限制器等级相关联;以及
服务质量(QoS)引擎,所述服务质量(QoS)引擎配置成至少部分地基于估计的分组大小和所述速率限制器等级来执行所述调度操作,其中所述QoS引擎配置成在没有数据分组的实际分组大小的知识的情况下经由所述调度操作来调度所述数据分组。
提供了示例9:如示例8所述的装置,其中所述QoS引擎配置成通过以下步骤来执行所述调度操作:
响应于调度所述数据分组,至少部分地基于所述估计的分组大小来减小所述速率限制器等级;
确定所述数据分组的所述实际分组大小;
至少部分地基于所述数据分组的所述实际分组大小和所述估计的分组大小之间的差来确定校正因子;以及
通过对所述速率限制器等级应用所述校正因子来调整所述速率限制器等级。
提供了示例10:如示例8所述的装置,包括配置成实施业务群组的带宽分配的调度器,其中所述业务群组与一个或多个队列相关联。
提供了示例11:如示例10所述的装置,其中所述调度器对应于队列信用等级,并且其中所述QoS引擎配置成在执行所述调度操作时参考所述队列信用等级和所述速率限制器等级两者。
提供了示例12:如示例8所述的装置,其中所述调度操作包括至少部分地基于定义在每个调度循环用来递增所述速率限制器等级的恒定信用量的所述速率限制器的配置来管理所述速率限制器等级。
提供了示例13:如示例12所述的装置,包括与队列相关联的调度器,所述队列与所述速率限制器相关联,其中所述调度器配置成响应于调度所述数据分组而减小所述队列的队列信用等级,并且其中所述速率限制器配置成响应于调度所述数据分组而减小所述速率限制器等级。
提供了示例14:如示例13所述的装置,其中所述调度器配置成至少部分地基于在所述队列和至少一个额外队列之间指派的相对调度权重来调整所述队列信用等级。
示例15提供了一种有形的非暂时性机器可读介质,包括机器可读指令以使得处理器:
接收要调度队列的分组的通知;
至少部分地基于估计的分组大小来减小等级,其中所述等级配置成跟踪分配用于所述分组的调度的资源量;
接收所述分组的实际分组大小;
至少部分地基于所述实际分组大小和所述估计的分组大小之间的差来确定校正因子;以及
通过应用所述校正因子来调整所述等级。
提供了示例16:如示例15所述的有形的非暂时性机器可读介质,其中在调度所述分组之后接收所述实际分组大小。
提供了示例17:如示例15所述的有形的非暂时性机器可读介质,其中所述等级与速率限制器相关联,并且其中所述速率限制器配置成限制允许包括所述队列的队列的群组发送数据的带宽速率。
提供了示例18:如示例17所述的有形的非暂时性机器可读介质,其中所述校正因子配置成使得所述等级被减小至负等级。
提供了示例19:如示例15所述的有形的非暂时性机器可读介质,其中所述等级与调度器相关联,其中所述调度器配置成跨多个队列分派带宽。
提供了示例20:如示例19所述的有形的非暂时性机器可读介质,其中所述校正因子配置成使得所述等级被减小至负等级。

Claims (20)

1.一种用于操作网络接口装置的方法,包括:
响应于调度要从队列读取的数据分组,至少部分地基于估计的分组大小来减小等级,其中所述等级跟踪从所述队列读取的数据的带宽;
接收所述数据分组的实际分组大小;
至少部分地基于所述数据分组的所述实际分组大小和所述估计的分组大小之间的差来确定校正因子;以及
通过对所述等级应用所述校正因子来调整所述等级。
2.如权利要求1所述的方法,其中主机装置配置成经由一个或多个用户生成要从所述队列读取的所述数据分组。
3.如权利要求1所述的方法,其中在接收所述数据分组的所述实际分组大小之前,所述数据分组的所述调度发生。
4.如权利要求1所述的方法,其中所述等级对应于速率限制器,其中所述速率限制器配置成实施最大带宽分配。
5.如权利要求4所述的方法,包括至少部分地基于所述速率限制器的配置来增加所述等级。
6.如权利要求1所述的方法,其中所述等级对应于调度器,其中所述调度器配置成在所述队列和额外队列之间实施最小带宽分配。
7.如权利要求6所述的方法,包括至少部分地基于配置成指示所述队列的相对调度权重的权重参数来增加所述等级。
8.一种网络接口装置,包括:
队列,所述队列配置成作为调度操作的一部分将分组排队;
速率限制器,所述速率限制器配置成实施所述装置的带宽要求,其中所述速率限制器与指示对所述装置的当前带宽分配的速率限制器等级相关联;以及
服务质量(QoS)引擎,所述服务质量(QoS)引擎配置成至少部分地基于估计的分组大小和所述速率限制器等级来执行所述调度操作,其中所述QoS引擎配置成在没有数据分组的实际分组大小的知识的情况下经由所述调度操作来调度所述数据分组。
9.如权利要求8所述的装置,其中所述QoS引擎配置成通过以下步骤来执行所述调度操作:
响应于调度所述数据分组,至少部分地基于所述估计的分组大小来减小所述速率限制器等级;
确定所述数据分组的所述实际分组大小;
至少部分地基于所述数据分组的所述实际分组大小和所述估计的分组大小之间的差来确定校正因子;以及
通过对所述速率限制器等级应用所述校正因子来调整所述速率限制器等级。
10.如权利要求8所述的装置,包括配置成实施业务群组的带宽分配的调度器,其中所述业务群组与一个或多个队列相关联。
11.如权利要求10所述的装置,其中所述调度器对应于队列信用等级,并且其中所述QoS引擎配置成在执行所述调度操作时参考所述队列信用等级和所述速率限制器等级两者。
12.如权利要求8所述的装置,其中所述调度操作包括至少部分地基于定义在每个调度循环用来递增所述速率限制器等级的恒定信用量的所述速率限制器的配置来管理所述速率限制器等级。
13.如权利要求12所述的装置,包括与队列相关联的调度器,所述队列与所述速率限制器相关联,其中所述调度器配置成响应于调度所述数据分组而减小所述队列的队列信用等级,并且其中所述速率限制器配置成响应于调度所述数据分组而减小所述速率限制器等级。
14.如权利要求13所述的装置,其中所述调度器配置成至少部分地基于在所述队列和至少一个额外队列之间指派的相对调度权重来调整所述队列信用等级。
15.一种有形的非暂时性机器可读介质,包括机器可读指令以使得处理器:
接收要调度队列的分组的通知;
至少部分地基于估计的分组大小来减小等级,其中所述等级配置成跟踪分配用于所述分组的调度的资源量;
接收所述分组的实际分组大小;
至少部分地基于所述实际分组大小和所述估计的分组大小之间的差来确定校正因子;以及
通过应用所述校正因子来调整所述等级。
16.如权利要求15所述的有形的非暂时性机器可读介质,其中在调度所述分组之后接收所述实际分组大小。
17.如权利要求15所述的有形的非暂时性机器可读介质,其中所述等级与速率限制器相关联,并且其中所述速率限制器配置成限制允许包括所述队列的队列的群组发送数据的带宽速率。
18.如权利要求17所述的有形的非暂时性机器可读介质,其中所述校正因子配置成使得所述等级被减小至负等级。
19.如权利要求15所述的有形的非暂时性机器可读介质,其中所述等级与调度器相关联,其中所述调度器配置成跨多个队列分派带宽。
20.如权利要求19所述的有形的非暂时性机器可读介质,其中所述校正因子配置成使得所述等级被减小至负等级。
CN202010098455.7A 2019-03-18 2020-02-18 用于预测性调度和速率限制的系统和方法 Pending CN111711579A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/357,019 US10834009B2 (en) 2019-03-18 2019-03-18 Systems and methods for predictive scheduling and rate limiting
US16/357019 2019-03-18

Publications (1)

Publication Number Publication Date
CN111711579A true CN111711579A (zh) 2020-09-25

Family

ID=67139936

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010098455.7A Pending CN111711579A (zh) 2019-03-18 2020-02-18 用于预测性调度和速率限制的系统和方法

Country Status (2)

Country Link
US (2) US10834009B2 (zh)
CN (1) CN111711579A (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7206920B2 (ja) * 2019-01-08 2023-01-18 富士フイルムビジネスイノベーション株式会社 情報処理装置及びプログラム
US11704058B2 (en) 2020-07-28 2023-07-18 Samsung Electronics Co., Ltd. Systems and methods for resource-based scheduling of commands
US11386026B1 (en) * 2021-02-09 2022-07-12 Microsoft Technology Licensing, Llc Shell PCIe bridge and shared-link-interface services in a PCIe system
US11620159B2 (en) 2021-04-23 2023-04-04 Samsung Electronics Co., Ltd. Systems and methods for I/O command scheduling based on multiple resource parameters
WO2024020884A1 (en) * 2022-07-27 2024-02-01 Huawei Technologies Co., Ltd. An edge device for a distributed traffic engeneering system with quality of service control of a plurality of flow groups

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3434642B2 (ja) * 1995-07-07 2003-08-11 株式会社東芝 パケットスケジューリング装置
US6859438B2 (en) * 1998-02-03 2005-02-22 Extreme Networks, Inc. Policy based quality of service
US6229795B1 (en) * 1999-01-13 2001-05-08 Qualcomm Incorporated System for allocating resources in a communication system
US6608839B1 (en) * 1999-01-25 2003-08-19 Paradyne Corporation System and method for indicating an accurate committed information rate
US20040073694A1 (en) * 2000-11-30 2004-04-15 Michael Frank Network resource allocation and monitoring system
US6950396B2 (en) * 2001-03-20 2005-09-27 Seabridge Ltd. Traffic control method and system
US7457297B2 (en) * 2001-11-16 2008-11-25 Enterasys Networks, Inc. Methods and apparatus for differentiated services over a packet-based network
US7257083B2 (en) * 2003-06-25 2007-08-14 Motorola, Inc. Method and apparatus for policy-based dynamic preemptive scheduling of data transmissions
US7418000B2 (en) * 2004-06-03 2008-08-26 Corrigent Systems Ltd. Automated weight calculation for packet networks
US7564869B2 (en) * 2004-10-22 2009-07-21 Cisco Technology, Inc. Fibre channel over ethernet
EP1842332B1 (en) * 2004-12-23 2009-02-18 Corvil Limited A method and apparatus for calculating bandwidth requirements
US7697436B2 (en) * 2006-02-15 2010-04-13 Fujitsu Limited Bandwidth allocation
US7983299B1 (en) * 2006-05-15 2011-07-19 Juniper Networks, Inc. Weight-based bandwidth allocation for network traffic
US20080063004A1 (en) * 2006-09-13 2008-03-13 International Business Machines Corporation Buffer allocation method for multi-class traffic with dynamic spare buffering
US7920592B2 (en) * 2006-12-20 2011-04-05 Lantiq Deutschland Gmbh Method of bandwidth control and bandwidth control device
KR100918295B1 (ko) * 2007-10-24 2009-09-18 한국전자통신연구원 비디오 트래픽 예측방법 및 그 장치
US8045563B2 (en) * 2007-12-27 2011-10-25 Cellco Partnership Dynamically adjusted credit based round robin scheduler
US8223641B2 (en) * 2008-07-28 2012-07-17 Cellco Partnership Dynamic setting of optimal buffer sizes in IP networks
US8116311B1 (en) * 2008-11-13 2012-02-14 Qlogic, Corporation Method and system for tag arbitration in switches
US8665724B2 (en) * 2009-06-12 2014-03-04 Cygnus Broadband, Inc. Systems and methods for prioritizing and scheduling packets in a communication network
US20120327778A1 (en) * 2011-06-22 2012-12-27 Cygnus Broadband, Inc. Systems and methods for prioritizing and scheduling packets in a communication network
US8213453B1 (en) * 2009-08-07 2012-07-03 Juniper Networks, Inc. Quality of service (QoS) configuration for network devices with multiple queues
US8462815B2 (en) * 2010-09-02 2013-06-11 Juniper Networks, Inc. Accurate measurement of packet size in cut-through mode
US8547984B2 (en) * 2011-09-16 2013-10-01 Oracle International Corporation Weighted differential scheduler
US8923270B2 (en) * 2011-10-04 2014-12-30 The Chinese University Of Hong Kong Method for link buffer size and queue length estimation for bandwidth-varying mobile data networks
CN103379038B (zh) * 2012-04-12 2018-08-03 南京中兴新软件有限责任公司 一种流量调度的装置及方法
WO2016117319A1 (ja) * 2015-01-20 2016-07-28 日本電気株式会社 可用帯域計測システム、可用帯域計測方法、送信側装置、受信側装置、送信側装置制御プログラムが記憶された記憶媒体および受信側装置制御プログラムが記憶された記憶媒体
US10216533B2 (en) 2015-10-01 2019-02-26 Altera Corporation Efficient virtual I/O address translation
JPWO2017169948A1 (ja) * 2016-03-30 2019-02-07 日本電気株式会社 通信システム、可用帯域推定装置、可用帯域推定方法および可用帯域推定プログラムが記憶された記録媒体
US20180176144A1 (en) * 2016-12-19 2018-06-21 Futurewei Technologies, Inc. APPARATUS FOR SELF-REGULATER (SR) LAST-IN, FIRST-OUT (LIFO) SCHEDULING IN SOFTWARE DEFINED NETWORKS (SNDs) WITH HYBRID TRAFFIC
US20180191628A1 (en) * 2016-12-31 2018-07-05 Alcatel-Lucent Usa Inc. Scheduling granularity based on application type
US10834003B2 (en) * 2018-01-17 2020-11-10 Druva Inc. Systems and methods for adaptive bandwidth throttling

Also Published As

Publication number Publication date
US10834009B2 (en) 2020-11-10
US20210083986A1 (en) 2021-03-18
US11431646B2 (en) 2022-08-30
US20190215277A1 (en) 2019-07-11

Similar Documents

Publication Publication Date Title
US11431646B2 (en) Systems and methods for predictive scheduling and rate limiting
US10630601B2 (en) Controlling fair bandwidth allocation efficiently
US11601512B2 (en) System and method for throttling service requests having non-uniform workloads
US10178053B2 (en) Programmable broadband gateway hierarchical output queueing
US9419904B2 (en) System and method for throttling service requests using work-based tokens
US10162684B2 (en) CPU resource management in computer cluster
WO2018175559A1 (en) Drive-level internal quality of service
US20140143300A1 (en) Method and Apparatus for Controlling Utilization in a Horizontally Scaled Software Application
US20080228977A1 (en) Method and Apparatus for Dynamic Hardware Arbitration
US11899987B2 (en) Quality of service management in a distributed storage system
CN111480145A (zh) 用于根据基于信用的机制来调度工作负载的系统和方法
KR20160131093A (ko) 네트워크 액세스가능 블록 저장을 위한 조정된 승인 제어
RU2643666C2 (ru) Способ и устройство для управления авторизацией виртуальной очереди вывода, а также компьютерный носитель информации
CN106716368B (zh) 用于应用的网络分类
US11784942B2 (en) Dynamic allocation of edge network resources
KR20220146325A (ko) 다중 리소스 파라미터들에 기초한 입출력 커맨드 스케줄링을 위한 시스템들 및 방법들
CN112749002A (zh) 一种集群资源动态管理的方法和装置
Sheng et al. Fairness in serving large language models
US11632319B2 (en) Processing device and moving method
KR102563329B1 (ko) 컨테이너에 대한 리소스 간 의존성 스케줄링 방법 및 이를 수행하는 네트워크 시스템
WO2021197198A1 (zh) 流量调度方法和网络处理器
EP3433985A1 (en) Method for traffic shaping using a serial packet processing algorithm and a parallel packet processing algorithm
KR20170017183A (ko) 가상 cpu를 제어하는 장치, 방법 및 컴퓨터 프로그램

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination