用于在服务器中放置输入/输出适配器卡的方法和系统.pdf

上传人:r7 文档编号:1752670 上传时间:2018-07-09 格式:PDF 页数:12 大小:787.89KB
返回 下载 相关 举报
摘要
申请专利号:

CN201410665544.X

申请日:

2014.11.19

公开号:

CN104750631A

公开日:

2015.07.01

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 13/12申请公布日:20150701|||实质审查的生效IPC(主分类):G06F 13/12申请日:20141119|||公开

IPC分类号:

G06F13/12

主分类号:

G06F13/12

申请人:

国际商业机器公司

发明人:

S·科塔; M·J·帕特尔; V·塞纳斯; V·斯里尼瓦桑

地址:

美国纽约阿芒克

优先权:

14/141,494 2013.12.27 US

专利代理机构:

北京市金杜律师事务所11256

代理人:

酆迅; 陈颖

PDF下载: PDF下载
内容摘要

本发明的实施例涉及用于在服务器中放置输入/输出适配器卡的方法和系统。追踪输入/输出适配器卡系统中的数据传输以确定该适配器卡是否关于该适配器卡分别被观察到与之传输数据的组件(例如,动态随机访问存储器)进行了正确放置。一些实施例基于节点间传输和节点内传输,针对系统中的每个适配器卡使用启发值,上述节点间传输和节点内传输在一定的预定时间区间上被单独地加权并求和,以便获得该启发值。

权利要求书

权利要求书
1.  一种方法,包括:
针对计算机系统中的多个输入/输出(I/O)适配器卡中的第一I/O适配器卡和所述计算机系统中的多个虚拟机中的虚拟机之间的每个数据通信,确定在进行所述数据通信期间所经过的节点间接口N1的数目;以及
针对所述第一I/O适配器卡和虚拟机之间的每个数据通信,确定在进行所述通信期间所经过的节点内接口N2的数目。

2.  根据权利要求1所述的方法,进一步包括:
针对所述第一I/O适配器卡和虚拟机之间的每个数据通信,确定所传达的数据量N3。

3.  根据权利要求2所述的方法,进一步包括:
针对所述第一I/O适配器卡和所述第一I/O适配器卡与之进行通信的所述虚拟机之间的数据通信中的至少一些数据通信,至少部分地基于所述N1、N2和N3的值间歇性地为所述第一I/O适配器卡计算启发值H。

4.  根据权利要求3所述的方法,进一步包括:
至少部分地基于用于所述第一I/O适配器卡的启发值H做出关于将所述第一I/O适配器卡移动至与不同处理器相关联的插槽的推荐。

5.  根据权利要求4所述的方法,其中当经过一段时间,用于所述第一I/O适配器卡的所述启发值H超过第一预定阈值T1的次数N4超过第二预定阈值T2时做出所述推荐。

6.  根据权利要求3所述的方法,其中所述启发值基于以下等式H=(x*N2+y*N1)*(N3)进行计算,其中x和y是预定权重因子。

7.  一种计算机系统,包括:
多个输入/输出(I/O)适配器卡;
多个虚拟机;
处理器集合;以及
软件存储设备;
其中:
所述处理器集合被构造、定位、连接和/或编程以运行存储在所述软件存储设备上的软件:并且
所述软件包括:
第一程序指令,其被编程为针对所述多个输入/输出(I/O)适配器卡中的第一I/O适配器卡和所述多个虚拟机中的虚拟机之间的每个数据通信,确定在进行所述数据通信期间所经过的节点间接口N1的数目;以及
第二程序指令,其被编程为针对所述第一I/O适配器卡和虚拟机之间的每个数据通信,确定在进行所述通信期间所经过的节点内接口N2的数目。

8.  根据权利要求7所述的系统,其中所述软件进一步包括:
第三程序指令,其被编程为针对所述第一I/O适配器卡和虚拟机之间的每个数据通信,确定所传达的数据量N3。

9.  根据权利要求8所述的系统,其中所述软件进一步包括:
第四程序指令,其被编程为针对所述第一I/O适配器卡和所述第一I/O适配器卡与之进行通信的所述虚拟机之间的数据通信中的至少一些数据通信,至少部分地基于所述N1、N2和N3的值间歇性地为所述第一I/O适配器卡计算启发值H。

