服务器系统的制作方法

文档序号:18899770发布日期:2019-10-18 21:46阅读:187来源:国知局
服务器系统的制作方法

本文公开的主题总体涉及用于减少服务器系统中的性能不平衡的系统和方法,并且更具体地,涉及在可存储数据的地方附近提供数据处理以减少服务器系统中的性能不平衡的服务器系统架构和方法。



背景技术:

现代数据中心可遭受数据处理和数据移动之间的不平衡,这可降低数据中心的性能和能效两者。所述不平衡通常是基于与服务器系统的组件有关的延迟或瓶颈。例如,数据密集型应用可导致由于通过存储器的数据移动而引起的性能瓶颈。对于计算密集型应用,可由处理器上的负载引起瓶颈。所述不平衡还可引起额外的能耗,这主要是基于服务器系统的组件(例如,可能处于等待数据或指令的空闲状态但是仍然消耗能量以保持当前状态的存储器和/或处理器)的未充分利用。

采用大数据分析的趋势可进一步加剧服务器系统中可能出现的所述不平衡。例如,可对大量不同的数据集执行大数据分析,以发现隐藏的模式、未知的相关性、市场趋势、客户偏好和/或其他有用的信息。对于这样的大数据分析,可涉及大规模数据移动,这可能容易导致性能瓶颈。同样地,为大数据分析提供强大的工具的机器学习是计算相当密集的,同时还涉及大量的用于训练的数据。如果正在被处理的数据量和工作负载的数据处理的分析复杂性规模性增加,则数据中心的性能和能效二者都会进一步降低。



技术实现要素:

技术问题

本发明的目的是提供一种减少由数据密集型应用或计算密集型应用引起的系统不平衡的服务器系统。

技术方案

示例实施例提供一种服务器系统,可包括:第一多个大容量存储器装置、至少一个中央处理器(cpu)和至少一个近端数据处理(ndp)引擎。所述至少一个cpu可被连接到第一多个大容量存储器装置。每个ndp引擎可与第二多个大容量存储器装置相关联,并被插入在cpu和第二多个大容量存储器装置之间。第二多个大容量存储器装置是第一多个大容量存储器装置的一部分或者全部。大容量存储器装置可包括至少一个固态驱动器(ssd)装置。网络接口可通过网络将服务器系统可通信地连接到至少一个远程系统,其中,所述至少一个远程系统可在服务器系统外部,通信结构可被插入在cpu和所述至少一个ndp引擎之间。在一个实施例中,形成服务器系统的ndp引擎的数量可至少部分地基于与cpu相关联的带宽、与网络相关联的带宽、与通信结构相关联的带宽以及与所有ndp引擎相关联的带宽之中的最小带宽除以与单个ndp引擎相关联的带宽被确定。在另一实施例中,开关层可被插入在ndp引擎和第一多个大容量存储器装置之间,其中,开关层可将ndp引擎和与该ndp引擎相关联的第二多个大容量存储器装置可通信地连接。在又一实施例中,开关层可被插入在第二ndp引擎和第一多个大容量存储器装置之间,其中,开关层可将第二ndp引擎和与第二ndp引擎相关联的第二多个大容量存储器装置可通信地连接。

另一示例实施例提供一种服务器系统,可包括:网络接口、第一多个ssd装置、至少一个cpu和至少一个ndp引擎。网络接口可通过网络将服务器系统可通信地连接到至少一个远程系统,其中,所述至少一个远程系统可在服务器系统外部。所述至少一个cpu可被连接到网络接口和第一多个ssd装置。每个ndp引擎可与第二多个ssd装置相关联,并被插入在cpu和第二多个ssd装置之间,其中,第二多个ssd装置是第一多个ssd装置的一部分或者全部。通信结构可被插入在cpu和所述至少一个ndp引擎之间,并且形成服务器系统的ndp引擎的数量可基于与cpu相关联的带宽、与网络相关联的带宽、与通信结构相关联的带宽以及与所有ndp引擎相关联的带宽之中的最小带宽除以与单个ndp引擎相关联的带宽被确定。

