CN107533481A - 在具有硬件加速平面和软件平面的系统中提供服务 - Google Patents

在具有硬件加速平面和软件平面的系统中提供服务 Download PDF

Info

Publication number
CN107533481A
CN107533481A CN201680021987.2A CN201680021987A CN107533481A CN 107533481 A CN107533481 A CN 107533481A CN 201680021987 A CN201680021987 A CN 201680021987A CN 107533481 A CN107533481 A CN 107533481A
Authority
CN
China
Prior art keywords
service
hardware
accelerated
acceleration components
handling system
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.)
Withdrawn
Application number
CN201680021987.2A
Other languages
English (en)
Inventor
D·C·伯格
E·S·钟
J·R·拉鲁斯
J·S·格雷
A·R·帕特南
S·F·海尔
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN107533481A publication Critical patent/CN107533481A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/003Arrangements for allocating sub-channels of the transmission path
    • H04L5/0053Allocation of signaling, i.e. of overhead other than pilot signals
    • 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/52Network services specially adapted for the location of the user terminal

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

在此描述了一种服务映射部件(SMC),其用于基于不同种类的触发事件向数据处理系统中的硬件加速部件分配服务。数据处理系统的特征在于由硬件加速部件组成的硬件加速平面以及由多个软件驱动的主机部件组成的软件平面。SMC被配置为响应于触发事件而基于至少一个映射考虑并且基于可用性信息来选择硬件平面中的至少一个硬件加速部件来执行服务。然后,软件平面中的每个主机部件被配置为经由相关联的本地硬件加速部件或经由某个其他路由来访问所选择的硬件加速部件中的一个或多个硬件加速部件上的服务。

Description