10.  根据权利要求9所述的系统,其中所述软件进一步包括:
第五程序指令,其被编程为至少部分地基于用于所述第一I/O适配器卡的启发值H做出关于将所述第一I/O适配器卡移动至与不同处理器相关联的插槽的推荐。

11.  根据权利要求10所述的系统,其中当经过一段时间,用于所述第一I/O适配器卡的所述启发值H超过第一预定阈值T1的次数N4超过第二预定阈值T2时做出所述推荐。

12.  根据权利要求9所述的系统,其中所述启发值基于以下等式H=(x*N2+y*N1)*(N3)进行计算,其中x和y是预定权重因子。

说明书

说明书用于在服务器中放置输入/输出适配器卡的方法和系统
技术领域
本发明总体上涉及I/O(输入/输出)适配器卡的领域,并且更具体地涉及I/O适配器卡的放置。
背景技术
能够通过将某些重复性任务“卸载”到CPU(中央处理单元)以外的处理硬件而使得计算机系统(诸如刀片服务器)的运行地更为有效和/或高效。某些专用于执行这些相应任务的硬件被称作加速器卡和/或适配器卡(这里统称为卡)。卡能够是可移除地可从输入/输出(I/O)插槽插入。通常,这些卡被用于加密、压缩或定制算法并且被置于PCI(外部组件互连)或PCIe(外部组件互连express)插槽。
PCIe是高速串行计算机扩展总线标准。PCIe在消费者、服务器和工业应用中进行操作,如(i)主板层面的互连(以链接安装在主板上的外设);(ii)被动背板互连;和(iii)作为插件板的扩展卡接口。电信号和总线协议中的差异要求使用不同的机械形式因素和扩展的连接器。PCIe需要新的主板和新的适配板,因此PCI(外部组件互连)插槽和PCIe插槽并不是可互换的。在软件层面,PCIe保留了与PCI的后向兼容性。虽然PCIe的新功能并不能够被访问,但遗留的PCI系统软件能够检测并配置较新的PCIe设备而无需对PCIe标准的明确支持。
在典型的多插口(multi-socket)处理器服务器配置中,两个插口中的处理器都提供了能够放置适配器卡或加速器卡的PCIe插槽。然而,基于系统配置,插口中的每个插口可能具有与之相连接的不同类型的存储器设备。这样的多处理器和多PCIe插槽的配置在服务 器计算机是接单生产时、并且在针对不同类型的存储器设备的要求以施加于服务器上的工作负载的读/写要求为基础的情况下是常见的。能够根据以下来决定用于工作负载的归属节点:(i)基于工作负载的存储器读/写启发方法;和/或(ii)通过映射与每个处理器相关联的存储器配置。
发明内容
根据本发明的一个方面,提供了一种用于随包括输入/输出(I/O)适配器卡(参见以下定义)的计算机系统使用的方法、计算机程序产品和系统。该方法包括以下步骤(并非必然为以下顺序):(i)针对计算机系统中的多个输入/输出(I/O)适配器卡中的第一I/O适配器卡与该计算机系统中的多个虚拟机中的虚拟机之间的每个数据通信,确定在进行该数据通信期间所经过的节点间接口N1的数目;并且(ii)针对第一I/O适配器卡和虚拟机之间的每个数据通信,确定在进行该通信期间所经过的节点内接口N2的数目。
附图说明
图1是根据本发明的服务器系统的第一实施例的框图;
图2是至少部分地由第一实施例的服务器系统所执行的根据本发明的方法的流程图;以及
图3是根据本发明的服务器系统的第二实施例的框图。
具体实施方式
本公开内容的一些实施例认识到,可能难以以最优的方式将卡置于I/O插槽中。在这点上更具体而言,一些实施例认识到以下内容:(i)针对每个工作负载的服务器的“归属节点”是在运行时决定的;(ii)加速器卡放置位置在组装服务器时进行选择;(iii)加速器卡放置选项在服务器具有多个处理器插口时,在服务器具有多个节点时,和/或在每个处理器插口与多个PCIe插槽相关联时有所增加; (iv)以上四项可能导致服务器计算机中次优的加速器卡放置;(v)在以SMP(对称多处理)配置进行操作的刀片服务器内还是存在可能的次优加速器卡放置问题(例如,当用户并未将I/P适配器卡或加速器卡放置在对应于适当ITE(信息技术元件)的位置并且这些卡的工作负载由监管程序进行调度时);(vi)如果I/O适配器卡或加速器卡并未出现在工作负载最经常在其中执行的相同ITE/节点中,则在工作负载必须通过机架互连而被移动至其它的ITE来访问卡时存在固有延迟;(vii)最优的卡放置考虑到服务器配置、工作负载的加速器要求和服务器上所执行的每个工作负载的归属节点;(viii)在最高端的系统中,从OS(操作系统)一侧允许热插拔操作;(ix)在最高端的系统中,I/O并不固定于平面,这意味着要改变卡在I/O插槽中的位置,并不需要系统IPL(初始程序加载)。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结 合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
计算机程序指令还可以加载到计算机、其它可编程数据处理装置或者其它设备上而使得一系列操作步骤得以在计算机、其它可编程装置或其它设备上执行以产生计算机实施的处理而使得在计算机或其它可编程装置上执行的指令提供用于实施以流程图和/或框图中的一个或多个框中所指定的功能/动作的处理。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
图1示出了系统100,包括:节点间总线(也称作节点间接口)101;第一节点/刀片服务器(也称作第一抽屉(drawer))102;第二节点/刀片服务器(也称作第二抽屉)104;服务处理器106;控制软件107;闪存108;软件存储设备109;和动态随机访问存储器(DRAM)110。第一抽屉102包括:节点内总线(也称作节点内接口)103;DRAM 122、148、150;相变存储器(PCM 124);第一插口126;第二插口128;PCIe插槽130、134、142、144、146;输入/输出(I/O)适配器卡132;和虚拟机(“VM”,参见以下“虚 拟机”的定义)136、138、140。第二抽屉104包括:节点内总线(也称作节点内接口)105;DRAM 188、190;PCM 162、164;第三插口166;第四插口168;PCIe插槽170、172、184;输入/输出(I/O)适配器卡174、182、186;和VM 176、178、180。
系统100包括具有主机处理器的插口126、128、166、168,该主机处理器具有内部PHB(PCI主机桥)单元。PHB单元提供具有(x16)或(x8)宽度的多个PCIe插槽。PHB单元提供与每次数据传输所涉及的“节点间”和“节点内”访问相关的统计。该信息被控制软件107用来推荐应当何时将卡移动至不同的卡位置。
用于确定何时推荐对适配器卡进行移动的第一示例算法(FEA)如下:(i)确定在I/O适配器卡132、174、186与目的地存储器缓冲器(该存储器缓冲器并未在图1中单独示出—它们驻留于附接至处理器的DRAM或PCM中)进行通信时所经过的节点间接口101的数量N1;(ii)确定在I/O适配器卡132、174、186与目的地存储器缓冲器进行通信时所经过的节点内接口103、105的数量N2;(iii)针对每个适配器卡计算作为跨t个时间单位的窗口的移动平均值的启发值H(以下进一步解释);(iv)在H通过时间来回移动的时候,当启发值H的移动平均值超过给定I/O适配器卡的给定阈值T1时,则使得该给定I/O适配器卡的专用变量N4递增;并且(v)当任意适配器卡的N4超过阈值T2时,则向系统管理控制台发送提示用户将该I/O适配器卡移动到不同位置(诸如“最接近的可能位置”)的推荐。
为了进一步解释该FEA的步骤(i),现在将对“经过接口”的概念进行解释。在多节点的SMP盒中,节点102、104能够以多种不同方式进行互连,诸如通过网状连接或环形连接进行互连。每个节点102、104含有多个化处理器芯片,诸如插口126、128、166和168中的处理器芯片。这些处理器芯片一般以网状连接进行连接。每个处理器芯片包括I/O集线器。所有适配器卡132、174、186都处于该适配器卡插入其中的相应插口的处理器芯片的I/O集线器之后。当 适配器卡132、174、186发起DMA(直接存储器访问)时,根据目的地存储器缓冲器的位置,数据可能必须行进通过以下之一或二者:(a)一个或多个节点间总线101;和(b)节点内总线103、105(假设是网状连接的处理器芯片)。
为了进一步解释该FEA的步骤(iii),启发值如下进行计算:
H=(x*N2*N3)+(y*N1*N3)   (等式1)
其中:(a)x和y是系统设计者所提供的权重因数;并且(b)N3是从I/O适配器卡所发送/接收的总数据量(在这种情况下,N3以千兆字节为单位进行测量)。
为了进一步解释步骤(v),“最接近的可能位置”是与DMA操作发自于的处理器最为接近的位置,因此减少了需要跳过的节点内和节点间接口的数量。该FEA针对每个VM和每个I/O适配器卡保存该启发值,从而控制软件能够识别出要将特定I/O适配器卡移动到的最优且适宜的插槽。目的地缓冲器处于连接至该VM正在执行的主机处理器的DRAM或PCM设备中的任一个中。DMA处于I/O适配器和DRAM或PCM中的目的地缓冲器之间。I/O适配器能够由多个VM所共享。这里,针对每个VM维护启发算法。使用该启发算法,通过将适配器移动至更接近的位置VM将从该软件获益最多。
换句话说,每个适配器卡将利用其与每个VM进行通信的相对频率并非是事先已知的。然而,在进行这些通信时所执行的接口通过的数量由分别指配至每个I/O接口卡的启发值H和N4随时间进行有效追踪。当特定I/O适配器卡被观察到需要相对大量的接口通过来进行其通信时,则控制软件107推荐移动该特定I/O适配器卡。
系统100包括处于跨两个节点102、104的不同插口128、166上的多个VM 136、138、140、176、178、180。在操作中,这些VM中的任意VM可以访问存在于系统100中的任意特定I/O适配器卡132、174、186。系统100使用SRIOV(单根I/O虚拟化)适配器或VIOS(虚拟I/O服务器)中的虚拟化I/O适配器。根据以上算法,“评价最高的VM”是针对该I/O适配器卡得到最大数量的候选标记 的VM。更具体地,可能出现VM在服务器中的不同处理器上进行调度但是VM可能正在共享相同的I/O适配器卡的情形。在这些情况下,将出现关于将适配器移动至更接近于VM中之一的冲突。为了解决该冲突,控制软件107监视每个VM对每个I/O适配器的使用。从给定I/O适配器卡发送和/或接收相对大量的数据并且必须经过更多节点间和节点内接口以与该I/O适配器卡进行通信的VM成为用于确定针对其移动该给定I/O适配器卡为最优的插口的候选。响应于该评价最高的VM的确定,控制软件107中所包括的PHYP(电源监管程序或者任意其它类型的监管程序)推荐将该给定I/O适配器卡移动至更接近于该评价最高的VM。更具体地,监管程序的推荐被发送至图形用户界面而使得用户能够看到该推荐并且利用适当动作进行响应。
如图2所示,流程图200是根据本发明的用于推荐I/O适配器卡的移动的方法。图2示出了该方法中所涉及的每个步骤的内容以及步骤之间的处理流程。更具体地,流程图200包括步骤S202、S204、S206、S208、S210、S212和S214。
如以上结合图1所讨论的,系统100是本发明相对简单的实施例。如图3所示,服务器系统300是更为复杂的系统,其具有:(i)更多节点502a,b,c,d,e,f,g和h;(ii)节点内的处理器503之间更多的接口;和(iii)节点之间更多的接口501。该更为复杂的实施例有助于证明拥有用于确定所推荐的I/O适配器卡放置的软件和算法为何是有所帮助的。
本公开内容的一些实施例可以包括以下的一个或多个特征、特性和/或优势:(i)一种用于在多插口、多抽屉、多节点服务器配置中的具体处理器附近为加速器卡的放置推荐适当插槽位置(例如,PCI插槽、PCIe插槽)的方法;(ii)一种用于在HW(硬件)中实施用于收集统计数据并理解系统中存在的各种存储器设备和I/O卡之间的数据流的仪器的方法;(iii)避免了通常对加速器卡和PCIe卡进行访问时的工作流的延时;(iv)节点/机架互连带宽使用的优 化;和/或(v)服务器内的硬件放置的优化。
以下段落给出了一些定义。
本发明:应当被理解为由术语“本发明”所描述的主题被提交时的权利要求或者由专利诉讼之后最终发布的权利要求所覆盖的绝对指示;而术语“本发明”被用来帮助读者在总体上感觉到这里被认为可能是新的公开内容,如使用术语“本发明”所指示的那样,该理解是假设且临时性的,并且服从于专利诉讼过程中的变化的影响,因为相关信息有所演变并且权利要求可能被修改。
实施例:参见以上“本发明”的定义—类似的注意事项应用于术语“实施例”。
和/或:包含或;例如,A、B“和/或”C表示A或B或C中的至少一个为真且能够应用。
电连接:表示直接电连接,或者间接电连接从而存在中间部件;在间接电连接中,中间部件可以包括电感器和/或变压器。
机械连接:包括直接机械连接以及通过中间组件所进行的间接机械连接;包括刚性机械连接以及允许机械连接的组件之间的相对运动的机械连接;包括但并不局限于焊接连接、焊料连接、通过紧固件进行连接(例如,钉子、螺栓、螺丝、螺母、钩环紧固件、栓结、铆钉、快速释放连接、闩锁和/或磁性连接)、压力配合连接、摩擦配合连接、通过重力所导致的结合而固定的连接、枢轴或可旋转连接,和/或可滑动的机械连接。
软件存储设备:能够以比传送中的信号更不瞬态的方式存储计算机代码的任意设备(或设备集合)。
有形的介质软件存储设备:在有形介质中和/或上存储计算机代码的任意软件存储设备(参见以上的定义)。
非瞬时软件存储设备:以非瞬时方式存储计算机代码的任意软件存储设备(参见以上的定义)。
计算机:具有大量数据处理和/或机器可读指令读取能力的任意设备,包括但并不局限于台式计算机、大型计算机、膝上计算机、 基于现场可编程门阵列(FPGA)的设备、智能电话、个人数字助理(PDA)、安装或插入身体的计算机、嵌入式设备类型的计算机、基于专用集成电路(ASIC)的设备。
用户:包括人和基于机器的用户;例如,用户可以是能够移动I/O适配器卡的机器人。
间隙地:随时间重复地;该重复并不必以规律的时间间隔进行。
虚拟机:本领域技术人员认为或将会认为是虚拟机的软件、硬件和/或固件的任意集合;在一个实施例中,“虚拟机”在物理上将采用较大存储器(例如,易失性存储器)的一部分以及存储在该存储器部分中的数据的形式。
输入/输出(I/O)适配器卡:包括任意且所有类型的能够可移除地插入的适配器卡,其能够对主机存储器执行DMA(直接存储器访问);包括但并不局限于加速器卡。

用于在服务器中放置输入/输出适配器卡的方法和系统.pdf_第1页
第1页 / 共12页
用于在服务器中放置输入/输出适配器卡的方法和系统.pdf_第2页
第2页 / 共12页
用于在服务器中放置输入/输出适配器卡的方法和系统.pdf_第3页
第3页 / 共12页
点击查看更多>>
资源描述

《用于在服务器中放置输入/输出适配器卡的方法和系统.pdf》由会员分享,可在线阅读,更多相关《用于在服务器中放置输入/输出适配器卡的方法和系统.pdf(12页珍藏版)》请在专利查询网上搜索。

本发明的实施例涉及用于在服务器中放置输入/输出适配器卡的方法和系统。追踪输入/输出适配器卡系统中的数据传输以确定该适配器卡是否关于该适配器卡分别被观察到与之传输数据的组件(例如,动态随机访问存储器)进行了正确放置。一些实施例基于节点间传输和节点内传输,针对系统中的每个适配器卡使用启发值,上述节点间传输和节点内传输在一定的预定时间区间上被单独地加权并求和,以便获得该启发值。。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1