再一示例实施例提供一种服务器系统,可包括:第一多个大容量存储器装置、至少一个cpu、至少一个ndp引擎和开关层。所述至少一个cpu可连接到第一多个大容量存储器装置。每个ndp引擎与第二多个大容量存储器装置相关联,并被插入在cpu和第二多个大容量存储器装置之间。第二多个大容量存储器装置是第一多个大容量存储器装置的一部分或者全部。开关层可被插入在每个ndp引擎和第一多个大容量存储器装置之间,其中,开关层可将每个ndp引擎和各自的第二多个大容量存储器装置可通信地连接。网络接口可通过网络将服务器系统可通信地连接到至少一个远程系统,其中,所述至少一个远程系统可在服务器系统外部,通信结构可被插入在cpu和所述至少一个ndp引擎之间。开关层可被插入在第二ndp引擎和第一多个大容量存储器装置之间,其中,开关层可将第二ndp引擎和与第二ndp引擎相关联的第二多个大容量存储器装置可通信地连接。

有益效果

根据本发明,近端数据处理引擎被部署在服务器系统中。因此,提供了一种减少系统不平衡的服务器系统。

附图说明

在以下部分中,将参照附图中示出的示例性实施例来描述本文中公开的主题的各方面,其中:

图1a示出根据本文中公开的主题的服务器系统的架构的第一示例实施例的框图;

图1b示出根据本文中公开的主题的服务器系统的架构的第二示例实施例的框图;

图2示出根据本文中公开的主题的服务器系统的架构和ndp引擎的框图;

图3a和图3b分别示出根据本文中公开的主题的数据可通过具有ndp的服务器系统传递的示例路径;

图4a示出原始数据通过主机端dram到达ndpe的典型的示例数据流;

图4b示出根据本文中公开的主题的原始数据不需要通过主机端dram到达ndpe的可选的示例数据流;

图5a示出根据本文中公开的主题的服务器系统的架构的示例实施例的框图;

图5b示出根据本文中公开的主题的可使用多路复用器将两个ssd适应性地连接到两个ndpe的开关层的示例实施例的框图;

图5c示出根据本文中公开的主题的可使用多路复用器将四个ssd适应性地连接到四个ndpe的开关层的示例实施例的框图;

图5d示出根据本文中公开的主题的可使用多路复用器将n个ssd适应性地连接到n个ndpe的开关层的示例实施例的框图;

图6a示出根据本文中公开的主题的在n=4的示例服务器系统中的选择性地激活的ndpe;

图6b示出根据本文中公开的主题的在n=5的示例服务器系统中的选择性地激活的ndpe;

图6c示出根据本文中公开的主题的在n=6的示例服务器系统中的选择性地激活的ndpe;

图6d示出根据本文中公开的主题的在n=7的示例服务器系统中的选择性地激活的ndpe;

图6e示出根据本文中公开的主题的在n=8的示例服务器系统中的选择性地激活的ndpe;

图7示出根据本文中公开的主题的针对具有八个ndpe的示例服务器系统、使用示例伪代码来确定哪些ndpe被选择性地激活以及哪些ssd被连接到激活的ndpe的示例方法的流程图。

具体实施方式

在以下详细描述中,阐述了许多具体细节以便提供对本公开的透彻理解。然而,本领域技术人员将理解,可在没有这些具体细节的情况下实践所公开的各方面。在其他情况下,没有详细描述公知的方法、程序、组件和电路,以免模糊本文中公开的主题。

在整个本说明书对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性可被包括在本文中公开的至少一个实施例中。因此,在贯穿本说明书的各个地方的短语“在一个实施例中”或“在实施例中”或“根据一个实施例”(或者具有相似含义的其他词语)可不需要都指同一实施例。另外,特定特征、结构或特性可按照任意适当的方式被组合在一个或更多个实施例中。就此而言,如这里所使用的,词语“示例性的”指“用作示例、实例或例证”。在本文中被描述为“示例性的”的任意实施例不应被解释为必须优选或优于其他实施例。另外,根据本文中讨论的上下文,单数术语可包括相应的复数形式,并且复数术语可包括相应的单数形式。还应注意的是,本文中示出和讨论的各种图(包括组件图)仅是为了说明目的,而未按比例绘制。同样地,各种波形和时序图被示出仅是为了说明目的。例如,为清楚起见,一些元件的尺寸可能相对于其他元件被夸大。另外,如果认为合适,则在附图中重复使用附图标记以指示相应的和/或类似的元件。