在具有硬件加速平面和软件平面的系统中提供服务
背景技术
由于例如功率限制和其他因素,计算机行业在努力提高软件驱动的计算设备的速度和效率方面面临越来越多的挑战。软件驱动的计算设备采用以传统时间方式处理机器可读指令的一个或多个中央处理单元(CPU)。为了解决这个问题,计算行业提出了使用硬件加速部件(诸如现场可编程门阵列(FPGA))来补充由软件驱动的计算设备执行的处理。然而,软件驱动的计算设备和硬件加速部件是具有根本不同的架构、性能特性、功率需求、程序配置范例、接口特征等的不同类型的设备。因此,以使得能够满足特定数据处理环境的各种设计要求的方式将这两种类型的设备集成在一起是具有挑战性的任务。
发明内容
本文中描述了服务映射部件(SMC),其用于向数据处理系统中的硬件加速部件分配服务以满足对于服务的一般需求、对服务的个别请求和/或其他因素。数据处理系统的特征在于由硬件加速部件组成的硬件加速平面以及由多个软件驱动的主机部件组成的软件平面。在一种操作模式下,SMC被配置为响应于触发事件而基于至少一个映射考虑并且基于描述可用硬件加速部件池的可用性信息来选择硬件平面中的至少一个硬件加速部件来执行服务。然后,配置部件可以配置所选择的硬件加速部件来执行服务,前提是它们尚未被配置为这样做。软件平面中的每个主机部件均被配置为经由相关联的本地硬件加速部件或某个(些)其他路径来访问由一个或多个所选择的硬件加速部件提供的服务。
在非限制的意义上,映射考虑可以包括以下中的任何一个或多个:服务水平协议考虑、负载平衡考虑、带宽相关考虑、延迟相关考虑、功率相关考虑、线路速率考虑(指示服务是否为线路速率服务)、安全性相关考虑、迁移成本考虑、历史需求考虑、货币成本考虑、主机负载考虑、服务类型考虑(例如,指示服务以突发流量模式还是稳定流量模式为特征)、热相关考虑等。
以上总结的功能可以表现在各种类型的系统、设备、部件、方法、计算机可读存储介质、数据结构、图形用户界面呈现、制品等中。
提供本发明内容部分以便以简化的形式介绍概念的选择;这些概念在下面的具体实施例部分中进一步描述。本发明内容部分不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
图1示出了包括软件平面和硬件加速平面的数据处理系统的概况。
图2示出了图1的数据处理系统的操作的第一示例。
图3示出了图1的数据处理系统的操作的第二示例。
图4示出了对应于数据中心的图1的数据处理系统的一个实现。
图5是图4的数据中心实现的更包含性的描述。
图6示出了与图4所示的相比实现服务器单元部件的替代方式。
图7示出了与图4所示的相比实现服务器单元部件的另一方式。
图8示出了与图1所示的相比的替代数据处理系统,其使用例如与图1所示的相比不同的网络基础设施。
图9是示出图1的数据处理系统的一种操作方式的流程图。
图10示出了用于管理图1的数据处理系统的管理功能的一个实现的概况。
图11提供了作为图10的管理功能的部件的服务映射部件(SMC)的一个请求驱动的操作方式的概况。
图12-15示出了用于处理由驻留在主机部件上的租户功能实例做出的服务请求的不同的相应选项。
图16提供了图10的SMC的另一后台相关的操作方式的概况。
图17-20示出了用于在物理上实现图10的管理功能的不同的相应架构。
图21-24示出了用于配置图1的数据处理系统中的硬件加速部件的不同的相应策略。
图25提供了与图10的SMC的一种操作方式有关的附加信息。
图26是示出了在请求驱动的操作模式下图10的管理功能的一种操作方式的概况的流程图。
图27是示出了从局部管理部件的观点来看的图10的管理功能的一种操作方式的流程图。
图28-30是示出管理功能的操作的附加的决定相关的和管理相关的方面的流程图。
图31示出了实现图1的硬件加速部件的一种方式。
图32示出了包括单独的可配置域的硬件加速部件。
图33示出了用于在本地主机部件与相关联的本地硬件加速部件之间执行数据传输的功能。
图34示出了在图31中介绍的路由器的一个实现。
图35示出了在图31中介绍的传输部件的一个实现。
图36示出了在图31中介绍的3端口交换机的一个实现。
图37示出了图1所示的主机部件的一个实现。
在整个公开内容和附图中使用相同的附图标记来指代相同的部件和特征。100系列数字是指最初在图1中发现的特征,200系列数字是指最初在图2中发现的特征,300系列数字是指最初在图3中发现的特征,等等。
具体实施方式
本公开如下进行组织。A部分描述包括硬件加速平面和软件平面的说明性数据处理系统。B部分描述用于管理A部分的数据处理系统的管理功能。C部分阐述硬件加速平面中的说明性硬件加速部件的一个实现。
作为正文前的初步情况,一些附图描述在一个或多个结构部件的上下文中的概念,这些结构布局被不同地称为功能、模块、特征、元件等。附图中所示的各种部件可以通过任何物理和有形机制以任何方式来实现,例如通过在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等、和/或其任何组合。在一种情况下,附图中的各种部件到不同单元的所示出的分割可以反映在实际实现中的相应的不同的物理和有形部件的使用。替代地或另外地,附图中所示的任何单个部件可以由多个实际物理部件来实现。替代地或另外地,附图中的任何两个或更多个单独部件的描绘可以反映由单个实际物理部件执行的不同功能。
其他附图以流程图形式描述概念。以这种形式,某些操作被描述为构成以特定顺序执行的不同块。这样的实现是说明性的而非限制性的。本文中描述的某些块可以被组合在一起并且在单个操作中执行,某些块可以分解成多个部件块,并且某些块可以以与本文中所示的顺序不同的顺序来执行(包括并行的执行块的方式)。流程图中所示的块可以通过任何物理和有形机制以任何方式来实现,例如通过在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等、和/或其任何组合。
关于术语,短语“被配置为”包括任何种类的物理和有形功能可以被构造为执行所标识的操作的任何方式。该功能可以被配置为使用例如在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等、和/或其任何组合来执行操作。
术语“逻辑”包括用于执行任务的任何物理和有形功能。例如,流程图中所示的每个操作对应于用于执行该操作的逻辑部件。可以使用例如在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等、和/或其任何组合来执行操作。当由计算设备实现时,逻辑部件表示作为计算系统的物理部分的电气部件,无论其如何被实现。
本文中描述的任何存储资源、或存储资源的任何组合可以被认为是计算机可读介质。在很多情况下,计算机可读介质表示某种形式的物理和有形实体。术语计算机可读介质还包括例如经由物理管道和/或空中或其他无线介质等传输或接收的传播信号。然而,具体术语“计算机可读存储介质”和“计算机可读介质设备”明确地排除传播信号本身,同时包括所有其他形式的计算机可读介质。
以下说明可以将一个或多个特征标识为“可选”。这种类型的语句不应当被解释为可以被认为是可选的特征的穷举指示;也就是说,其他特征可以被认为是可选的,虽然在文本中没有明确标识。此外,对单个实体的任何描述并不旨在排除使用多个这样的实体;类似地,对多个实体的描述并不旨在排除使用单个实体。此外,虽然描述可以将某些特征解释为执行所标识的功能或实现所标识的机制的替代方式,但是也可以以任何组合将特征组合在一起。最后,术语“示例性”或“说明性”是指潜在的很多实现中的一个实现。
A.概述
图1示出了包括软件平面104和硬件加速平面106的数据处理系统102的概述。软件平面104包括软件驱动的部件(每个均由图1中的符号“S”表示)的集合,而硬件平面包括硬件加速部件(每个均由图1中的符号“H”表示)的集合。例如,每个主机部件可以对应于使用一个或多个中央处理单元(CPU)执行机器可读指令的服务器计算机。进而,每个CPU可以执行一个或多个硬件线程上的指令。另一方面,每个硬件加速部件可以对应于用于实现功能的硬件逻辑,诸如现场可编程门阵列(FPGA)设备、大规模并行处理器阵列(MPPA)设备、图形处理单元(GPU)、专用集成电路(ASIC)、多处理器片上系统(MPSoC)等。
术语“硬件”加速部件还旨在广泛地涵盖利用硬件设备来执行功能的不同方式,包括例如至少:a)其中至少一些任务用硬ASIC逻辑等来实现的情况;b)其中至少一些任务用软(可配置)FPGA逻辑等来实现的情况;c)其中至少一些任务作为FPGA软件处理器覆盖层上的软件等来运行的情况;d)其中至少一些任务在软处理器的MPPA等上运行的情况;e)其中至少一些任务作为硬ASIC处理器上的软件等来运行的情况,等等,或其任何组合。类似地,数据处理系统102可以适应软件平面104中的软件驱动的设备的不同表现。
为了简化对硬件加速部件的重复参考,下文中将这些设备简单地称为“加速部件”。此外,以下说明将提出其中加速部件对应于FPGA器件的主要示例,然而,如上所述,数据处理系统102可以使用其他类型的加速部件来构造。此外,硬件加速平面106可以使用加速部件的异构集合来构造,包括具有不同处理能力和架构的不同类型的FPGA器件、FPGA器件和其他器件的混合等。
主机部件通常使用时间执行范例来执行操作,例如通过使用其每个CPU硬件线程来一个接一个地执行机器可读指令。相反,加速部件可以使用空间范例来执行操作,例如通过使用大量并行逻辑元件来执行计算任务。因此,与软件驱动的主机部件相比,加速部件可以在更短的时间内执行一些操作。在数据处理系统102的上下文中,与术语“加速部件”相关联的“加速”修饰语反映其加速由主机部件执行的功能的可能性。
在一个示例中,数据处理系统102对应于包括多个计算机服务器的数据中心环境。计算机服务器对应于图1所示的软件平面104中的主机部件。在其他情况下,数据处理系统102对应于企业系统。在其他情况下,数据处理系统102对应于使用能够访问两个或更多个加速部件的至少一个主机部件的用户设备或装置。这些示例以举例而不是限制的方式引用;其他应用是可能的。
在一个实现方式中,数据处理系统102中的每个主机部件通过本地链路耦合到至少一个加速部件。处理设备的基本单元在本文中被称为“服务器单元部件”,因为该设备可以被分组在一起并且被维持作为数据处理系统102内的单个可服务单元(尽管不一定如此)。服务器单元部件中的主机部件称为“本地”主机部件,以将其与和其他服务器单元部件关联的其他主机部件区分开。同样地,服务器单元部件的加速部件称为“本地”加速部件,以将它们与和其他服务器单元部件相关联的其他加速部件区分开。
例如,图1示出了通过本地链路112(诸如下面将描述的高速外围部件互连(PCIe)链路)耦合到本地加速部件110的示例性本地主机部件108。本地主机部件108和本地加速部件110的这种配对形成单个服务器单元部件的至少一部分。更一般地,图1示出了软件平面104通过很多单独的本地链路耦合到硬件加速平面,图1统称为localH到localS耦合114。
本地主机部件108还可以间接地与硬件加速平面106中的任何其他远程加速部件通信。例如,本地主机部件108能够经由本地加速部件110访问远程加速部件116。更具体地,本地加速部件110经由链路118与远程加速部件116通信。
在一个实现方式中,公共网络120用于将软件平面104中的主机部件耦合到其他主机部件,并且将硬件加速平面106中的加速部件耦合到其他加速部件。也就是说,两个主机部件可以像两个加速部件那样使用相同的网络120彼此通信。作为另一特征,软件平面104中的主机部件之间的交互独立于硬件加速平面106中的加速部件之间的交互。这表示,例如,从软件平面104中的主机部件的角度来看,在主机部件的方向之外,两个或更多个加速部件可以以透明的方式彼此通信,而主机部件不“知晓”在硬件加速平面106中正在发生的特定交互。尽管如此,通过发布针对由硬件加速平面106所托管的服务的请求,主机部件可以发起在硬件加速平面106中发生的交互。
根据一个非限制性实现方式,数据处理系统102使用以太网协议来通过公共网络120传输IP分组。在一个实现方式中,服务器单元部件中的每个本地主机部件被给予单个物理IP地址。同一服务器单元部件中的本地加速部件可以采用相同的IP地址。服务器单元部件可以以不同的方式确定传入分组是否以本地主机部件而不是本地加速部件为目的地。例如,以本地加速部件为目的地的分组可以被形成为指定特定端口的用户数据报协议(UDP)分组。另一方面,以主机为目的地的分组不以这种方式而被形成。在另一种情况下,属于加速平面106的分组可以基于每个分组中(例如,分组的报头或主体中)的状态标志的值来与属于软件平面104的分组区分开。
鉴于上述特性,数据处理系统102可以被概念化为形成共享相同物理通信链路的两个逻辑网络。与两个逻辑网络相关联的分组可以通过它们各自的业务类别以上述方式彼此区分开。但是在其他实现方式中(例如,如下面关于图8所述),数据处理系统102可以分别使用两个不同的物理网络来处理主机到主机业务和硬件到硬件业务。此外,在使用公共网络120的实现方式中,主机到主机网络基础设施不需要与硬件到硬件网络基础设施完全相同;也就是说,这两个基础设施在它们的大多数网络资源被共享的意义上是共有的,但是不一定所有的网络资源都是共享的。
最后,管理功能122用于管理数据处理系统102的操作。如将在部分B(下面)中更详细地阐述的,管理功能122可以使用不同的控制架构在物理上实现。例如,在一个控制架构中,管理功能122可以包括耦合到一个或多个全局管理部件的多个局部管理部件。
通过对B部分的介绍,管理功能122可以包括执行不同的相应逻辑功能(其可以以不同的方式在物理上实现)的多个子部件。例如,位置确定部件124基于存储在数据存储126中的当前分配信息来标识数据处理系统102内的服务的当前位置。如本文中使用的,服务是指由数据处理系统102执行的任何功能。例如,一个服务可以对应于加密功能。另一服务可以对应于文档排序功能。另一服务可以对应于数据压缩功能,等等。
在操作中,位置确定部件124可以接收对服务的请求。作为响应,如果与服务相关联的地址存在于数据存储126中,位置确定部件124返回与该地址。地址可以标识托管所请求的服务的特定加速部件。
服务映射部件(SMC)128将服务映射到特定的加速部件。SMC128可以根据其接收到的调用其操作的触发事件的类型来以至少两种模式进行操作。在第一种情况下,SMC 128处理由租户功能实例做出的服务请求。租户功能实例可以对应于在特定本地主机部件上运行的软件程序,或者更具体地对应于在虚拟机上执行的程序,该虚拟机又与特定本地主机部件相关联。该软件程序可以在其执行过程中请求服务。SMC 128通过确定数据处理系统102中用于提供服务的适当部件来处理该请求。用于考虑的部件包括:本地加速部件(与请求从其而源起的本地主机部件相关联);远程加速部件;和/或本地主机部件本身(从而本地主机部件将以软件来实现服务)。SMC 128基于诸如所请求的服务是否属于线路速率服务等一个或多个映射考虑来做出其确定。
在另一种操作方式中,SMC 128通常在后台和全局模式下操作,以基于数据处理系统102中的全局条件(而不是处理来自租户功能实例的各个请求,或者除了处理来自租户功能实例的各个请求之外)来向加速部件分配服务。例如,SMC 128可以响应于影响一个或多个服务的需求的变化来调用其分配功能。在这种模式下,SMC 128再次基于诸如与服务相关联的历史需求等一个或多个映射考虑来做出其确定。
在执行其功能时,SMC 128可以与位置确定部件124交互。例如,在试图确定由加速部件提供的已经分配的服务的地址时,SMC 128可以咨询数据存储126。在例如通过与服务相关地存储加速部件的地址来将服务映射到一个或多个加速部件时,SMC 128还可以更新数据存储126。
虽然在图1中未示出,但是SMC 128的子部件也管理多部件服务。多部件服务是由多个部分组成的服务。多个相应的加速部件执行相应的部分。
注意,为了方便起见,图1示出了管理功能122与软件平面104和硬件平面106中的部件分离。但是如将在B部分中阐明的,可以使用软件平面104和/或硬件平面106的资源来实现管理功能122的任何方面。当由硬件平面106实现时,可以像任何服务一样加速管理功能。
图2示出了对应于单个事务或单个事务的一部分的图1的数据处理系统102的操作的第一示例。在操作(1)中,第一主机部件202在执行单个计算任务的过程中与第二主机部件204通信。然后,第二主机部件204请求使用在硬件加速平面106中实现的服务(尽管第二主机部件204可能不“知晓”服务在何处实现,除了可以在指定地址处被访问)。
在很多情况下,所请求的服务在单个加速部件上实现(尽管可以有多个冗余的这样的加速部件可供选择)。但是在图2的特定示例中,所请求的服务对应于分散在加速部件的集合(或集群)上的多部件服务,每个加速部件执行服务的分配部分。图结构可以指定各个加速部件在集合中被耦合在一起的方式。在一些实现方式中,图结构还标识至少一个首部件。首部件对应于数据处理系统102中的实体可以与硬件加速平面106中的多部件服务交互的联系点。首部件也可以用作由图结构定义的处理管道中的初始处理阶段。
在图2的特定情况下,假定加速部件206对应于本地链接到本地主机部件204的本地加速部件,并且加速部件208是多部件服务的首部件。在操作(2)和(3)中,请求主机部件204经由其本地加速部件206访问加速部件208。然后,加速部件208执行其部分多部件服务以生成中间输出结果。在操作(4)中,加速部件208然后调用执行多部件服务的另一相应部分的另一加速部件210以生成最终结果。在操作(5)、(6)和(7)中,硬件加速平面106通过上述相同的部件链但是沿相反方向顺序地将最终结果转发回请求主机部件204。注意,上述数据流程操作(包括定义返回路径的流程操作)仅作为示例而非限制来被引用;其他多部件服务可以使用指定任何其他流程路径的其他图结构。例如,加速部件210可以将最终结果直接转发给本地加速部件206。
首先,注意,在硬件加速平面106中发生的操作与在软件平面104中执行的操作以独立的方式来执行。换言之,软件平面104中的主机部件不管理硬件加速平面106中的操作。然而,主机部件可以通过发出对由硬件加速平面106所托管的服务的请求来调用硬件加速平面106中的操作。
第二,注意,硬件加速平面106以对于请求主机部件而言透明的方式来执行其事务。例如,本地主机部件204可能“不知晓”其请求如何在硬件加速平面中被处理,包括服务对应于多部件服务这一事实。
第三,注意,在该实现方式中,软件平面104中的通信(例如,对应于操作(1))使用与硬件加速平面106中的通信(例如,对应于操作(3)-(6))相同的公共网络120来进行。操作(2)和(7)可以通过与图1所示的localH到localS耦合114相对应的本地链路来进行。
图2所示的多部件服务类似于环,因为在第一方向上遍历一系列加速部件以获得最终结果;该最终结果然后在与首部件相反的方向通过相同系列的加速部件被传播回来。但是如上所述,其他多部件服务可以使用具有不同相应流程结构的加速部件的不同集合。
例如,图3示出了与图1的示例相比采用不同流程结构的图1的数据处理系统102的操作的第二示例。更具体地,在操作(1)中,本地主机部件(未示出)向其本地加速部件302发送请求。在这种情况下,假定本地加速部件也是服务的首部件。在操作(2)中,首部件然后可以将多个消息转发到多个相应的加速部件。接收消息的每个加速部件可以与其他加速部件并行地执行多部件服务的部分。(注意,图3可以仅表示更完整的事务的部分。)
此外,多部件服务不一定需要采用单个首部件或任何首部件。例如,多部件服务可以采用所有的都执行相同功能的加速部件的集群。数据处理系统102可以被配置为通过联系群集中的任何任意成员来调用这种多部件服务。该加速部件可以被称为首部件,因为它是要访问的第一个部件,但其在其他方面没有特殊状态。在其他情况下,主机部件可以最初将多个请求分发到加速部件的集合的多个成员。
图4示出了表示图1的数据处理系统102的一个实现方式的数据中心402的部分。特别地,图4示出了该数据中心402中的一个机架。机架包括多个服务器单元部件(404,406,...,408),每个部件耦合到架顶式(TOR)交换机410。架顶式交换机是指将机架中的部件耦合到数据中心的其他部件的交换机。尽管未示出,但是其他机架可以呈现类似的架构。机架是用于容纳或分组多个处理部件的物理结构。
图4还示出了一个代表性服务器单元部件404的说明性构成。它包括本地主机部件412和本地加速部件418,本地主机部件412包括一个或多个中央处理单元(CPU)(414,416,...)。本地加速部件418经由本地链路420直接耦合到主机部件412。本地链路420例如可以被实现为PCIe链路。本地加速部件418也通过网络接口控制器(NIC)422间接耦合到主机部件412。
最后,注意,本地加速部件418耦合到TOR交换机410。因此,在该特定实现方式中,本地加速部件418表示主机部件412与数据中心402中的其他部件(包括其他主机部件和其他加速部件)交互的唯一路径。除了其他效果之外,图4的架构使得本地加速部件418能够对从TOR交换机410接收(和/或发送到TOR交换机410)的分组执行处理(例如,通过执行加密、压缩等),而不需要负担由主机部件412执行的基于CPU的操作。
注意,本地主机部件412可以通过本地链路420或经由NIC 422与本地加速部件418通信。不同的实体可以在不同的相应情况下利用这两个路径。例如,假定在主机部件412上运行的程序请求服务。在一个实现方式中,假定主机部件412提供位置确定部件124和数据存储器126的本地实例化。或者,全局管理部件可以提供位置确定部件124及其数据存储126。在任一情况下,主机部件412可以咨询数据存储126以确定服务的地址。然后,主机部件412可以使用所标识的地址经由NIC 422和TOR交换机410来访问服务。
在另一实现方式中,假定本地加速部件418提供位置确定部件124和数据存储126的本地实例化。主机部件412可以经由本地链路420访问本地加速部件418。本地加速部件418然后可以咨询本地数据存储126以确定服务的地址,其通过该地址经由TOR交换机410来访问服务。其他访问服务的方式也是可能的。
图5是图4所示的数据中心402的更包含性的描绘。数据中心402包括多个机架(502-512,...)。每个机架包括多个服务器单元部件。每个服务器单元部件又可以具有以上图4中所述的架构。例如,代表性服务器单元部件514包括本地主机部件(S)516、网络接口控制器(N)518和本地加速部件(H)520。
图5所示的路由基础设施对应于上面参考图1所描述的公共网络120的一个实现方式。路由基础设施包括多个架顶式(TOR)交换机522和更高级别交换基础设施524。更高级别交换架构524将TOR交换机522连接在一起。更高级别交换基础设施524可以具有任何架构,并且可以由任何路由协议来驱动。在图5所示的示例中,更高级别交换基础设施524至少包括交换机526、核心交换机528等的集合。通过所示基础设施路由的业务可以对应于以太网IP分组。
图5所示的数据中心402可以对应于在单个地理位置处提供的资源集合、或者分布在多个地理位置(例如,位于世界上的不同地方的多个个体贡献数据中心)的分布式资源集合。在分布式上下文中,管理功能122可以基于任何映射考虑从第一贡献数据中心向第二贡献数据中心发送作业,映射考虑诸如:(1)确定加速部件在第二贡献数据中心可用;(2)确定加速部件被配置为在第二贡献数据中心执行期望的服务;和/或(3)确定加速部件不仅被配置为执行期望的服务,而且它们立即可用(例如,“在线”)以执行这些服务,等等。可以在服务分配中发挥作用的其他映射考虑在下面部分B中给出。如本文中使用的,术语“全局”通常是指比与单个服务器单元部件相关联的本地域更广泛的任何范围。
一般而言,应注意,尽管图4和图5关注使用相对广泛的数据处理系统(对应于数据中心),但是本文中阐述的一些原理可以应用于较小的系统,包括其中单个本地主机部件(或其他类型的部件)耦合到多个加速部件的情况,包括局部加速部件和一个或多个远程加速部件。这样的较小的系统甚至可以在用户设备或装置等中实施。用户设备可以具有使用本地加速资源和/或远程加速资源的选项。
图6示出了与图4所示的架构相比实现服务器单元部件602的替代方式。与图4的情况相似,图6的服务器单元部件602包括由一个或多个CPU(606,608,...)组成的本地主机部件604、本地加速部件610、和用于将本地主机部件604与本地加速部件610耦合的本地链接612。与图4的情况不同,服务器单元部件602将网络接口控制器(NIC)614实现为本地加速部件610的内部部件,而不是作为单独的部件。
图7示出了与图4所示的架构相比实现服务器单元部件702的另一替代方式。在图7的情况下,服务器单元部件702包括任何数目n个本地主机部件(704,...,706)以及任何数目m个本地加速部件(708,...,710)。(图中省略了服务器单元部件702的其他部件以便于说明。)例如,服务器单元部件702可以包括耦合到两个本地加速部件的单个主机部件。两个加速部件可以执行不同的相应的任务。例如,一个加速部件可以用于处理到其本地TOR交换机的传出业务,而另一加速部件可以用于处理来自TOR交换机的传入业务。此外,服务器单元部件702可以在任何本地加速部件(708,...,710)上加载任何服务。
还注意,在上述示例中,服务器单元部件可以例如通过在数据中心的机架内形成单个可服务单元来指代部件的物理分组。在其他情况下,服务器单元部件可以包括一个或多个主机部件和一个或多个加速部件,这些部件并不是必须一起容纳在单个物理单元中。在这种情况下,可以认为本地加速部件在逻辑上而不是在物理上与其相应的本地主机部件相关联。
替代地或另外地,本地主机部件和一个或多个远程加速部件可以在诸如单个MPSoC-FPGA芯片等单个物理部件上实现。网络交换机也可以并入该单个部件中。
图8示出了与图1所示的相比的替代数据处理系统802。与图1的数据处理系统102类似,数据处理系统802包括软件平面104和硬件加速平面106、以及用于将本地主机部件连接到相应的本地加速部件的localH到localS耦合114。但是与图1的数据处理系统102不同,数据处理系统802包括用于将主机部件耦合在一起的第一网络804和用于将硬件部件耦合在一起的第二网络806,其中第一网络804与第二网络806至少部分不同。例如,第一网络804可以对应于图5所示的类型的数据中心交换基础设施。第二网络806可以对应于用于将具有任何网络拓扑的加速部件连接在一起的专用链路。例如,第二网络806可以对应于p×r环面网络。环面网络中的每个加速部件经由适当的电缆链路等耦合到东、西、北和南相邻的加速部件。可以替代地使用具有任何相应尺寸和维度的其他类型的环面网络。
在其他情况下,由单个处理部件提供(例如,在单个芯片上实现)的本地硬CPU和/或软CPU和/或加速逻辑可以经由不同网络耦合到其他处理部件上的(例如,在其他芯片、板、机架等上实现的)其他元件。单个服务本身可以利用一个或多个递归本地互连网络。
还注意,以上描述是在发出由加速部件满足的服务请求的主机部件的上下文中给出的。但是,替代地或另外地,任何加速部件还可以请求可以由任何其他部件(例如,另一加速部件和/或甚至主机部件)满足的服务。SMC 102可以以与上述类似的方式来解决这样的请求。实际上,本文中描述的某些特征可以由硬件加速平面在其自身上实现,而不需要软件平面。
更一般地说,某些特征可以由请求服务的任何第一部件来实现,该第一部件可以满足该服务,和/或由相对于第一部件的一个或多个本地部件来实现,和/或由相对于第一部件的一个或多个远程部件来实现。然而,为了便于说明,下面的描述将主要在提出请求的实体对应于本地主机部件的上下文中来给出。
最后,其他实现可以采用不同的策略来将主机部件耦合到硬件部件,例如除了图14所示的localH到localS耦合114以外的硬件部件。
图9示出了表示图1的数据处理系统102的一个说明性操作方式的过程902。在框904,本地主机部件发布对服务的请求。在框906,本地主机部件接收对于请求的应答,应答可以标识服务的地址。在替代实现中,相关联的本地加速部件可以在从本地主机部件接收到请求之后执行框904和906。换言之,本地主机部件或本地加速部件可以执行地址查找功能。
在框908,相关联的本地加速部件可以本地执行服务,假定已经标识的地址与由本地加速部件本地实现的功能有关。替代地或另外地,在框910,本地加速部件将请求路由到远程加速部件。如上所述,本地加速部件被配置为执行到远程加速部件的路由而不涉及本地主机部件。此外,多个主机部件在数据处理系统102中通过与多个加速部件相同的物理网络彼此通信。
就A部分总结而言,数据处理系统102具有很多有用的特征。首先,数据处理系统102使用公共网络120(除了图8的示例),这避免了与用于将加速部件耦合在一起的定制网络相关联的费用。第二,公共网络120使得可以向诸如数据中心等现有数据处理环境添加加速平面。并且在安装之后,所得到的数据处理系统102可以被有效地维持,因为它利用在现有数据处理环境中发现的现有物理链路。第三,数据处理系统102集成加速平面106而不施加大的附加功率要求,例如,鉴于上述的本地加速部件可以与现有服务器单元部件集成的方式。第四,数据处理系统102提供了一种有效和灵活的机制,用于使得主机部件能够访问由硬件加速平面106提供的任何加速资源,例如,而不需要狭义地将主机部件与特定的固定加速资源进行配对,并且不会使主机部件负担管理硬件加速平面106本身。第五,数据处理系统102通过智能地将这些资源分散在硬件平面106中来提供用于管理加速资源的有效机制,从而:(a)减少了资源的过度利用和利用不足(例如,对应于“滞留能力”问题);(b)促进了这些服务的消费者对这些服务的快速访问;(c)适应了由一些消费者和/或服务指定的提高的加工处理要求等等。上述效果是说明性的,而不是穷举性的;数据处理系统102提供其他有用的效果。
B.管理功能
图10示出了用于管理图1的数据处理系统102的管理功能122的一个实现方式的概述。更具体地,图10描绘了由管理功能122(包括其主引擎)、服务映射部件(SMC)128执行的功能的逻辑视图。不同的子部件对应于由管理功能122执行的不同的主要功能。下面描述的图17-20示出了逻辑功能的各种可能的物理实现。
如在介绍性部分A中所描述,位置确定部件124基于存储在数据存储126中的当前分配信息来标识数据处理系统102内的服务的当前位置。在操作中,位置确定部件124接收对于服务的请求。作为响应,它返回服务的地址(如果存在于数据存储126内)。地址可以标识实现服务的特定加速部件。
数据存储126可以维持将服务映射到地址的任何类型的信息。在图10所示的少量摘录中,数据存储器126将少量服务(服务w、服务x、服务y和服务z)映射到当前被配置为提供这些服务的加速部件。例如,数据存储126指示用于服务w的配置图像当前安装在具有地址a1、a6和a8的设备上。地址信息可以以任何方式来表示。这里,地址信息以高级符号形式来表示以便于说明。
在一些实现方式中,数据存储126可以可选地还存储以任何方式表征每个当前服务到部件分配的状态信息。通常,用于服务到部件分配的状态信息指定在数据处理系统102内处理在其分配的部件上实现的分配的服务的方式,诸如通过指定其持久性级别,指定其访问权限(例如,“所有权权利”)等。在一个非限制性实现中,例如,服务到部件分配可以被指定为保留的或非保留的。当执行配置操作时,SMC 128可以在确定是否适合改变该分配时将与分配相关联的保留/非保留状态信息考虑在内,例如,以满足对于服务的当前请求、对于一个或多个服务的需求的变化等。例如,数据存储器126指示具有地址a1、a6和a8的加速部件当前被配置为执行服务w,但是仅到加速部件a1和a8的分配被考虑保留。因此,与其他两个加速部件相比,SMC 128将到加速部件a6的分配视为用于重新分配(重新配置)的更合适的候选。
另外地或替代地,数据存储126可以提供指示服务到部件分配要由所有租户功能实例共享还是专用于一个或多个特定租户功能实例(或服务的某个(些)其他指示的消费者)的信息。在前者(完全共享)的情况下,所有租户功能实例竞争由加速部件提供的相同资源。在后者(专用)情况下,仅允许与服务分配关联的那些客户端使用所分配的加速部件。图10以高级别方式示出了在具有地址a3的加速部件上运行的服务x和y被保留用于由一个或多个指定的租户功能实例来使用,而任何租户功能实例可以使用另一服务到部件分配。
SMC 128还可以与提供可用性信息的数据存储1002交互。可用性信息标识具有用于实现一个或多个服务的可用容量的加速部件池。例如,在一种使用方式中,SMC 128可以确定将一个或多个加速部件分配为功能的提供者是适当的。为此,SMC 128利用数据存储1002以寻找具有用于实现该功能的空余容量的加速部件。然后,SMC 128将功能分配给这些空余加速部件中的一个或多个。这样做会改变所选择的加速部件的可用性相关状态。
SMC 128还管理可用性信息并且将其维持数据存储1002中。在这样做时,SMC 128可以使用不同的规则来确定加速部件是可用还是不可用。在一种方法中,SMC 128可以认为当前正在使用的加速部件不可用,而认为当前未使用的加速部件可用。在其他情况下,加速部件可以具有不同的可配置域(例如,片块(tile)),其中一些当前正在使用,而另一些当前未使用。这里,SMC 128可以通过表示当前未使用的其处理资源的部分来指定加速部件的可用性。例如,图10表示具有地址a1的加速部件的50%的处理资源可用于使用。另一方面,具有地址a2的加速部件完全可用,而具有地址a3的加速部件完全不可用。各个加速部件可以以不同的方式通知SMC 128它们的相对利用水平,如下面将更详细地描述的。
在其他情况下,SMC 128可以在注册加速部件是可用还是不可用时考虑对于加速部件的未决请求。例如,SMC 128可以指示加速部件不可用,因为它被调度为将服务递送到一个或多个租户功能实例,尽管它可能不会在当前时间提供该服务。
在其他情况下,SMC 128还可以注册可用的每个加速部件的类型。例如,数据处理系统102可以对应于支持具有不同物理特性的加速部件的异构环境。这种情况下的可用性信息不仅可以指示可用的处理资源的身份,还可以指示这些资源的类型。
在其他情况下,当将加速部件注册为可用或不可用时,SMC 128还可以考虑服务到部件分配的状态。例如,假定特定加速部件当前被配置为执行某个服务,并且此外,假定分配已经被指配为保留而不是非保留。仅鉴于其保留状态,SMC 128可以将加速部件指配为不可用(或将其部分指配为不可用),而不管服务当前是否正在主动用于在当前时间执行功能。实际上,加速部件的保留状态至少在某些情况下用作防止SMC 128重新配置加速部件的锁。
现在参考SMC 128本身的核心映射操作,SMC 128响应于触发事件来将服务分配或映射到加速部件。更具体地,SMC 128取决于已经接收到的触发事件的类型以不同的模式操作。在请求驱动模式下,SMC 128通过租户功能来处理对于服务的请求。这里,每个触发事件对应于至少部分驻留在特定本地主机部件上的租户功能实例的请求。响应于本地主机部件的每个请求,SMC 128确定用于实现服务的适当部件。例如,SMC 128可以从以下项中选择:本地加速部件(与做出请求的本地主机部件相关联)、远程加速部件或本地主机部件本身(从而本地主机部件将以软件实现服务)、或其某种组合。
在第二后台模式下,SMC 128通过将服务全局地分配给数据处理系统102内的加速部件以满足数据处理系统102中的总体预期需求和/或满足其他系统范围目标和其他因素(而不是狭义地关注主机部件的各个请求)来操作。这里,接收到的每个触发事件对应于数据处理系统102中的一些条件,其作为整体保证服务的分配(或重新分配),诸如对于服务的需求的变化。
然而,注意,上述模式不是分析的互斥域。例如,在请求驱动模式下,SMC 128可以尝试实现至少两个目标。作为第一主要目标,SMC128将尝试寻找满足对于服务的未解决的请求的加速部件,同时整个满足与数据处理系统102相关的一个或多个性能目标。作为第二目标,SMC 128可以可选地考虑其对服务的分配关于由其他租户功能实例对该服务的未来使用的长期影响。换言之,第二目标涉及恰好由租户功能的特定实例的请求所触发的后台考虑。
例如,考虑以下简化情况。租户功能实例可以做出对于服务的请求,其中租户功能实例与本地主机部件相关联。SMC 128可以通过配置本地加速部件以执行服务来响应于请求。在做出这个决定时,SMC128首先尝试通过租户功能实例来寻找满足请求的分配。但是,SMC128还可以基于如下确定来进行分配:很多其他主机部件已经请求相同服务并且这些主机部件大多位于与已经生成对于服务的当前请求的租户功能实例相同的机架中。换言之,这一补充寻找进一步支持将服务置于机架内(in-rack)加速部件的决定。
图10描绘了可选地包括执行不同的相应分析的多个逻辑部件的SMC 128。作为第一可选的分析部件,SMC 128可以使用状态确定逻辑1004来定义其正在进行的分配的状态,例如,作为保留的或非保留的、专用的或完全共享的等。例如,假定SMC 128从租户功能实例接收到对于服务的请求。作为响应,SMC 128可以决定配置本地加速部件以提供服务,并且在该过程中,将该分配指配为非保留的,例如,在请求可以是对于服务的“一次性”请求的这一初始假定下。在另一种情况下,假定SMC 128进行附加确定,即相同的租户功能实例在短时间内已经重复地做出了对于同一服务的请求。在这种情况下,SMC 128可以做出如上所述的相同的分配决定,但是这次SMC128可以将其指配为保留。SMC 128还可以可选地将服务指配为专用于请求租户功能。通过这样做,SMC 128可以使得数据处理系统102能够通过租户功能实例来更有效地满足对该服务的未来请求。换言之,保留状态可以降低SMC 128稍后将服务从本地加速部件移动的机会,其中其被本地主机部件大量使用。
此外,租户功能实例(或本地主机部件)可以具体地请求其被授予对本地加速部件的保留且专用的使用。状态确定逻辑1004可以在确定是否尊重该请求时使用不同的环境特定的规则。例如,状态确定逻辑1004可以决定尊重请求,前提是没有接收到保证覆盖(override)请求的其他触发事件。状态确定逻辑1004可以覆盖该请求,例如,当它试图完成基于任何环境特定的原因而被确定为比租户功能的请求更紧迫的另一请求时。
在一些实现方式中,注意,租户功能实例(或本地主机部件或服务的某个其他消费者)可以独立地控制其本地资源的使用。例如,本地主机部件可以向管理功能122传递指示其本地加速部件不可用或不完全可用的利用信息,而不管本地加速部件在此刻实际上是否忙碌。通过这样做,本地主机部件可以防止SMC 128“窃取”其本地资源。不同的实现方式可以使用不同的环境特定的规则来确定实体是否被允许以上述方式限制对其本地资源的访问,以及如果被允许,则确定是在何种情况下。
在另一示例中,假定SMC 128确定已经存在对特定服务的需求的普遍增长。作为响应,SMC 128可以寻找与加速部件“池”相对应的规定数目的可用加速部件,并且然后将加速部件池指配为用于提供特定服务的保留(但完全共享)的资源。之后,SMC 128可以检测对于特定服务的需求的普遍降低。作为响应,SMC 128可以减少保留的加速部件池,例如通过将先前注册为“保留”的一个或多个加速部件的状态改变为“非保留”。
注意,上述状态的特定维度(保留与非保留、专用与完全共享)是通过说明而不是限制来引用的。其他实现方式可以采用任何其他状态相关维度,或者可以仅容纳单个状态指配(并且因此省略了使用状态确定逻辑1004的功能)。
作为第二分析部件,SMC 128可以使用大小确定逻辑1006来确定适合于提供服务的加速部件的数目。SMC 128可以基于与服务相关联的处理需求的考虑以及可用于满足这些处理需求的资源来做出这样的确定。
作为第三分析部件,SMC 128可以使用类型确定逻辑1008来确定适合于提供服务的加速部件的类型。例如,考虑其中数据处理系统102具有加速部件的异构集合的情况,这些加速部件具有不同的相应能力。类型确定逻辑1008可以确定适于提供服务的特定种类的加速部件中的一个或多个。
作为第四分析部件,SMC 128可以使用放置确定逻辑1010来确定适合于寻址特定触发事件的特定加速部件。这一确定又可以具有一个或多个方面。例如,作为其分析的部分,放置确定逻辑1010可以确定是否适合配置加速部件以执行服务,其中该部件当前未被配置为执行服务。
上述分析方面通过说明而不是限制来引用。在其他实现方式中,SMC 128可以提供附加的分析阶段。
通常,SMC 128基于一个或多个映射考虑来执行其各种分配确定。例如,一个映射考虑可以涉及在数据存储1012中提供的历史需求信息。说明(下文)将提供不同映射考虑的附加描述,因为它们适用于放置确定逻辑1010的操作。
然而,注意,SMC 128不需要在所有情况下执行多因素分析。在一些情况下,例如,主机部件可以做出对于与单个固定位置相关联(例如,对应于本地加速部件或远程加速部件)的服务的请求。在这些情况下,SMC 128可以简单地遵从位置确定部件124以将服务请求映射到服务的地址,而不是以不同的方式评估执行服务的成本和益处。在其他情况下,数据存储126可以将多个地址与单个服务相关联,每个地址与可以执行服务的加速部件相关联。SMC 128可以在下面要描述的向特定地址分配对于服务的请求中使用任何映射考虑,诸如负载平衡考虑。
作为其操作的结果,SMC 128可以利用将服务映射到可以找到这些服务的地址的信息来更新数据存储126(假定该信息已经被SMC128改变)。SMC 128还可以存储与新的服务到部件分配有关的状态信息。
为了配置一个或多个加速部件以执行功能(如果尚未这样配置),SMC 128可以调用配置部件1014。在一个实现方式中,配置部件1014通过向加速部件发送配置流来配置加速部件。配置流指定要被“编程”到接收方加速部件中的逻辑。配置部件1014可以使用不同的策略来配置加速部件,其中的几个在下面阐述。
故障监测部件1016确定加速部件是否已经发生故障。SMC 128可以通过将故障加速部件替换为备用加速部件来对故障通知进行响应。
B.1 SMC在请求驱动模式下的操作
图11提供在应用于处理在主机部件上运行的租户功能实例的请求这一任务时SMC128的一种操作方式的概况。在所示场景中,假定主机部件1102实现多个租户功能实例(T1,T2,...,Tn)。每个租户功能实例可以对应于至少部分在主机部件1102上执行的软件程序,例如在使用主机部件1102(在其他可能的主机部件中)的物理资源运行的虚拟机中。还假定一个租户功能实例通过生成对于特定服务的请求来启动图11所示的事务。例如,租户功能可以执行照片编辑功能,并且可以作为其整体操作的一部分来调用压缩服务。或者租户功能可以执行搜索算法,并且可以作为其整体操作的一部分来调用排序服务。
在操作(1)中,本地主机部件1102可以向SMC 128发送其对于服务的请求。在操作(2)中,除了其他分析之外,SMC 128还可以确定用于实现服务的至少一个适当的部件。在这种情况下,假定SMC128确定远程加速部件1104是用于实现服务的最适当的部件。SMC128可以从位置确定部件124获得该加速部件1104的地址。在操作(3)中,SMC 128可以将其应答传送给本地主机部件1102,例如以与服务相关联的地址的形式。在操作(4)中,本地主机部件1102可以经由其本地加速部件1106来调用远程加速部件1104。处理租户功能的请求的其他方式是可能的。例如,代替或除了本地主机部件102之外,本地加速部件1106可以查询SMC128。
路径1108表示其中代表性的加速部件1110(和/或其相关联的本地主机部件)向SMC 128传送利用信息的示例。利用信息可以整体地或者部分地标识加速部件1110可用还是不可用于使用。利用信息还可以可选地指定加速部件1110拥有的可用于使用的处理资源的类型。如上所述,还可以选择利用信息来有目的地防止SMC 128稍后利用加速部件1110的资源,例如通过整体或部分地指示资源不可用。
尽管未示出,但是任何加速部件也可以向SMC 128做出对于特定资源的定向请求。例如,主机部件1102可以具体请求使用其本地加速部件1106作为保留和专用资源。如上所述,SMC 128可以在确定是否尊重这样的请求时使用不同的环境特定的规则。
此外,尽管未示出,但是除了主机部件之外的其他部件可以做出请求。例如,硬件加速部件可以运行发布对由其自身、另一硬件加速部件、主机部件等或任何这些组合可以满足的服务的请求的租户功能实例。
图12-15示出了用于处理由驻留在主机部件上的租户功能做出的对于服务的请求的不同的相应选项。从图12开始,假定本地主机部件1202包括至少两个租户功能实例T1(1204)和T2(1206),两者都同时运行(但是实际上,本地主机部件1202可以托管更多的租户功能实例)。第一租户功能实例T1需要加速服务A1来执行其操作,而第二租户功能实例T2需要加速服务A2来执行其操作。
还假定本地加速部件1208例如经由PCIe本地链路或类似的耦合到本地主机部件1202。在当前时刻,本地加速部件1208托管用于执行加速服务A1的A1逻辑1210和用于执行加速服务A2的A2逻辑1212。
根据一个管理决策,SMC 128将T1分配给A1逻辑1210,并且将T2分配给A2逻辑1212。然而,SMC 128的这一决策不是固定的规则;SMC 128可以基于多个因素做出其决策,其中一些可能反映冲突的考虑。因此,基于其他因素(在此未描述),SMC 128可以选择以与图12所示的不同的方式将作业分配给加速逻辑。
在图13的场景中,主机部件1302具有与上述相同的服务需求的相同的租户功能实例(1304,1306)。但是在此情况下,本地加速部件1308仅包括用于执行服务A1的A1逻辑1310。也就是说,它不再托管用于执行服务A2的A2逻辑。
响应于上述场景,SMC 128可以选择将T1分配给加速部件1308的A1逻辑1310。然后,SMC 128可以将T2分配给远程加速部件1314的A2逻辑1312,其已经被配置为执行该服务。再次,所示的指派在此是以说明而非限制的精神来阐述的;SMC 128可以基于输入考虑的另一组合来选择不同的分配。在一个实现方式中,本地主机部件1302和远程加速部件1314可以可选地压缩它们向彼此发送的信息,例如以减少带宽的消耗。
注意,主机部件1302经由本地加速部件1308访问A2逻辑1312。但是在另一种情况(未示出)下,主机部件1302可以经由与加速部件1314相关联的本地主机部件(未示出)访问A2逻辑1312。
图14呈现其中主机部件1402具有与上述相同的服务需求的相同的租户功能实例(1404,1406)的另一场景。在这种情况下,本地加速部件1408包括用于执行服务A1的A1逻辑1410和用于执行服务A3的A3逻辑1412。还假定数据存储器1002中的可用性信息指示A3逻辑1412当前未被任何租户功能实例使用。响应于上述场景,SMC128可以使用(图10的)配置部件1014来重新配置加速部件1408,使得它包括A2逻辑1414而不是A3逻辑1412(如图14的下部所示)。然后,SMC 128可以将T2分配给A2逻辑1414。虽然未示出,但是SMC 128可以替代地或另外地决定重新配置任何远程加速部件以执行A2服务。
通常,SMC 128可以以完全或部分方式执行配置,以满足租户功能实例的任何请求。SMC通过重新配置由加速部件提供的所有应用逻辑来执行整个配置。SMC 128可以通过重新配置由加速部件提供的应用逻辑的一部分(例如,一个或多个片块)来执行部分配置,在重新配置期间保持其他部分(例如,一个或多个其他片块)完整且可操作。对于以下描述的后台操作模式下的SMC 128的操作也是如此。另外注意,附加因素可以在确定A3逻辑1412是否是重新配置的有效候选(诸如服务是否被认为是保留的,是否存在该服务的未决请求等)中发挥作用。
图15呈现其中主机部件1502具有与上述相同的服务需求的相同的租户功能实例(1504,1506)的另一场景。在这种情况下,本地加速部件1508仅包括用于执行服务A1的A1逻辑1510。响应于上述场景,SMC 128可以向A1逻辑1510分配T1。此外,假定SMC 128确定任何加速部件执行A2服务都是不可行的。作为响应,如果实际上本地A2软件逻辑1512在主机部件1502处可用,则SMC 128可以指示本地主机部件1502将T2分配给本地A2软件逻辑1512。SMC 128可以基于各种理由而做出图15的决定。例如,SMC 128可以得出结论,硬件加速是不可能的,因为针对该服务当前不存在配置图像。或者可以存在配置图像,但是SMC 128得出结论,任何加速设备的容量都不足以加载和/或运行这样的配置。
最后,以上示例在运行于主机部件上的租户功能实例的上下文中描述。但是如上所述,租户功能实例可以更一般地对应于服务请求者,并且那些服务请求者可以在任何部件(包括加速部件)上运行。因此,例如,在加速部件上运行的请求者可以生成对于要由一个或多个其他加速部件和/或由其本身和/或由一个或多个主机部件执行的服务的请求。SMC102可以以上述任何方式来处理请求者的请求。
B.2 SMC在后台模式下的操作
图16提供了当在后台模式下操作时SMC 128的一种操作方式的概况。在操作(1)中,SMC 128可以接收启动SMC 128的操作的某种类型的触发事件。例如,触发事件可以对应于影响服务的需求的变化等。在操作(2)中,响应于触发事件,SMC 128基于一个或多个映射考虑和数据存储1002中的可用性信息来确定一个或多个服务到加速部件的分配,例如通过将服务分配给一个或多个可用加速部件的集合。在操作(3)中,SMC 128执行其分配决策。作为这个过程的一部分,SMC 128可以调用配置部件1014来配置已经被分配用于执行服务的加速部件,假定这些部件尚未被配置用于执行服务。SMC128还更新数据存储126中的服务位置信息,并且如果合适则更新数据存储1002中的可用性信息。
在图16的特定示例中,SMC 102分配第一组加速部件1602以执行第一服务(“服务y”),并且分配第二组加速部件1604以执行第二服务(“服务z”)。在实际实践中,所分配的一组加速部件可以具有任意数目的成员,并且这些成员可以以任何方式跨硬件加速平面106被分布。然而,SMC 128可以尝试以特定方式对与服务相关联的加速部件进行分组以实现(除其他因素之外)令人满意的带宽和等待时间性能,如将在下面更详细地描述的。SMC 128还可以对分配与单个多部件服务相关联的加速部件应用进一步的分析。
SMC 128还可以在后台模式下操作,以将实现特定服务的一个或多个加速部件分配给至少一个租户功能实例,而不一定要求租户功能每次都做出对于该特定服务的请求。例如,假定租户功能实例经常使用对应于图16中的“服务z”的压缩功能。SMC 128可以主动地将一个或多个专用加速部件1604分配给至少该租户功能实例。当租户功能需要使用服务时,它可以从与已经被分配给它的加速部件1604相关联的可用地址池中汲取。关于一组租户功能实例(而不是单个实例),可以执行相同的专用映射操作。
B.3管理功能的物理实现
图17示出了图10的管理功能122的第一物理实现方式。在这种情况下,管理功能122被提供在单个全局管理部件(MG)1702上或多个全局管理部件(1702,...,1704)上。多个全局管理部件(1702,...,1704)(如果使用)可以提供冗余逻辑和信息以实现期望的负载平衡和故障管理性能。在一种情况下,每个全局管理部件可以在可以对应于主机部件之一的计算机服务器设备上或者在专用管理计算设备上实现。在操作中,任何个体主机部件(S)或加速部件(H)可以经由图1所示的公共网络120与全局管理部件交互。
图18示出了图10的管理功能122的第二物理实现方式。在这种情况下,每个服务器单元部件(诸如代表性的服务器单元部件1802)提供至少一个局部管理部件(ML)1804。例如,本地主机部件1806可以实现局部管理部件1804(例如,作为其管理程序功能的一部分),或者本地加速部件1808可以实现局部管理部件1804,或者服务器单元部件1802内的某个其他部件可以实现局部管理部件1804(或其某种组合)。数据处理系统102还包括一个或多个全局管理部件(1810,...,1812)。每个全局管理部件可以以上面关于图17描述的方式来提供冗余逻辑和信息。如上所述,管理功能122共同地呈现数据处理系统102中的所有本地和全局管理部件。
图18的架构可以以例如下列方式来实现SMC 128的请求驱动方面。局部管理部件1804可以首先确定本地加速部件1808是否可以执行租户功能请求的服务。全局管理部件(MG)可以执行其他决策,诸如标识用于执行服务的远程加速部件,在本地加速部件1808不能执行该任务的情况下。另一方面,在图17的架构中,单个全局管理部件可以执行与将请求映射到加速部件有关的所有决策。
此外,局部管理部件1804可以在诸如周期性基础和/或事件驱动基础(例如,响应于利用的改变)等任何基础上向全局管理部件发送利用信息。全局管理部件可以使用利用信息来更新其在数据存储1002中的可用性信息的主记录。
图19示出了图10的管理功能122的第三物理实现方式。在这种情况下,每个服务器单元部件存储其自己的专用局部管理部件(ML)(其可以由本地主机部件实现为其管理程序功能的一部分,由本地加速部件实现,由某个其他本地部件实现,或其某种组合)。例如,服务器单元部件1902与本地主机部件1906和本地加速部件1908一起提供局部管理部件1904。同样地,服务器单元部件1910与本地主机部件1914和本地加速部件1916一起提供局部管理部件1912。局部管理部件的每个实例存储关于相同部件的其他实例的冗余逻辑和信息。已知的分布式系统工具可以用于确保这个部件的所有分布式版本都包含相同的逻辑和信息,诸如由Marryand的Forest Hill的Apache Software Foundation提供的ZOOKEEPER工具。(除此之外,注意,可以使用相同的技术来维持本小节中描述的其他示例中的冗余逻辑和信息。)管理功能122集中呈现数据处理系统102中的所有局部管理部件,如如上所述。也就是说,在这个实现方式中没有中央全局管理部件。
图20示出了图10的管理功能122的第四物理实现方式。在这种情况下,管理功能122实施各个管理部件的层级结构。例如,在一个仅代表性的结构中,每个服务器单元部件包括低级局部管理部件(ML3)(其可以由本地主机部件、本地加速部件、某个其他本地部件或其某种组合来实现)。例如,服务器单元部件2002与本地主机部件2006和本地加速部件2008一起提供低级局部管理部件2004。同样地,服务器单元部件2010与本地主机部件2014和加速部件2016一起提供低级局部管理部件2012。结构的下一管理层至少包括中级管理部件2018和中级管理部件2020。结构的顶级包括单个全局管理部件2022(或多个冗余的这样的全局管理部件)。因此,所示出的控制架构形成具有三个层级的结构,但是架构可以具有任何数目的层级。
在操作中,低级管理部件(2004,2012,...)处理直接影响与各个服务器单元部件相关联的资源的某些低级管理决策。中级管理部件(2018,2020)可以做出影响数据处理系统102的相关部分的决策,诸如单个机架或一组机架。顶级管理部件(2022)可以做出广泛地适用于整个数据处理系统102的全面的决策。
B.4配置部件
图21-24示出了与实现图10的配置部件1014的不同方式相对应的用于配置加速部件的不同的策略。以图21开始,全局管理部件2102能够访问提供一个或多个配置图像的数据存储2104。每个配置图像包含可以用于实现相应服务的逻辑。全局管理部件2102可以通过将配置流(对应于配置图像)转发到加速部件来配置加速部件。例如,在一种方法中,全局管理部件2102可以将配置流发送到与特定服务器单元部件2108相关联的局部管理部件2106。然后,局部管理部件2106可以基于接收到的配置流来协调本地加速部件2110的配置。或者,代替或除了局部管理部件2106之外,本地主机部件2112可以执行上述操作。
图22示出了用于配置加速部件的另一策略。在这种情况下,全局管理部件2202向服务器单元部件2206的局部管理部件2204发送指令。作为响应,局部管理部件2204访问本地数据存储2208中的配置图像,并且然后使用它来配置本地加速部件2210。或者,代替或除了局部管理部件2204之外,本地主机部件2212可以执行上述操作。
图23示出了用于配置本地加速部件2302的另一技术。在该方法中,假定加速部件2302包括应用逻辑2304,应用逻辑2304又由当前模型2306来掌控(其中模型对应于以特定方式执行功能的逻辑)。还假定加速部件2302能够访问本地存储器2308。本地存储器2308存储与一个或多个其他模型(模型1,...,模型n)相关联的配置图像。在被触发时,本地模型加载部件2310可以将与当前模型2306相关联的配置与和本地存储器2308中的另一模型相关联的配置交换。模型加载部件2310可以由加速部件2302本身、本地主机部件、局部管理部件等、或其组合来实现。在一个实现方式中,图23所示的配置操作可以在比整个应用逻辑2304的整体重新配置更少的时间内执行,因为它需要替换由应用逻辑2304使用的某个逻辑,而不是以批发方式替换整个应用逻辑2304。
最后,图24示出了具有支持部分配置的应用逻辑2402的加速部件。管理功能122可以通过将应用1(2404)与应用2(2406)分开配置来利用该功能,反之亦然。
B.5 SMC的说明性操作
图25提供了服务映射部件(SMC)128的一种操作方式的概况。如上所述,SMC 128可以在接收到一个或多个触发事件时执行其决策过程。在请求驱动模式下,触发事件可以对应于来自租户功能实例或者请求加速服务的某个其他实体的请求。在后台模式下,一种类型的触发事件对应于对于一个或多个服务的需求的变化。另一后台模式触发事件对应于用于执行服务的加速资源的可用性的变化。另一后台模式触发事件对应于引入和/或移除一个或多个服务。另一后台模式触发事件可以对应于数据处理系统102的性能的变化,特别是在处理负载问题、带宽问题等方面。另外地或替代地,SMC 128可以在后台模式下通过根据任何指定的频率周期性地分析数据处理中心的现行情况来操作。通过在响应于租户功能实例的各个请求时将其分配的一般后台相关影响考虑在内,SMC 128还可以以上述方式将请求驱动分析与后台分析组合。
如上所述,SMC 128可以执行不同的分析阶段,诸如:(1)由状态确定逻辑1004执行的确定与服务到部件分配相关联的状态(例如,保留与非保留、专用与完全共享等);(2)由大小确定逻辑1006执行的确定要使用的加速部件的数目;(3)由类型确定逻辑1008执行的确定要使用的加速部件的类型;和/或(4)由放置确定逻辑1010执行的确定要在数据处理系统102内使用的各个加速部件,等。
为了便于说明,主要关于由放置确定逻辑1010执行的第四确定来说明SMC 102的操作。为了进一步简化说明,以下说明将首先在将单个服务分配给一个或多个加速部件的上下文中来阐述,其中多个消费者尚未竞争相同的资源。
通常,在请求驱动模式下,SMC 128的放置确定逻辑1004可以通过向请求租户功能实例指令其能够在哪里访问所请求的服务来满足请求。在这样做时,如果这些部件尚未被配置以执行服务,则SMC128可以可选地调用配置部件1014以配置加速部件来执行所请求的服务。替代地或另外地,SMC 128可以在所标识的加速部件上向已经配置的服务分配请求。类似地,在后台模式下,SMC 128的放置确定逻辑1006可以通过调用配置部件1014以配置一个或多个加速部件提供服务来满足对于数据处理系统102中的服务的总体需求,和/或从一个或多个已经配置的加速部件中汲取。
在调用时,SMC 128可以基于若干因素(下面称为“映射考虑”)来做出决策。SMC128可以从各种来源获得与这些映射考虑有关的输入信息,诸如数据处理系统102内的主机部件和加速部件、提供与性能参数值等有关的信息的外部实体(其可以经由诸如因特网的一个或多个网络连接来访问),等。
一些映射考虑在关注方面相对较窄,例如,通过强调分配决策满足由在本地主机部件上运行的租户功能实例所生成的特定请求的程度。其他映射考虑在关注方面更全局,例如通过强调分配决策整体上对于数据处理系统102将具有的影响。其他映射考虑将特定和全局因素都考虑在内。以下说明标识代表性的而非穷举性的映射考虑列表。a.消费者的位置
一个映射考虑涉及已经请求所考虑的服务的实体的位置、或者将来可能消费该服务的实体的位置。例如,当在后台模式下执行分配时,SMC 128可以确定所考虑的服务是否仅具有少数主要消费者。如果是,则SMC 128可以尝试将一个或多个加速部件“靠近”这些消费者放置。更具体地,在一个非限制性情况下,SMC 128可以将服务加载到与定期请求服务的相应主机部件相关联的一个或多个本地加速部件上。另一方面,如果服务具有分散在数据处理系统102上的很多随机消费者,则SMC 128可以认为将服务放置在任何一个消费者附近的重要性较小。
b.当前映射考虑
另一映射考虑涉及什么服务当前被加载到硬件加速平面106中的加速部件上,例如,如在数据存储126中提供的当前分配信息中所反映的。例如,假定SMC 128寻求通过与本地主机部件相关联的租户功能实例来完成对于服务的请求。当该本地加速部件已经被配置为执行该服务时,SMC 128可以倾向于将所请求的服务分配给本地加速部件(其与本地主机部件相关联)。类似地,当在后台模式下操作以选择用于执行服务的保留的加速部件池时,当该部件已经被配置为执行该服务时,SMC 128可以倾向于将服务分配给加速部件。这个因素也与下面描述的迁移成本考虑相关。
c.图像可用性考虑
另一相关考虑涉及到底是否存在所请求的服务的配置图像。并不是所有的服务都是用于硬件加速的良好候选,所以并非所有请求的软件服务都具有对应的配置图像。通过立即指令主机部件以软件来执行服务,SMC 128可以在请求驱动模式下利用该考虑,其中该服务不能以硬件来实现。
d.加速益处考虑
另一映射考虑涉及是否可以预期通过在加速硬件上部署服务而不是由主机部件以软件执行功能来实现性能提升。如果性能益处有可能可忽略,则SMC 128可以指令本地主机部件以软件来实现所请求的服务。在后台模式下,如果可以预期可忽略的加速益处,则SMC 128可以拒绝创建专用于特定服务的加速部件池。
e.当前可用性考虑
另一映射考虑涉及所考虑的每个加速部件关于其处理所标识的服务的能力的可用容量(例如,如在提供可用性信息的数据存储1002中反映的)。如上所述,加速部件的可用性可以被指定为二进制是/否信息、百分位数信息等。加速部件的可用性还可以考虑对于加速部件等的未决请求,例如,其中该加速部件被调度以在未来执行所标识的处理。SMC 128可以利用这一考虑来确定将所考虑的给定加速部件配置为执行服务是否可行。
F.SLA考虑
另一映射考虑涉及与服务相关联的服务水平协议(SLA)。例如,与服务相关联的SLA可以指定一个或多个参数值,这些参数值反映服务将被递送给最终用户的所请求的速度,诸如通过指定将被允许的最坏情况的延迟性能、和/或其他最坏情况的性能参数值。SMC128可以选择一个或多个加速部件来满足服务的SLA要求,这可能需要选择一定数目的加速部件和/或选择某些类型的加速部件和/或选择这些加速部件的位置等。
g.需求类型考虑
另一映射考虑涉及与服务相关联的流量模式的性质。例如,一些服务的特征在于相对稳定的流量。其他服务表现出高度“突发”的流量,这表示它们受到流量的巨大或可能不可预测的高峰。在一个非限制性策略中,SMC 128可以设法避免将单个突发服务专用于单个加速部件(或多个部件),因为突发服务通常可能无法有效地利用专用部件的资源(例如,由于利用不足)。相反,SMC 128可以选择将多个突发服务分配给加速部件池。这样的分配策略基于以下前提:与多个服务相关联的间歇性突发不相关,并且可以合理地预测和考虑与这些突发服务中的若干相关联的平均需求,从而允许更有效地利用所分配的加速部件的资源。
h.历史需求考虑
另一映射考虑涉及与服务相关联的历史需求。在后台模式下,SMC 128将尝试分配足够数目的加速部件来满足对于服务的预期需求,其可以在一天、一周等内发生变化。SMC128也可以考虑对服务的需求变化的方式,例如,是通常突发性还是相对稳定(如上所述),不可预测的还是可预测的,趋势向上还是趋势向下等。
当处理特定请求时,SMC 128可以以不同的方式考虑需求信息。在一种情况下,当决定是否使用该加速部件来满足对于服务的当前请求时,SMC 128可以考虑与特定候选加速部件相关联的历史需求信息。例如,即将过载的加速部件可能不是能够满足请求的良好候选。SMC 128还可以利用这样的已知的需求模式来确定与当前请求相关联的可能的资源需求(其中这些需求未预先指定),然后将该信息用作确定如何最有效地处理请求的另一因素。
i.线路速率服务考虑
另一映射考虑涉及所考虑的服务是否为线路速率服务。线路速率服务是对以指定的速率在链路上(或通过某个其他分析点)流动的信息执行的服务,优选地没有延迟该信息的传输。SMC 128可以选择将线路速率服务靠近其相应的消费者,以确保满足与这些服务相关联的更高的处理需求。例如,当该服务远离线路服务的消费者时,例如由于与远程加速部件的联系所引起的延迟和/或由于与远程加速部件的交互引起的带宽过载等,线路速率服务可能变得不可操作。
j.负载平衡考虑
另一映射考虑涉及负载平衡。当处理对于服务的特定请求时,SMC 128将寻求以不会使数据处理系统102中的任何加速部件(和/或其他处理部件)负担过重的方式来向加速部件分配请求。这可以通过使用任何负载平衡策略将请求传播到提供服务的多个加速部件上来实现。类似地,当执行更一般的后台分配时,SMC 128将寻求以如下方式来在加速部件上分发服务:该方法使得没有一个加速部件(和/或与数据处理系统102相关联的其他计算资源)负担过重。
k.带宽考虑
另一映射考虑涉及数据处理系统102中的带宽。当处理对于服务的特定请求时,SMC 128将寻求以如下方式来将请求分配给加速部件:该方式不会使得数据处理系统102中的链路负担过重。类似地,当执行更一般的后台分配时,SMC 128将寻求以如下方式来分发服务:该方式不会使得数据处理系统102中的链路负担过重。
l.延迟考虑
另一映射考虑涉及在访问服务时发生的延迟。SMC 128将寻求以如下方式来提供服务:该方式使得访问服务所涉及的延迟在可接受的范围内。如上所述,如果服务距离服务的预期消费者太“远”,则线路速率服务可能有效地变得不可操作。一般而言,注意,在很多情况下,SMC 128可以通过将服务放置在与其预期的消费者相同的机架上并且优选地在与预期的消费者相同的服务器单元部件上来满足若干分配约束(诸如延迟、带宽等)。
m.CPU性能考虑
另一映射考虑涉及被放置在软件平面104中的主机部件上的负载。当处理特定请求时,SMC 128可以避免在本地主机部件上以软件来执行所请求的服务,如果这样做将使那个部件的CPU负担过重。类似地,当在后台模式下操作时,SMC 128可以尝试标识有贡献于CPU过载的任何软件相关服务,并且然后将该处理中的一些卸载到一个或多个加速部件。
n.迁移成本考虑
另一映射考虑涉及在以所考虑的特定方式重新配置硬件加速平面106时将产生的成本。这里,SMC 128将生成对执行重新配置所需要的时间量和/或其他资源的评估(例如,基于已知和预先存储的配置数据)。基于该知识,SMC 128然后将确定重新配置过程对于由数据处理系统102执行的其他功能将产生的影响。例如,当预测重新配置过程将干扰由数据处理系统102执行的关键过程时,SMC 128可以禁止重新配置过程。
o.功率和热考虑
另一映射考虑涉及功率和/或热效应。SMC 128可以查阅参考表等来确定当在特定候选加速部件上运行服务时将消耗的功率量和将生成的热量。SMC 128可以使用该信息来选择满足适当功率和/或热约束的分配选项。SMC 128还可以在做出其决策时查阅实时温度和功率测量。例如,如果在单个机架上执行服务将超过该机架的热极限,则SMC 128可以寻求在多个机架上分发服务。
p.货币考虑
另一映射考虑涉及货币考虑。在某些情况下,服务提供已知的货币益处(例如,如用广告收入、产品销售收入等度量的)。此外,在一个或多个加速部件上运行的服务可以具有已知的成本,诸如设备本身(或其用于运行服务的部分设备)的成本、向部件供电的成本、利用计算资源的成本(例如,由数据中心管理员评估)、进行其他服务的机会成本等。SMC128可以计算不同分配选项的货币益处和成本,并且在确定如何以及在何处分配服务时使用这个信息。在一种情况下,SMC 128可以利用这个考虑来最大化由数据中心提供的总体利润。
q.安全性考虑
另一映射考虑涉及将服务分配给一个或多个所提出的加速部件的安全隐患。例如,安全性考虑可以禁止将某一类型的两个服务放置在相同的加速部件上。替代地或另外地,安全性考虑可以禁止将服务相对于其消费者(例如,相对于消费服务的本地主机部件)放置在远程加速部件上。当确定如何在硬件加速平面106中分配服务时,SMC128可以考虑这些因素。
r.并置考虑
另一考虑涉及两个或更多个服务通常在同一计算设备或其他平台上一起被托管或使用的方式。例如,考虑假定环境,其中很多用户结合加密服务来使用文档压缩服务,例如,通过首先使用文档压缩服务来压缩文档,并且然后使用加密服务来加密已压缩文档。在这样的并置信息可用的情况下,SMC 128可以将共同分组的服务分配给相同的加速部件或者相同的机架等。这样做可以是有利的,例如,以促进硬件加速平面106中的对服务的管理。可以通过检查数据处理系统102内的实际使用模式和/或通过查阅关于使用习惯的更一般的统计信息来获得并置信息。
s.接收到的请求考虑
另一考虑涉及实体(诸如本地加速部件、本地主机部件、局部管理部件、租户功能实例等)是否已经做出对于特定种类的分配的请求。例如,租户功能实例可以要求SMC 128授予其对在其本地加速部件上运行的服务的专用使用。SMC 128可以将这个请求与上述所有其他因素进行平衡。
以上考虑通过举例而不是限制的方式来引用。其他实现可以考虑到其他考虑,和/或可以省略上述一个或多个考虑。
注意,以上描述有时假定SMC 128使用单个加速部件来实现服务的整个实例。然而,在多部件服务中,加速部件的集合实现单个服务。也就是说,集合中的每个加速部件实现多部件服务的一部分。在将多部件服务分配给加速部件时,SMC 128可以应用特殊考虑。
例如,SMC 128可以考虑多部件的加速部件在数据处理系统102中分布的方式,因为该因素可能影响多部件服务(以及数据处理系统102作为整体)在延迟、带宽、负载平衡等方面的性能。例如,SMC128可以选择将与多部件服务相关联的加速部件的集合分配给单个机架或机架组,以减少延迟和带宽瓶颈。通过这样做,例如,SMC 128可以减少交换结构的较高节点中的带宽。
还注意,以上描述是在整个服务的分配的上下文中给出的。但是,代替或除了向单个处理元件分配整个服务,SMC 128还可以以动态方式向各种硬件和/或软件处理元件分配和重新分配任何大小的任何服务的分段。
SMC 128可以使用不同的算法来处理上述所有映射考虑以得出最终结论。在一种技术中,一旦被调用,SMC 128可以应用基于规则的过程来确定如何在可用加速部件池之间分配服务。在一个实现方式中,规则可以被构造为IF-THEN决策的图。通常,根据与这些系统相关联的环境特定的考虑,不同的规则可以适用于不同的数据处理系统。
为了引用一个代表性情况,SMC 128可以通过首先确定所请求的服务是否已经存在于与本地主机部件相关联的本地加速部件上来处理在本地主机部件上运行的租户功能实例的请求。如果是,则SMC128将确定服务是线路速率服务还是具有相对较高处理需求的其他服务。如果是,则SMC 128将使用本地加速部件来完成租户功能的请求,除非有安全性约束使得该分配不适当。另一方面,如果服务是不影响租户功能操作的关键性能指标的相对非关键的任务,则SMC 128可以选择使用远程加速部件来完成租户功能的请求,从而释放本地加速部件以处理更紧急的工作。当在后台模式下为加速部件分配服务时,SMC 128可以执行类似的多因素分析。
在其他算法方法中,在遇到触发事件时,SMC 128可以枚举当前时间的用于服务的可能的分配选项。每个选项反映服务到数据处理系统102内的特定可行的加速部件集合(其中该集合包括一个或多个加速部件)的分配。然后,SMC 128可以向每个选项分配反映上述考虑的加权组合的得分。与这些得分相关联的权重可以凭经验针对特定处理环境来生成。然后,SMC 128可以选择并且应用具有最高(最有利)得分的分配选项。
在其他方法中,SMC 128可以采用由机器学习过程产生的模型来做出分配决定。基于反映管理功能122的先前评估的性能的训练集合来训练该模型。也就是说,训练集合可以指定在数据处理系统102中遇到的不同的映射考虑、以及被认为是期望的和不期望的(如由人类评估者和/或其他标记技术评估的)所得到的分配决策。所学习的模型反映输入映射考虑与期望的(和不期望的)分配决策之间的关系。
在其他方法中,SMC 128可以将分配任务视为在受到指定约束的情况下在搜索空间内寻找最优解的问题。在当前情况下,约束对应于上述映射考虑、或其某个子集。SMC 128可以使用各种技术来快速地搜索空间(诸如最佳匹配搜索技术)以寻找最优解或至少令人满意的解,即使不是最优的。
还注意,与SMC 128相关联的处理可以与任何现有的调度、资源分配和/或预测算法“叠置”或以其他方式集成。例如,假定本地主机部件具有已经发出多个相应服务请求的多个租户功能实例。可以使用任何传统的资源算法来确定请求要被处理的顺序。例如,传统的资源算法可以基于先进先出规则、任何类型的公平性演算、任何基于优先级的请求排序(例如,其中某些租户功能实例可能由于其任务的紧迫性、它们的一般的特权地位和/或其他因素而优先于其他实例)等来处理请求。一旦传统的资源算法选择了要处理的请求,则SMC 128然后可以应用上述考虑来确定用于处理请求的适当资源。当更一般地考虑在其后台操作模式下的多个服务之间的竞争需求时,SMC 128可以执行类似的分配功能。
在另一种情况下,SMC 128可以通过规划何时需要服务(例如,基于历史需求模式)来将预测分析集成到上述逻辑中。然后,SMC 128可以在适当的时间自动且主动地将这些服务加载到加速平面106中。
在任何上述情况下,SMC 128还可以基于在任何给定时间待决(和/或预期)的请求的整体来做出分配决定(与孤立地考虑每个请求相反)。例如,假定SMC 128观察到存在对于特定服务的很多待决请求。作为响应,SMC 128可以保留加速部件池来处理这些请求。在另一种情况下,SMC 128可以在做出其分配决策时考虑与待决请求相关联的消费者的相应位置,例如通过倾向于选择接近很多未决消费者的部件。当更普遍地考虑对于不同服务的主要需求时,SMC 128可以在后台模式下执行类似的分析。
最后,以上描述是在放置确定逻辑1008的说明性上下文中给出的,放置确定逻辑1008确定所分配的部件在数据处理系统102内的位置。与上述类似的分析可以应用于SMC102的操作的其他方面。例如,状态确定逻辑1004可以得出结论,基于以下方式将服务到部件分配标记为保留(相对于非保留)是恰当的:(a)确定存在对于服务的显著的历史需求;和/或(b)确定该服务相对重要(例如,由于货币考虑和/或其他因素);和/或(c)确定消费者本身由于任何原因是重要的(例如,因为其出于任何环境特定的原因而在数据处理系统102中具有特权);和/或(d)确定服务施加相对严格的要求(由于SLA考虑、线路速率考虑等),等等。
状态确定逻辑1004还可以基于上述相同的分析来确定服务是否应该专用于一个或多个特定消费者(而不是完全共享),但是在特定消费者的上下文中给出。例如,状态确定逻辑1004可以基于确定该特定消费者在短时间段内经常请求服务来决定授权该特定消费者对于在加速部件上运行的服务的专用访问。
前进到图26,该图对应于过程2602,过程2602示出了图10的SMC 128在请求驱动模式下的一种操作方式的概况,而不涉及用于实现这个部件的控制架构并且特别地涉及放置确定逻辑1010的操作。在框2604,SMC 128确定其是否已经从在本地主机部件(或更一般而言,以任何方式实现的任何第一本地部件)上运行的租户功能实例接收到对于服务的请求。在框2606,SMC 128确定是否适合使用本地加速部件来执行所请求的服务。如果是,则在框2608,SMC 128指令本地主机部件使用本地加速部件来执行服务。在框2610,SMC128确定是否适合使用一个或多个远程加速部件来执行所请求的服务。如果是,则在框2612,SMC 128指令本地主机部件使用远程加速部件来执行所请求的服务。主机部件可以经由其本地加速部件以上述方式来访问这些远程加速部件。在框2614,SMC 128指令本地主机部件自身以软件来执行所请求的服务,前提是上述选项都不适合。
图27是示出实现图27的过程的一种方式的过程2702。特别地,过程2702从与全局管理部件(MG)交互的局部管理部件(ML)的角度来表达,尽管其他架构也可以用于执行图27所示的决策过程。
在框2704,局部管理部件确定是否已经从在本地主机部件上运行的租户功能实例接收到对于服务的请求。在框2706,局部管理部件确定是否适合使用本地加速部件执行所请求的服务。如果是,则在框2708,局部管理部件指令本地加速部件使用本地加速部件来执行服务。或者,在框2710,局部管理部件联系全局管理部件以确定远程加速部件执行所请求的服务是否适合。如果是,则全局管理部件返回与该服务相关联的地址。在框2712,局部管理部件确定地址是否已经被标识。如果是,则在框2714,局部管理部件指令本地主机部件使用已经提供的地址来联系所标识的远程加速部件。如果没有提供地址,则在框2716,局部管理部件(或全局管理部件)指令本地主机部件自身以软件来执行服务。
尽管图26和27中未示出,但是每个加速部件(或与其相关联的局部管理部件)可以在任何基础上(例如,周期性地和/或在事件驱动的基础上)向管理功能122(例如,向全局管理部件)报告其可用容量。可用容量可以以任何方式来指定,诸如指示加速部件是否可用的二进制信息、或者反映加速部件的总的可用处理资源的部分的百分比信息。在其他情况下,加速部件可以按照逐个服务的方式来报告其容量。此外,本地实体(诸如租户功能实例)可以具体地请求特定种类的分配,例如通过请求在其本地加速部件上运行服务。
图28-30是示出图10的SMC 128的操作的决定和管理方面的过程(2802,3002),例如从全局管理部件(MG)或其他实现方式的观点来看。
在图28的框2804,SMC 102确定是否已经接收到请求(例如,从局部管理部件),该请求要求可以找到所标识的服务的地址。换言之,框2804确定何时已经接收到事件,该事件触发当操作于其请求驱动模式下时SMC 128的操作。此外,在一个实现方式中,框2804补充图27的框2710,在框2804,局部管理部件对全局管理部件进行这样的查询。
在框2806,SMC 102确定其是否已经接收到通常需要在硬件加速平面106中重新分配一个或多个服务的触发事件。换言之,框2806询问是否已经发生事件,该事件触发当操作于其后台模式下时SMC128的操作。但是如上所述,框2804中的请求驱动调用也可能需要后台分析作为其部件。
在框2808,SMC 128直接或间接地响应于已经接收到任何触发事件来确定一个或多个加速分配。SMC 128可以间接地响应于触发事件,例如通过将其缓冲并且在稍后的时间对其起作用。在框2810,如果实际上分配需要这样的配置,则SMC 128可以可选地调用配置部件1014来配置一个或多个加速部件。在框2812,SMC 128将信息和/或指令传送到将具有执行分配的效果的适当的接收者实体。例如,SMC 128可以将地址传送到本地主机部件,这使得其能够访问远程加速部件。
图29详细说明了框2808中可能涉及的分析的不同部分。在框2902,SMC 102可以确定其分配的状态(例如,保留与非保留、专用与完全共享等)。在框2904,SMC 102可以确定要分配以满足触发事件的部件的数目(其中触发事件对应于特定请求或需求的一般变化等)。虽然未示出,但是SMC 102还可以确定要选择的加速部件的类型。在框2906,SMC 102确定数据处理系统102内的加速部件的放置,例如通过选择数据处理系统102内的特定加速部件。
在图30的框3004,SMC 128确定是否已经接收到与至少一个加速部件在数据处理系统102中的利用有关的更新。例如,框3004可能需要确定是否已经从加速部件(或通过局部管理部件)接收到利用信息,利用信息以上述方式报告加速部件的当前备用容量。在框3006,SMC 128确定其本身是否刚刚发布影响一个或多个加速部件的分配决策。例如,在框3006,SMC 128可以已经做出一个或多个服务到部件分配,并且还可以进一步限定这些相应分配的状态(例如,保留与非保留、专用与完全共享等)。在框3008,SMC 128更新资源利用信息以反映框3004和3006的事件。例如,SMC 128可以更新存储在图10的数据存储1002中的可用性信息。
C.硬件加速部件的说明性实现
图31示出了实现图1的数据处理系统中的加速部件3102的一种方式,其可以在物理上实现为FPGA器件。注意,下面给出的细节是以说明而非限制的精神来阐述的;其他数据处理系统可以使用具有与图31所示的相比以一种或多种方式变化的架构的加速部件。此外,其他数据处理系统可以采用包括具有不同类型的加速部件的异构设计。
从高层观点来看,加速部件3102可以被实现为具有不同功能层的层级结构。在最低级别,加速部件3102提供“外壳”,其提供跨越大多数应用场景通常保持相同的基本界面相关部件。位于外壳内部的核心部件3104可以包括“内壳”和应用逻辑3106。内壳对应于核心部件3104中除了应用逻辑3106之外的所有资源,并且表示在某个应用场景集合内保持相同的第二级别资源。应用逻辑3106本身表示最容易受到改变的最高级别的资源。但是注意,加速部件3102的任何部件在技术上可以重新配置。
在操作中,应用逻辑3106以与软件实现的应用和其底层操作系统资源交互的方式类似的方式来与外壳资源和内壳资源交互。从应用开发的角度来看,使用常见的外壳资源和内壳资源可以使开发人员不必为他或她创建的每个应用重新创建这些常见部件。这种策略还降低了开发人员可能会以在整个数据处理系统102内引起问题的方式改变核心内外壳功能的风险。
首先参考外壳,加速部件3102包括用于将加速部件3102耦合到网络接口控制器(经由NIC接口3110)和本地架顶式交换机(经由TOR接口3112)的桥接器3108。桥接器3108支持两种模式。在第一模式下,桥接器3108提供允许来自NIC或TOR的流量流入加速部件3102并且允许来自加速部件3102的流量流出到NIC或TOR的数据路径。加速部件3102可以对其“拦截”的流量执行任何处理,诸如压缩、加密等。在第二模式下,桥接器3108支持允许流量在NIC与TOR之间流动而不由加速部件3102进一步处理的数据路径。在内部,桥接器可以由缓冲所接收的分组的各种FIFO(3114,3116)、以及将分组路由到其期望的目的地的各种选择器和仲裁逻辑组成。旁路控制部件3118控制桥接器3108在第一模式还是第二模式下操作。
存储器控制器3120掌控加速部件3102与本地存储器3122(诸如DRAM存储器)之间的交互。存储器控制器3120可以执行纠错作为其服务的部分。
主机接口3124提供使得加速部件能够与本地主机部件(图31中未示出)交互的功能。在一个实现方式中,主机接口3124可以结合直接存储器访问(DMA)使用高速外围部件互连(PCIe)来与本地主机部件交换信息。
最后,壳可以包括各种其他特征3126,诸如时钟信号发生器、状态LED、纠错功能等。
在一个实现方式中,内壳可以包括用于在加速部件3102的各个内部部件之间以及在加速部件3102与外部实体之间(经由传输部件3130)路由消息的路由器3128。每个这样的端点与相应的端口相关联。例如,路由器3128耦合到存储器控制器3120、主机接口1120、应用逻辑3106和传输部件3130。
传输部件3130形成分组用于传输到远程实体(诸如远程加速部件),并且从远程加速部件(诸如远程加速部件)接收分组。
3端口交换机3132在被激活时通过在NIC与TOR之间以及在NIC或TOR与和加速部件3102本身相关联的本地端口之间路由分组来接管桥接器3108的功能。
最后,可选的诊断记录器3134将与路由器3128、传输部件3130和3端口交换机3132执行的操作有关的事务信息存储在循环缓冲器中。例如,事务信息可以包括关于分组的来源和目的地IP地址的数据、主机特定的数据、时间戳等。技术人员可以研究事务信息的日志以尝试诊断加速部件3102中的故障或次优性能的原因。
图32示出了包括单独的可配置域(3204,3206,...)的加速部件3202。配置部件(例如,图10的配置部件1014)可以配置每个可配置域而不影响其他可配置域。因此,配置部件1014可以配置一个或多个可配置域,而其他可配置域正基于它们各自的配置执行操作,这些配置不受干扰。
在一些实现中,图1的数据处理系统102可以动态地重新配置其加速部件以解决在部分B中描述的任何映射考虑。该重新配置可以在部分和/或全服务的基础上进行,并且可以在周期性和/或事件驱动的基础上进行。实际上,在一些情况下,数据处理系统102可以通过重新配置其加速逻辑来显现出连续地适应数据处理系统102中的变化条件。
C.1本地链接
图33示出了本地主机部件3302可以经由图31所示的主机接口3124向其本地加速部件3304转发信息(例如,结合DMA存储器传输使用PCIe)的功能。在一个非限制性协议中,在操作(1)中,主机逻辑3306将要处理的数据放置到与主机逻辑3306相关联的主存储器中的内核固定输入缓冲器3308中。在操作(2)中,主机逻辑3306指令加速部件3304检索数据并且开始对其处理。主机逻辑的线程然后被置于睡眠状态,直到其从加速部件3304接收到通知事件,或者它继续异步地处理其他数据。在操作(3)中,加速部件3304从主机逻辑的存储器传送数据,并且将其放在加速部件输入缓冲器3310中。
在操作(4)和(5)中,应用逻辑3312从输入缓冲器3310检索数据,对其处理以生成输出结果,并且将输出结果放置在输出缓冲器3314中。在操作(6)中,加速部件3304将输出缓冲器3314的内容复制到主机逻辑的存储器中的输出缓冲器中。在操作(7)中,加速部件通知主机逻辑3306该数据准备好被其检索。在操作(8)中,主机逻辑线程唤醒并且消耗输出缓冲器3316中的数据。然后,主机逻辑3306可以丢弃输出缓冲器3316的内容,这使得加速部件3304能够在下一事务中重用它。
C.2路由器
图34示出了图31中介绍的路由器3128的一个实现方式。路由器包括用于从相应端口接收消息的任何数目的输入单元(这里为4个,3402、3404、3406、3408)和用于将消息转发到相应端口的输出单元(这里为4个,3410、3412、3414、3416)。如上所述,与端口相关联的端点包括存储器控制器3120、主机接口3124、应用逻辑3106和传输部件3130。交叉开关部件3418基于与消息相关联的地址信息来将消息从输入端口转发到输出端口。更具体地,消息由多个“微片(flit)”组成,并且路由器3128以逐个微片的方式发送消息。
在一个非限制性实现中,路由器3128支持多个虚拟信道(诸如8个),用于在同一物理链路上传输不同类别的业务。也就是说,路由器3128可以为其中由应用逻辑3106实现多个服务的那些场景支持多个业务类别,并且这些业务需要在单独的业务类别上通信。
路由器3128可以使用基于信用的流技术来掌控对路由器的资源(例如,其可用的缓冲器空间)的访问。在该技术中,输入单元(3402-3408)向上游实体提供与其缓冲器中可用的微片的确切数目相对应的信用。信用授权上游实体有权将其数据传输到输入单元(3402-3408)。更具体地,在一个实现方式中,路由器3128支持可以在多个虚拟信道之间共享的“弹性”输入缓冲器。输出单元(3410-3416)负责跟踪其下游接收器中的可用信用,并且向正在请求向给定输出端口发送微片的任何输入单元(3402-3408)提供授权。
C.3传输部件
图35示出了在图31中介绍的传输部件3130的一个实现方式。传输部件3130可以提供寄存器接口来在节点之间建立连接。也就是说,每个这样的连接是单向的,并且将源部件上的发送队列链接到目的地部件上的接收队列。软件过程可以通过在传输部件3130可以传输或接收数据之前静态地分配它们来建立连接。数据存储3502存储控制连接状态的两个表:发送连接表和接收连接表。
分组处理部件3504处理从路由器3128到达的以远程端点(例如,另一加速部件)为目的地的消息。它通过缓冲和打包消息来实现。分组处理部件3504还处理从某个远程端点接收并且以路由器3128为目的地的分组。
对于从路由器3128到达的消息,分组处理部件3504将每个消息请求与发送连接表中的发送连接表条目相匹配,例如,使用与消息相关联的报头信息和虚拟信道(VC)信息作为查询项目,如由路由器3128提供的。分组处理部件3504使用从发送连接表条目检索的信息(诸如序列号、地址信息等)来构建其发送到远程实体的分组。
更具体地,在一个非限制性方法中,分组处理部件3504将分组封装在UDP/IP以太网帧中,并且将它们发送到远程加速部件。在一个实现方式中,分组可以包括以太网报头,随后是IPv4报头,随后是UDP报头,随后是传输报头(具体地与传输部件3130相关联),随后是有效载荷。
对于从网络到达的分组(例如,如在3端口交换机3132的本地端口上接收到的),分组处理部件3504将每个分组与在分组报头中提供的接收可连接表条目相匹配。如果存在匹配,则分组处理部件检索条目的虚拟信道字段,并且使用该信息将接收到的消息转发到路由器3128(根据由路由器3128使用的信用流技术)。
故障处理部件3506缓冲所有发送的分组,直到它从接收节点(例如,远程加速部件)接收到确认(ACK)。如果针对一连接的ACK在规定的超时期间内没有到达,则故障处理部件3506可以重传该分组。故障处理部件3506将重复这样的重传指定次数(例如,128次)。如果在所有这样的尝试之后分组保持未确认,则故障处理部件3506可以将其丢弃并且释放其缓冲器。
C.4 3端口交换机
图36示出了3端口交换机3132的一个实现方式。3端口交换机3132操作以将加速部件生成的网络分组安全地插入(和移除)到数据中心网络上,而不影响主机到TOR网络流量。
3端口交换机3132连接到NIC接口3110(对应于主机接口)、TOR接口3112、和与本地加速部件3102本身相关联的本地接口。3端口交换机3132可以被概念化为包括用于分别从主机部件和TOR交换机接收分组并且用于在本地加速部件处接收分组的接收接口(3602,3604,3606)。3端口交换机3132还包括用于分别向TOR交换机和主机部件提供分组并且接收由本地加速部件传输的分组的传输接口(3608,3610,3612)。
分组分类器(3614,3616)例如基于由分组指定的状态信息来确定从主机部件或TOR交换机接收的分组的类别。在一个实现方式中,每个分组被分类为属于无损流(例如,远程直接存储器访问(RDMA)业务)或有损流(例如,传输控制协议/因特网协议(TCP/IP)业务))。属于无损流的业务不容忍分组丢失,而属于有损流的业务可以容忍一些分组丢失。
分组缓冲器(3618,3620)根据它们所属的业务类别将传入分组存储在不同的相应缓冲器中。如果缓冲器中没有可用空间,则分组将被丢弃。(在一个实现方式中,3端口交换机3132不针对本地加速部件(经由本地端口)提供的分组而提供分组缓冲,因为应用逻辑3106可以通过使用“反向按压”来调节分组流。)仲裁逻辑3622在可用分组中选择并且传输所选择的分组。
如上所述,目的地为本地加速部件的流量被封装在固定端口号上的UDP/IP分组中。3端口交换机3132检查传入分组(例如,如从TOR接收的)以确定它们是否为正确端口号上的UDP分组。如果是,则3端口交换机3132在本地RX端口接口3606上输出分组。在一个实现方式中,到达本地TX端口接口3612的所有流量都从TOR TX端口接口3608被发送出去,但是也可以被发送到主机TX端口接口3610。还注意,图36指示加速部件3102拦截来自TOR而非来自主机部件的流量;但是它也可以被配置为拦截来自主机部件的流量。
PFC处理逻辑3624允许3端口交换机3132将优先级流控制帧插入被传输给TOR或主机部件的业务流中。也就是说,对于无损流量类别,如果分组缓冲器填满,则PFC处理逻辑3624向链路伙伴发送PFC消息,以请求暂停该类别上的流量。如果在主机RX端口接口3602或TOR RX端口接口3604上接收到用于无损流量类别的PFC控制帧,则3端口交换机3132将停止在接收到控制消息的端口上发送分组。
C.5说明性主机部件
图37示出了对应于图1所示的任何主机部件(S)的主机部件3702的一个实现方式。主机部件3702可以包括一个或多个处理设备3704(诸如一个或多个中央处理单元(CPU)),每个处理设备3704可以实现一个或多个硬件线程。主机部件3702还可以包括用于存储诸如代码、设置、数据等任何种类的信息的任何存储资源3706。在非限制的意义上,例如,存储资源3706可以包括以下中的任一项:任何类型的RAM、任何类型的ROM、闪存设备、硬盘、光盘等。更一般地,任何存储资源都可以使用任何技术来存储信息。此外,任何存储资源可以提供对信息的易失性或非易失性保留。此外,任何存储资源可以表示主机部件3702的固定或可移除部件。在一种情况下,当处理设备3704执行存储在任何存储资源或存储资源组合中的相关联的指令时,主机部件3702可以执行与本地租户功能相关联的任何操作。主机部件3702还包括用于与诸如硬盘驱动机构、光盘驱动机构等任何存储资源交互的一个或多个驱动机构3708。
主机部件3702还包括用于接收各种输入(经由输入设备3712)和用于提供各种输出(经由输出设备3714))的输入/输出模块3710。一个特定的输出机制可以包括呈现设备3716和相关联的图形用户界面(GUI)3718。主机部件3702还可以包括用于经由一个或多个通信管道3722与其他设备交换数据的一个或多个网络接口3720。一个或多个更多的通信总线3724将上述部件在通信上耦合在一起。
通信管道3722可以以任何方式实现,例如通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信管道3722可以包括由任何协议或协议组合管控的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
以下概述提供了本文中阐述的技术的说明性方面的非穷举列表。
根据第一方面,描述了一种数据处理系统,其包括两个或更多个主机部件,每个主机部件使用一个或多个中央处理单元来执行机器可读指令,两个或更多个主机部件共同提供软件平面。数据处理系统还包括共同提供硬件加速平面的两个或更多个硬件加速部件。数据处理系统还包括被配置为维持第一数据存储的位置确定部件,第一数据存储提供当前分配信息,其描述当前分配给数据处理系统内的部件的服务的当前位置。数据处理系统还包括服务映射部件,服务映射部件被配置为:维持提供描述可用硬件加速部件池的可用性信息的第二数据存储;接收触发事件;直接或间接地响应于触发事件,基于至少一个映射考虑并且基于可用性信息来确定服务到硬件平面中的至少一个被选择的硬件加速部件的指派;以及响应于指派来更新当前分配信息。数据处理系统还包括用于配置被选择的硬件加速部件中的一个或多个以执行服务的配置部件,前提是被选择的硬件加速部件尚未被配置为执行服务,并且前提是硬件加速部件在可用硬件加速部件池中被标识。软件平面中的每个主机部件被配置为访问由被选择的硬件加速部件提供的服务。
根据第二方面,触发事件对应于与服务相关联的需求的变化或对服务的特定请求。
根据第三方面,服务映射部件还被配置为:接收与数据处理系统内的硬件加速部件的利用有关的更新;以及响应于与利用有关的更新的接收来更新第二数据存储中的可用性信息。
根据第四方面,配置部件被配置为通过从全局管理部件向被选择的硬件加速部件发送配置流来配置被选择的硬件加速部件。
根据第五方面,配置部件被替代地配置为通过向与被选择的硬件加速部件相关联的局部管理部件发送指令来配置被选择的硬件加速部件,从而局部管理部件向被选择的硬件加速部件发送配置流。
根据第六方面,服务映射部件还被配置为确定指派的状态,状态指定掌控在数据处理系统内被指派的服务的处理的一个或多个条件。
根据第七方面,服务映射部件被配置为至少部分通过以下方式来确定指派:确定组成与上述被选择的硬件加速部件相关联的分组的加速部件的数目;以及通过选择构成分组的一个或多个特定加速部件来确定服务在数据处理系统内的位置。
根据第八方面,一个映射考虑涉及与服务相关联的至少一个消费者相对于被指派为提供服务的硬件加速部件的位置。
根据第九方面,一个映射考虑涉及指派满足与服务相关联的服务水平协议的程度。
根据第十方面,一个映射考虑涉及与和其他潜在指派相关联的负载平衡效应相比,响应于上述指派而在数据处理系统中引起的负载平衡效应。
根据第十一方面,一个映射考虑涉及与和其他潜在指派相关联的带宽相关效应相比,响应于指派而在数据处理系统中引起的带宽相关效应。
根据第十二方面,一个映射考虑涉及与和其他潜在指派相关联的功率和/或热相关效应相比,响应于指派而在数据处理系统中引起的功率和/或热相关效应。
根据第十三方面,一个映射考虑涉及与和其他潜在指派相关联的安全性相关暗示相比,与服务到上述至少一个所选择的硬件加速部件的指派相关的安全性相关暗示。
根据第十四方面,一种映射考虑涉及服务是否是线路速率服务的确定。
根据第十五方面,一个映射考虑涉及与服务相关联的历史需求的性质。
根据第十六方面,一个映射考虑涉及与和其他潜在指派相关联的货币成本相比,与上述指派相关联的货币成本。
根据第十七方面,一个映射考虑涉及与和其他潜在指派相关联的迁移成本相比,将服务从当前分配迁移到与指派相关联的新分配的成本。
根据第十八方面,描述了一种用于在数据处理系统内分配服务的方法。该方法包括接收触发事件,该触发事件与数据处理系统中影响服务的条件、和/或对于服务的特定请求相对应。该方法还包括直接或间接地响应于触发事件而至少部分基于可用性信息来确定服务到数据处理系统中的至少一个被选择的硬件加速部件的指派,可用性信息描述可用硬件加速部件池。每个硬件加速部件本地耦合到至少一个主机部件,并且每个主机部件使用一个或多个中央处理单元来执行机器可读指令。该方法还包括配置所选择的硬件加速部件中的一个或多个以执行服务,前提是所选择的硬件加速部件尚未被配置为执行服务,并且前提是所选择的硬件加速部件在可用性信息中标识。该方法还包括响应于指派来更新当前分配信息,当前分配信息描述当前分配给数据处理系统内的部件的服务的当前位置。
根据第十九方面,该方法还包括:接收与数据处理系统内的硬件加速部件的利用有关的更新;以及响应于上述更新的接收来更新可用性信息。
根据第二十方面,描述至少一种实现服务映射部件的设备,其包括被配置为接收与数据处理系统内的硬件加速部件的利用有关的更新的逻辑。每个硬件加速部件本地耦合到至少一个主机部件,并且每个主机部件使用一个或多个中央处理单元来执行机器可读指令。该设备还包括被配置为响应于接收到与利用有关的更新来更新描述可用硬件加速部件池的可用性信息的逻辑。该设备还包括被配置为接收触发事件的逻辑、以及被配置为直接或间接地响应于触发事件而至少部分基于可用性信息来确定服务到数据处理系统中的至少一个被选择的硬件加速部件的指派的逻辑。该设备还包括被配置为配置被选择的硬件加速部件中的一个或多个以执行服务的逻辑,前提是被选择的硬件加速部件尚未被配置为执行服务,并且前提是被选择的硬件加速部件在可用的硬件加速部件池中被标识。
第二十一方面对应于上述第一至第二十方面的任何组合(例如,任何排列或子集)。
第二十二方面对应于与第一到二十一方面相关联的任何方法对应物、设备对应物、系统对应物、装置对应物、计算机可读存储介质对应物、数据结构对应物、制品对应物、图形用户界面呈现对应物等。
最后,虽然已经以结构特征和/或方法动作特有的语言描述了主题,但是应当理解,所附权利要求中限定的主题不一定限于上述的特定特征或动作。相反,上述具体特征和动作被公开作为实现权利要求的示例形式。

Claims (15)

1.一种数据处理系统,包括:
两个或更多个主机部件,所述两个或更多个主机部件中的每个主机部件使用一个或多个中央处理单元来执行机器可读指令,所述两个或更多个主机部件共同提供软件平面;
两个或更多个硬件加速部件,所述两个或更多个硬件加速部件共同提供硬件加速平面;
位置确定部件,其被配置为维持第一数据存储,所述第一数据存储提供当前分配信息,所述当前分配信息描述当前被分配给所述数据处理系统内的部件的服务的当前位置;
服务映射部件,其被配置为:
维持第二数据存储,所述第二数据存储提供可用性信息,所述可用性信息描述可用硬件加速部件池;
接收触发事件;
直接或间接地响应于所述触发事件,基于至少一个映射考虑并且基于所述可用性信息来确定服务到所述硬件平面中的至少一个被选择的硬件加速部件的指派;以及
响应于所述指派来更新所述当前分配信息;以及
配置部件,其用于配置所述至少一个被选择的硬件加速部件中的一个或多个被选择的硬件加速部件以执行所述服务,前提是所述至少一个被选择的硬件加速部件中的所述一个或多个被选择的硬件加速部件尚未被配置为执行所述服务,并且前提是所述至少一个被选择的硬件加速部件中的所述一个或多个被选择的硬件加速部件在所述可用硬件加速部件池中被标识,
所述软件平面中的每个主机部件被配置为访问由所述至少一个被选择的硬件加速部件提供的所述服务。
2.根据权利要求1所述的数据处理系统,其中所述服务映射部件还被配置为:
接收与所述数据处理系统内的硬件加速部件的利用有关的更新;以及
响应于与利用有关的所述更新的接收来更新所述第二数据存储中的所述可用性信息。
3.根据权利要求1所述的数据处理系统,其中所述配置部件被配置为通过从全局管理部件向被选择的硬件加速部件发送配置流来配置所述被选择的硬件加速部件。
4.根据权利要求1所述的数据处理系统,其中所述配置部件被配置为通过向与被选择的硬件加速部件相关联的局部管理部件发送指令来配置所述被选择的硬件加速部件,从而所述局部管理部件向所述被选择的硬件加速部件发送配置流。
5.根据权利要求1所述的数据处理系统,其中所述服务映射部件还被配置为确定所述指派的状态,所述状态指定掌控在所述数据处理系统内被指派的所述服务的处理的一个或多个条件。
6.根据权利要求1所述的数据处理系统,其中所述服务映射部件被配置为至少部分通过以下方式来确定所述指派:
确定组成与所述至少一个被选择的硬件加速部件相关联的分组的加速部件的数目;以及
通过选择构成所述分组的一个或多个特定加速部件来确定所述服务在所述数据处理系统内的放置。
7.根据权利要求1所述的数据处理系统,其中一个映射考虑涉及与所述服务相关联的至少一个消费者相对于被指派为提供所述服务的硬件加速部件的位置。
8.根据权利要求1所述的数据处理系统,其中一个映射考虑涉及所述服务是否为线路速率服务的确定。
9.一种用于在数据处理系统内分配服务的方法,包括:
接收触发事件,所述触发事件与所述数据处理系统中影响所述服务的条件、和/或对于所述服务的特定请求相对应;
直接或间接地响应于所述触发事件,至少部分基于可用性信息来确定所述服务到所述数据处理系统中的至少一个被选择的硬件加速部件的指派,所述可用性信息描述可用硬件加速部件池,
每个硬件加速部件本地耦合到至少一个主机部件,并且每个主机部件使用一个或多个中央处理单元来执行机器可读指令;
配置所述至少一个被选择的硬件加速部件中的一个或多个被选择的硬件加速部件以执行所述服务,前提是所述至少一个被选择的硬件加速部件中的所述一个或多个被选择的硬件加速部件尚未被配置为执行所述服务,并且前提是所述至少一个被选择的硬件加速部件中的所述一个或多个被选择的硬件加速部件在所述可用性信息中被标识;以及
响应于所述指派来更新当前分配信息,所述当前分配信息描述当前被分配给所述数据处理系统内的部件的服务的当前位置。
10.至少一种实现服务映射部件的设备,包括:
被配置为接收与数据处理系统内的硬件加速部件的利用有关的更新的逻辑,每个硬件加速部件本地耦合到至少一个主机部件,并且每个主机部件使用一个或多个中央处理单元来执行机器可读指令;
被配置为响应于接收到与利用有关的所述更新来更新可用性信息的逻辑,所述可用性信息描述可用硬件加速部件池;
被配置为接收触发事件的逻辑;以及
被配置为直接或间接地响应于所述触发事件而至少部分地基于所述可用性信息来确定服务到所述数据处理系统中的至少一个被选择的硬件加速部件的指派的逻辑;以及
被配置为配置所述至少一个被选择的硬件加速部件中的一个或多个被选择的硬件加速部件以执行所述服务的逻辑,前提是所述至少一个被选择的硬件加速部件中的所述一个或多个被选择的硬件加速部件尚未被配置为执行所述服务,并且前提是所述至少一个被选择的硬件加速部件中的所述一个或多个被选择的硬件加速部件在所述可用硬件加速部件池中被标识。
11.根据权利要求1所述的数据处理系统,其中一个映射考虑涉及所述指派满足与所述服务相关联的服务水平协议的程度。
12.根据权利要求1所述的数据处理系统,其中一个映射考虑涉及和其他潜在指派相关联的负载平衡效应相比,响应于所述指派而在所述数据处理系统中引起的负载平衡效应。
13.根据权利要求1所述的数据处理系统,其中一个映射考虑涉及和其他潜在指派相关联的带宽相关效应相比,响应于所述指派而在所述数据处理系统中引起的带宽相关效应。
14.根据权利要求1所述的数据处理系统,其中一个映射考虑涉及与所述服务相关联的历史需求的性质。
15.根据权利要求9所述的方法,其中所述方法还包括:
接收与所述数据处理系统内的硬件加速部件的利用有关的更新;以及
响应于所述更新的所述接收来更新所述可用性信息。
CN201680021987.2A 2015-04-17 2016-04-07 在具有硬件加速平面和软件平面的系统中提供服务 Withdrawn CN107533481A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562149488P 2015-04-17 2015-04-17
US62/149,488 2015-04-17
US14/717,721 US20160308649A1 (en) 2015-04-17 2015-05-20 Providing Services in a System having a Hardware Acceleration Plane and a Software Plane
US14/717,721 2015-05-20
PCT/US2016/026285 WO2016168029A1 (en) 2015-04-17 2016-04-07 Providing services in a system having a hardware acceleration plane and a software plane