本文中所使用的术语仅是为了描述特定示例性实施例的目的,并不旨在限制所要求保护的主题。如本文中所使用的,除非上下文另有明确说明,否则单数形式也旨在包括复数形式。还将被理解的是,当在本说明书中使用时,术语“包括”和/或“包括...的”表示存在阐述的特征、整数、步骤、操作、元件和/或组件,但不排除存在或者添加一个或更多个其他特征、整数、步骤、操作、元件、组件和/或它们的组合。如这里使用的术语“第一”、“第二”等被用作它们之后的名词的标签,并且不暗示任何类型的排序(例如,空间、时间、逻辑等),除非明确地如此定义。另外,可在两个或更多个附图中使用相同的附图标记来表示具有相同或相似功能的部件、组件、块、电路、单元或模块。然而,这种用法仅是为了简化说明和便于讨论;这并不意味着这些组件或单元的结构或构架细节在所有实施例中是相同的或者这种共同引用的部件/模块是实现本文中公开的特定实施例的教导的唯一方式。

除非另有定义,否则本文中所使用的所有术语(包括技术和科学术语)具有与本主题所属领域的普通技术人员通常理解的含义相同的含义。还将被理解的是,诸如在通常使用的字典中定义的那些术语应该被解释为具有与它们在相关领域的上下文中的含义一致的含义,并且将不被理解为理想化或过于正式的含义,除非在本文中明确地如此定义。

近端数据处理(ndp)可被用于优化数据中心服务器的架构,以减少可由数据处理和数据移动引起的不平衡问题。可将结合嵌入式处理器(例如,cpu、arm、riscv等)和/或现场可编程门阵列(fpga)的ndp服务器架构用作ndp引擎的替代类型,以分别形成pndp服务器(基于处理器的ndp服务器)架构或fndp服务器(基于fpga的ndp服务器)架构。例如,将fpga用作ndp引擎的fndp服务器架构不仅在性能改进和能效方面提供了显著的效益,而且在系统成本方面也提供了显著的效益。

ndp可通过基于数据的位置和从该数据提取的信息来处理服务器系统架构中最合适的位置处的数据来最小化数据移动。因此,在ndp中,可正好在数据所在的位置(诸如在高速缓存、主存储器和/或永久存储器中)执行计算。这与独立于数据可被存储的位置而将数据移向cpu相反。基于ndp引擎可能位于存储器层次结构中的不同位置(即,(i)ndp在存储器装置(例如,ssd、hdd)中;(ii)ndp靠近存储器装置(通常被插入在ssd、hdd和主机之间);(iii)ndp在动态随机存取存储器(dram)(邻近于处理器)中),通常可将ndp处理分成三组。

在一个实施例中,一个或更多个ndp引擎可被插入在服务器系统的处理器和大容量存储器(诸如固态驱动器(ssd)装置)之间。ndp引擎可被配置为通过在服务器系统内的比服务器系统的处理器更适当的位置处提供计算和/或数据处理来最小化数据移动。在另一实施例中,一个或更多个ndp引擎可被配置为不仅最小化数据移动,而且也减少可由计算密集型应用引起的处理器上的负载。在一个实施例中,将ndp引擎与一个或更多个ssd进行配对可提供可扩展的系统配置。

在一个实施例中,本文中公开的主题提供被插入在ssd和主机cpu之间的路径上的ndp(即,ndp靠近ssd、hdd)。在另一实施例中,ndp可位于存储服务器的ssd内,目的是减少数据移动并更充分地利用ssd之间的并行性。在又一实施例中,一个或更多个ndp引擎可被集成到dram中。