Publications (1)

Publication Number Publication Date
CN107533481A true CN107533481A (zh) 2018-01-02

Family

ID=55752814

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680021987.2A Withdrawn CN107533481A (zh) 2015-04-17 2016-04-07 在具有硬件加速平面和软件平面的系统中提供服务

Country Status (4)

Country Link
US (1) US20160308649A1 (zh)
EP (1) EP3283953B1 (zh)
CN (1) CN107533481A (zh)
WO (1) WO2016168029A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10270709B2 (en) 2015-06-26 2019-04-23 Microsoft Technology Licensing, Llc Allocating acceleration component functionality for supporting services
US10511478B2 (en) 2015-04-17 2019-12-17 Microsoft Technology Licensing, Llc Changing between different roles at acceleration components
US10296392B2 (en) 2015-04-17 2019-05-21 Microsoft Technology Licensing, Llc Implementing a multi-component service using plural hardware acceleration components
US10198294B2 (en) 2015-04-17 2019-02-05 Microsoft Licensing Technology, LLC Handling tenant requests in a system that uses hardware acceleration components
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane
US10216555B2 (en) 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
US10326696B2 (en) 2017-01-02 2019-06-18 Microsoft Technology Licensing, Llc Transmission of messages by acceleration components configured to accelerate a service
US10320677B2 (en) 2017-01-02 2019-06-11 Microsoft Technology Licensing, Llc Flow control and congestion management for acceleration components configured to accelerate a service
US10425472B2 (en) 2017-01-17 2019-09-24 Microsoft Technology Licensing, Llc Hardware implemented load balancing
US10922250B2 (en) * 2019-04-30 2021-02-16 Microsoft Technology Licensing, Llc Monitoring and steering service requests to acceleration components
US11733764B2 (en) * 2020-06-30 2023-08-22 Samsung Electronics Co., Ltd. Devices capable of detecting and allocating power and associated method

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020161902A1 (en) * 2001-04-25 2002-10-31 Mcmahan Larry N. Allocating computer resources for efficient use by a program
US6915338B1 (en) * 2000-10-24 2005-07-05 Microsoft Corporation System and method providing automatic policy enforcement in a multi-computer service application
EP2199910A1 (en) * 2008-12-22 2010-06-23 Sap Ag On-demand provisioning of services running on embedded devices
CN101802789A (zh) * 2007-04-11 2010-08-11 苹果公司 多处理器上的并行运行时执行
US7809982B2 (en) * 2004-10-01 2010-10-05 Lockheed Martin Corporation Reconfigurable computing machine and related systems and methods
US20110088038A1 (en) * 2009-10-13 2011-04-14 Ezekiel John Joseph Kruglick Multicore Runtime Management Using Process Affinity Graphs
WO2013049079A2 (en) * 2011-09-26 2013-04-04 Limelight Networks, Inc. Dynamic request handling using cloud-computing capabilities
CN103034295A (zh) * 2012-12-26 2013-04-10 无锡江南计算技术研究所 输入输出能力增强的可重构微服务器
WO2014019428A1 (en) * 2012-07-31 2014-02-06 International Business Machines Corporation Method and system for allocating fpga resources
US20140108481A1 (en) * 2012-10-14 2014-04-17 Microsoft Corporation Universal fpga/asic matrix-vector multiplication architecture
WO2014088967A1 (en) * 2012-12-04 2014-06-12 Microsoft Corporation Service allocation in a distributed computing platform
CN104038570A (zh) * 2014-06-27 2014-09-10 曙光信息产业(北京)有限公司 一种数据处理方法及装置
US20150103837A1 (en) * 2013-10-15 2015-04-16 Cisco Technology, Inc. Leveraging hardware accelerators for scalable distributed stream processing in a network environment

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774668A (en) * 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5915123A (en) * 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US7925900B2 (en) * 2007-01-26 2011-04-12 Microsoft Corporation I/O co-processor coupled hybrid computing device
US8938510B2 (en) * 2010-04-26 2015-01-20 Bittan Inc. On-demand mailbox synchronization and migration system
US8812627B2 (en) * 2010-08-20 2014-08-19 Adobe Systems Incorporated System and method for installation and management of cloud-independent multi-tenant applications
US9448846B2 (en) * 2011-12-13 2016-09-20 International Business Machines Corporation Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines
US20150271342A1 (en) * 2012-11-06 2015-09-24 Alcatel Lucent Network resource allocation in communication networks
US9286084B2 (en) * 2013-12-30 2016-03-15 Qualcomm Incorporated Adaptive hardware reconfiguration of configurable co-processor cores for hardware optimization of functionality blocks based on use case prediction, and related methods, circuits, and computer-readable media

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6915338B1 (en) * 2000-10-24 2005-07-05 Microsoft Corporation System and method providing automatic policy enforcement in a multi-computer service application
US20020161902A1 (en) * 2001-04-25 2002-10-31 Mcmahan Larry N. Allocating computer resources for efficient use by a program
US7809982B2 (en) * 2004-10-01 2010-10-05 Lockheed Martin Corporation Reconfigurable computing machine and related systems and methods
CN101802789A (zh) * 2007-04-11 2010-08-11 苹果公司 多处理器上的并行运行时执行
EP2199910A1 (en) * 2008-12-22 2010-06-23 Sap Ag On-demand provisioning of services running on embedded devices
US20110088038A1 (en) * 2009-10-13 2011-04-14 Ezekiel John Joseph Kruglick Multicore Runtime Management Using Process Affinity Graphs
WO2013049079A2 (en) * 2011-09-26 2013-04-04 Limelight Networks, Inc. Dynamic request handling using cloud-computing capabilities
WO2014019428A1 (en) * 2012-07-31 2014-02-06 International Business Machines Corporation Method and system for allocating fpga resources
US20140108481A1 (en) * 2012-10-14 2014-04-17 Microsoft Corporation Universal fpga/asic matrix-vector multiplication architecture
WO2014088967A1 (en) * 2012-12-04 2014-06-12 Microsoft Corporation Service allocation in a distributed computing platform
CN103034295A (zh) * 2012-12-26 2013-04-10 无锡江南计算技术研究所 输入输出能力增强的可重构微服务器
US20150103837A1 (en) * 2013-10-15 2015-04-16 Cisco Technology, Inc. Leveraging hardware accelerators for scalable distributed stream processing in a network environment
CN104038570A (zh) * 2014-06-27 2014-09-10 曙光信息产业(北京)有限公司 一种数据处理方法及装置