所有类型的计算单元(例如,高能效嵌入式处理器、fpga、流处理器等)可被用作ndp引擎。例如,在一个实施例中,ssd装置中的控制器可处理已经从ssd装置的物理存储介质取出的数据。也就是说,ndp引擎可被放置在主机和ssd装置之间的路径中以用于数据处理应用。在另一实施例中,一个或更多个ndp引擎可被集成到dram中。

图1a示出根据本文中公开的主题的服务器系统100的架构的第一示例实施例的框图。服务器系统100可通过一个或更多个通信网络103(仅示出其中一个通信网络)被连接到一个或更多个客户端装置102(仅示出其中一个客户端装置)。

服务器系统100可包括处理器层104、通信结构层105、ndp引擎(ndpe)层106和存储器层107。存储器层107可通过ndpe层106被连接到通信结构层105,并且通信结构层105可将ndpe层106和存储器层107连接到处理器层104。可将ssd的全数据传输带宽传送到将ndpe层106连接在通信结构层105和存储器层107之间的系统,同时还减少了可能由数据密集型应用或计算密集型应用引起的任何不平衡。

处理器层104可包括一个或更多个处理器140和系统存储器141。在一个实施例中,系统存储器141可包括dram。在另一实施例中,系统存储器141可包括任意类型的易失性存储器和/或任意类型的非易失性存储器。通信结构层105可包括一个或更多个通信开关150和通信链接。在一个示例实施例中,通信结构层105可以是基于外围组件互连高速(pcie)的通信结构,但是通信结构层105不限于此。

ndpe层106可包括一个或更多个ndp引擎。ndpe层106包括n个ndp引擎ndpe#0-ndpe#n-1,其中,n是整数。ndpe层106的ndp引擎可以是基于处理器的ndp引擎、基于fpga的ndp引擎、或者它们的组合。其他类型的ndp引擎也是可能的并且可被使用。存储器层107可包括一个或更多个大容量存储器装置。在一个实施例中,一个或更多个大容量存储器装置可包括ssd装置。在另一实施例中,一个或更多个大容量存储器装置可包括hdd装置。存储器层107可包括n个ssdssd#0-ssd#n-1。对于在图1a中示出的示例实施例,每个ndp引擎与各自的ssd装置相应。

图1b示出根据本文中公开的主题的服务器系统100’的架构的第二示例实施例的框图。服务器系统100’可通过一个或更多个通信网络103(仅示出其中一个通信网络)被连接到一个或更多个客户端装置102(仅示出其中一个客户端装置)。

服务器系统100’可包括处理器层104、通信结构层105、ndpe层106’和存储器层107’。存储器层107’可通过通信结构层105被连接到ndpe层106’,并且通信结构层105可将ndpe层106’和存储器层107’连接到处理器层104。

与图1a中示出的服务器系统100相似,服务器系统100’的处理器层104可包括一个或更多个处理器140和系统存储器141。在一个实施例中,系统存储器141可包括dram。在另一实施例中,系统存储器141可包括任意类型的易失性存储器和/或任意类型的非易失性存储器。通信结构层105可包括一个或更多个通信开关150和通信链接。在一个示例实施例中,通信结构层105可以是基于pcie的通信结构,但是通信结构层105不限于此。

ndpe层106’可包括一个或更多个ndp引擎。ndpe层106’包括n-m个ndp引擎ndpe#m-ndpe#n-1,其中,n和m是整数,并且m<n。ndpe层106’的ndp引擎可以是基于处理器的ndp引擎、基于fpga的ndp引擎、或者它们的组合。其他类型的ndp引擎也是可能的并且可被使用。存储器层107可包括一个或更多个大容量存储器装置。在一个实施例中,一个或更多个大容量存储器装置可包括ssd装置。在另一实施例中,一个或更多个大容量存储器装置可包括hdd装置。存储器层107’可包括m个ssdssd#0-ssd#m-1。