Also Published As

Publication number Publication date
US20160308649A1 (en) 2016-10-20
EP3283953B1 (en) 2021-08-04
EP3283953A1 (en) 2018-02-21
WO2016168029A1 (en) 2016-10-20

Similar Documents

Publication Publication Date Title
CN107533481A (zh) 在具有硬件加速平面和软件平面的系统中提供服务
CN107533538A (zh) 在使用加速部件的系统中处理租户要求
CN107750357A (zh) 具有硬件加速平面和软件平面的数据处理系统
CN107710237A (zh) 服务器上深度神经网络划分
CN107836001A (zh) 硬件加速器上的卷积神经网络
US10296392B2 (en) Implementing a multi-component service using plural hardware acceleration components
CN107636637A (zh) 用于使用软处理器执行软件线程的系统和方法
CN107710238A (zh) 具有堆栈存储器的硬件加速器上的深度神经网络处理
CN105103524B (zh) 用于实现网络中的高利用率的方法和系统
CN104769550B (zh) 在云计算网络中分配带宽的方法和系统
CN104247341B (zh) 分布式交换机及其多播树层次结构的动态优化方法
Antequera et al. ADON: Application-driven overlay network-as-a-service for data-intensive science
CN116800620B (zh) 一种区块链仿真系统及方法
US20230319642A1 (en) Methods and Apparatus for Application Processing in Modems
US11630753B2 (en) Multi-level workflow scheduling using metaheuristic and heuristic algorithms
Tao et al. Pota: Maximizing profit for task-level scheduling for data center networks
KwaDlangezwa Enabling Network Stability in a Scalable Software-defined Data Centre Network
Agrawal Real-time communication using FDDI-based networks

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
WW01 Invention patent application withdrawn after publication

Application publication date: 20180102

WW01 Invention patent application withdrawn after publication