图2示出根据本文中公开的主题的服务器系统100的架构和ndp引擎的框图。ndp引擎可包括数据处理装置201、存储器202以及接口203和204。接口203和204可分别连接到存储器层107中的一个或更多个ssd(由单个ssd#i表示)和通信结构层105。在一个实施例中,数据处理装置201可以是嵌入处理器的核,诸如,但不限于,四核armcortex-a53装置。在另一实施例中,数据处理装置201可以是fpga装置,在这种情况下,连接到基于fpga的ndpe的ssd可对fpga芯片中的硬件资源(即,dsp片、lut、ram等)进行划分。系统100可利用被划分的资源来为可被连接到ndpe的每个相应的ssd实例化内核。虽然基于处理器的ndpe和基于fpga的ndpe可能具有不同的应用实现,但是将存在用于分别针对每个ssd处理数据的处理元件(例如,四核armcortex-a53、或由fpga资源实例化的应用内核)。

ndp引擎中的存储器202可以是dram,并且可被用于元数据存储。dram还可为ssd和ndp引擎之间的数据移动、ndp引擎和主机cpu之间的数据移动提供缓冲器,和/或提供作为由ndp引擎执行应用期间的中间数据存储的缓冲器。接口203和204可提供从ndpe到ssd的连接和从ndpe到主机cpu的连接。在一个实施例中,接口203和204可以是基于pcie的接口。

图2中示出的服务器系统100的架构可包括两种类型的处理单元,即,一个或更多个主机cpu和一个或更多个ndp引擎。服务器系统中的所有ndp引擎可能无法自动提供近端数据处理,即,从ssd读取数据并在ndp引擎中执行数据处理。数据处理可在主机cpu处开始。主机cpu可被配置为负责:(i)管理服务器的操作系统;(ii)监控服务器系统中所有ndp引擎的状态;(iii)执行一个或更多个主机端应用程序;(iv)将ndpe端应用程序卸载到ndpe层;(v)将参数写入ndpe端应用程序并启动ndpe层以读取和处理来自相应ssd的数据。

同样如图2所示,系统中可存在两种类型的dram,即,主机dram和ndpedram。ndpedram可被认为是一种“全局”存储器,其中,该ndpedram可被主机cpu以及ndpe中的处理装置访问以访问从主机cpu和数据缓冲器传递的ndpe端应用参数。应理解的是,如本文中所使用的,术语“全局存储器”不是图2中示出的用于整个服务器系统的全局存储器,因为特定ndp引擎中的“全局存储器”可能不能被其他ndp引擎直接访问。

图2中示出的服务器系统100中的ndp引擎可不直接相互连接,以便简化服务器系统100。如图2中所示出的,主机dram可被用作不同ndp引擎之间的数据传送路径的一部分,因此如果在两个ndp引擎之间存在通信/数据传送,则数据可通过主机dram路由到相应的ndp引擎。例如,如果图3a中的ndpe#n-2要从ndpe#0接收数据,则数据将沿着路径301从ndpe#0通过主机dram到达ndpe#n-2。作为另一示例,如果在每个ndpe中完成数据处理,则如图3b中的路径302所示,结果数据可在主机dram中聚合,以便在cpu中进一步处理。还应注意的是,ndp引擎可彼此互连,这可提供复杂的硬件连接布线,并且在某些情况下,如果应用需要频繁地在不同ndpe之间交换数据或消息,则可能给系统增加通信负担。在一个实施例中,ndpe能够经由开关(诸如,但不限于,pcie开关)绕过主机存储器而彼此通信。

图4a示出原始数据通过主机端dram到达ndpe的典型的示例数据流400。如果需要在例如基于fpga的引擎内加速内核(即,应用的一部分),则服务器系统100的cpu140可首先将数据从ssd读取到主机端dram141,如图4a中的401所示。然后,在402,cpu140可将数据写入fpga端dram,并且在403,cpu140可启动内核以在fpga中处理数据。在404,结果数据可被读取到主机端dram。

图4b示出根据本文中公开的主题的原始数据不需要通过主机端dram到达ndpe的可选的示例数据流410。在411,可使用dma(直接存储器访问)类型处理将原始数据直接从ssd读取到cpu/fpga端dram。在412,可启动内核以在cpu/fpga中处理数据。在413,可将结果数据读取到主机端dram。因此,使用图4b中示出的数据流,每个ssd前面的ndpe可按照完全并行的方式工作。

服务器系统可被配置为在ndpe层内包括开关层,以提供服务器系统的设计的灵活性。图5a示出根据本文中公开的主题的服务器系统500的架构的示例实施例的框图。服务器系统500可包括与图1a中示出的服务器系统100相同的组件。服务器系统500与服务器系统100的不同之处在于包括ndpe层106a和开关层106b。ndpe层106a和开关层106b可被适应性地配置为通过适应性地改变ndpe的数量和ndpe与ssd之间的连接来减少可能在服务器系统中发生的系统不平衡。在一个极端,开关层106b可被配置为使得两个ssd可与两个ndpe适应性地连接。在另一极端,开关层106b可被配置为使得每个ssd可适应性地连接到所有ndpe。

图5b示出可使用多路复用器511将每对ssd适应性地连接到两个ndpe中的任意一个的开关层106b的示例实施例的框图。图5c示出可将每组四个ssd适应性地连接到四个ndpe中的任意一个的开关层106b的示例实施例的框图。多路复用器511提供四个ssd和四个ndpe之间的适应性连接。图5d示出可使用多路复用器511将n个ssd适应性地连接到n个ndpe的开关层106b的示例实施例的框图。

如果服务器系统100正经受例如cpu140处的基于带宽的瓶颈,则可使用以下技术选择性地激活图5b中示出的多路复用器511来缓解该瓶颈。具有偶数id号i的ssd将连接到具有相同idi的ndpe,并且具有奇数id号j的ssd连接到具有idj-1或j的ndpe。

参照图5a和图5b,可在理论上激活的ndp引擎的数量n’可被如下确定:

[公式1]

n′=min{pbw,nbw,cpubw,ndpbw×n}/ndpbw

其中,pbw是cpu与ndp引擎之间的结构互连的带宽,nbw是网络103的带宽,cpubw是cpu140的带宽,n是可用ndpe的整数数量,ndpbw是ndp引擎的带宽(其中,所有ndpe具有相同的带宽)。

应该被激活的ndpe的实际数量n由公式2给出:

[公式2]

n=max{n′,n/2}

下面的表1列出了针对具有8个npde(即,n=8)的服务器系统应被激活的npde的示例数量。

[表1]

图6a至图6e中示出的具有灰色的ndpe选择性地不被激活。图6a示出在n=4的示例服务器系统500中的被选择性激活的ndpe。图6b示出在n=5的示例服务器系统500中的被选择性激活的ndpe。图6c示出在n=6的示例服务器系统500中的被选择性激活的ndpe。图6d示出在n=7的示例服务器系统500中的被选择性激活的ndpe。图6e示出在n=8的示例服务器系统500中的被选择性激活的ndpe。

以下示例伪代码可被用于确定哪个ndpe将被选择性地激活以及哪个ssd应被连接到激活的ndpe。

[公式3]

图7示出根据本文中公开的主题的针对具有8个ndpe(即,n=8)的示例服务器系统、使用上面的示例伪代码来确定哪些ndpe被选择性地激活以及哪些ssd被连接到激活的ndpe的示例方法700的流程图。考虑示例服务器系统500的cpu正在经受瓶颈。在701,该处理开始。在702,确定公式(1)的参数。然后可从公式(1)确定理论上可被激活的ndp引擎的数量n’。在703,从公式(2)确定数量n。在704,可执行上述示例伪代码。在705,可在将被激活的ndpe中部署内核。在706,服务器系统500的cpu可读取结果并且可执行任意进一步处理。在707,服务器系统500的cpu完成结果并通过系统不平衡已经被减少的网络将结果发送给用户。在708,该处理结束。

如本领域技术人员将认识到的,本文中描述的创新概念可在一个大范围的应用内进行修改和变化。因此,所要求保护的主题的范围不应限于上面讨论的任意特定示例性教导,而是由所附权利要求限定。

[标号列表]

100、100’、500:服务器系统

104:处理器层

105、105’:通信结构层

106、106’、106a:ndpe层

106b:开关层

107、107’:存储器层

140:处理器

141:系统存储器

150:通信开关

201:数据处理装置

202:存储器

203、204:接口

511:多路复用器

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1