RDMA资源泄漏检测和报告.pdf

上传人:e2 文档编号:4033340 上传时间:2018-08-12 格式:PDF 页数:23 大小:1.88MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410461344.2

申请日:

2014.09.11

公开号:

CN104461912A

公开日:

2015.03.25

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F12/02申请日:20140911|||公开

IPC分类号:

G06F12/02

主分类号:

G06F12/02

申请人:

国际商业机器公司

发明人:

O·卡多纳; J·P·梅辛; C·L·所托冈扎尔兹; P·V·托里斯

地址:

美国纽约阿芒克

优先权:

14/034,739 2013.09.24 US

专利代理机构:

北京市金杜律师事务所11256

代理人:

王茂华; 陈颖

PDF下载: PDF下载
内容摘要

本发明涉及一种RDMA资源泄漏检测和报告。提供用于远程直接存储器访问(RDMA)资源泄漏检测。生成包括用户空间RDMA资源分级数据结构的用户空间上下文。生成包括内核RDMA资源分级数据结构的内核上下文。内核RDMA资源分级数据结构包括用户空间RDMA资源分级数据结构的节点。接收对于关闭RDMA资源的请求,并且遍历用户空间RDMA资源分级数据结构以确定RDMA资源是否具有在用户空间RDMA资源分级数据结构中分配的子RDMA资源。响应于基于用户空间RDMA资源分级数据结构或者内核RDMA资源分级数据结构中的至少一个确定RDMA资源具有在用户空间RDMA资源分级数据结构中分配的子RDMA资源来检测资源泄漏。

权利要求书

权利要求书
1.  一种在数据处理系统中的用于远程直接存储器访问(RDMA)资源泄漏检测的方法,所述数据处理系统包括处理器和存储器,所述方法包括:
由所述数据处理系统在所述数据处理系统的用户空间中生成包括用户空间RDMA资源分级数据结构的用户空间上下文;
由所述数据处理系统在所述数据处理系统的内核空间中生成包括内核RDMA资源分级数据结构的内核上下文,其中所述内核RDMA资源分级数据结构包括所述用户空间RDMA资源分级数据结构的节点;
由所述数据处理系统接收对于关闭RDMA资源的请求;
由所述数据处理系统遍历所述用户空间RDMA资源分级数据结构,以确定所述RDMA资源是否具有在所述用户空间RDMA资源分级数据结构中分配的子RDMA资源;
由所述数据处理系统响应于基于所述用户空间RDMA资源分级数据结构或者所述内核RDMA资源分级数据结构中的至少一个确定所述RDMA资源具有在所述用户空间RDMA资源分级数据结构中分配的子RDMA资源来检测资源泄漏;以及
由所述数据处理系统报告所述资源泄漏。

2.  根据权利要求1所述的方法,其中所述用户空间RDMA资源分级数据结构或者所述内核RDMA资源分级数据结构中的至少一个包括红黑树数据结构。

3.  根据权利要求1所述的方法,还包括:
实行有序取消分配策略,所述有序取消分配策略指定在所述用户空间RDMA资源分级数据结构或者内核RDMA资源分级数据结构中的父资源不能在所述父资源的子资源被取消分配之前被取消分配,其中检测资源泄漏包括检测对于违反所述有序取消分配策略的尝试。

4.  根据权利要求1所述的方法,其中所述内核RDMA资源分级数据结构是所述用户空间RDMA资源分级数据结构的超集,并且包括代表在所述用户空间RDMA资源分级数据结构中代表的RDMA资源并且代表内核空间RDMA资源的数据。

5.  根据权利要求4所述的方法,其中所述内核RDMA资源分级数据结构的与用户空间RDMA资源或者内核空间RDMA资源对应的节点还包括从所述用户空间RDMA资源或者内核空间RDMA资源收集的关联取证数据,其中与所述内核RDMA资源分级数据结构的节点关联的所述取证数据提供标识与所述节点关联的资源泄漏的来源的信息。

6.  根据权利要求5所述的方法,其中所述取证数据包括用于分配了与所述节点关联的RDMA资源的进程的进程标识符、与所述节点关联的所述RDMA资源何时被分配的指示符、或者分配了与所述节点关联的所述RDMA资源的进程的整个调用栈中的至少一项。

7.  根据权利要求5所述的方法,其中报告所述资源泄漏还包括:
使所述子RDMA资源与在所述内核RDMA资源分级数据结构中的对应节点相关;
从与所述子RDMA资源对应的所述节点取回取证数据;以及
生成包括所述取证数据的资源泄漏通知。

8.  根据权利要求1所述的方法,其中所述用户空间RDMA分级数据结构和内核RDMA分级数据结构使用实行如下规则的逻辑来生成,所述规则为队列对(QP)RDMA资源是对应保护域(PD)RDMA资源和对应完成队列(CQ)RDMA资源的子代。

9.  根据权利要求1所述的方法,其中所述用户空间RDMA分级数据结构和内核RDMA分级数据结构使用实行如下规则的逻辑来生成,所述规则为所有RDMA资源是对应保护域(PD)RDMA资源的子代。

10.  根据权利要求1所述的方法,其中所述用户空间RDMA分级数据结构和内核RDMA分级数据结构使用实行如下规则的逻辑来 生成,所述规则为快速注册页面列表(FRPL)RDMA资源是RDMA控制结构(RCS)和对应快速注册存储器区域(FRMR)RDMA资源的子代。

11.  一种包括计算机可读存储介质的计算机程序产品,所述计算机可读介质具有存储于其中的计算机可读程序,其中所述计算机可读程序在数据处理系统上被执行时使所述数据处理系统:
在所述数据处理系统的用户空间中生成包括用户空间RDMA资源分级数据结构的用户空间上下文;
在所述数据处理系统的内核空间中生成包括内核RDMA资源分级数据结构的内核上下文,其中所述内核RDMA资源分级数据结构包括所述用户空间RDMA资源分级数据结构的节点;
接收对于关闭RDMA资源的请求;
遍历所述用户空间RDMA资源分级数据结构以确定所述RDMA资源是否具有在所述用户空间RDMA资源分级数据结构中分配的子RDMA资源;
响应于基于所述用户空间RDMA资源分级数据结构或者所述内核RDMA资源分级数据结构中的至少一个确定所述RDMA资源具有在所述用户空间RDMA资源分级数据结构中分配的子RDMA资源来检测资源泄漏;以及
报告所述资源泄漏。

12.  一种装置,包括:
处理器;以及
耦合到所述处理器的存储器,其中所述存储器包括指令,所述指令在被所述处理器执行时使所述处理器:
在所述数据处理系统的用户空间中生成包括用户空间RDMA资源分级数据结构的用户空间上下文;
在所述数据处理系统的内核空间中生成包括内核RDMA资源分级数据结构的内核上下文,其中所述内核RDMA资源分级数据结构包括所述用户空间RDMA资源分级数据结构的节点;
接收对于关闭RDMA资源的请求;
遍历所述用户空间RDMA资源分级数据结构以确定所述RDMA资源是否具有在所述用户空间RDMA资源分级数据结构中分配的子RDMA资源;
响应于基于所述用户空间RDMA资源分级数据结构或者所述内核RDMA资源分级数据结构中的至少一个确定所述RDMA资源具有在所述用户空间RDMA资源分级数据结构中分配的子RDMA资源来检测资源泄漏;以及
报告所述资源泄漏。

说明书

说明书RDMA资源泄漏检测和报告
技术领域
本申请总体涉及一种改进的数据处理装置和方法,并且更具体地涉及用于检测和报告远程直接存储器访问(RDMA)资源泄漏的机制。
背景技术
远程直接存储器访问(RDMA)是允许从一个计算机的存储器向另一计算机的存储器中的直接存储器访问的功能而未涉及到任一计算机的操作系统。RDMA有助于高吞吐量、低延时联网,这在大规模并行计算机群集中尤其有用。
RDMA通过使计算机的网络适配器能够向应用存储器或者从应用存储器直接传送数据、由此消除在操作系统中的数据缓冲器与在应用存储器之间复制数据的需求来支持零复制联网。这样的直接数据传送不要求处理器、高速缓冲存储器等完成任何工作、并且不要求上下文切换。这样的直接传送可以与计算机正在执行的其它系统操作并行执行。例如在应用执行RDMA读取或者写入请求时,经由支持RDMA功能的网络适配器向网络直接递送应用数据从而减少传送的延时。
许多现代架构和规范是鉴于RDMA和具有RDMA功能的网络适配器而设计的。例如InfiniBandTM贸易协会(IBTA)维护和促进的InfiniBandTM规范以及纽约阿芒克的国际商业机器公司开发的InfiniBandTM架构提供支持经由InfiniBandTM结构执行RDMA操作。类似地,开放结构联盟(OFA)维护和促进的并且在InfiniBandTM规范上构建的开放结构企业分布(DFEDTM)规范和架构也提供支持RDMA操作。对于关于InfiniBandTM和OFEDTM的更多信息,可以从 IBTA和OFA组织以及对应网站获得附加信息。
发明内容
在一个示例实施例中,提供一种在包括处理器和存储器的数据处理系统中的用于远程直接存储器访问(RDMA)资源泄漏检测的方法。该方法包括数据处理系统在数据处理系统的用户空间中生成包括用户空间RDMA资源分级数据结构的用户空间上下文。该方法还包括数据处理系统在数据处理系统的内核空间中生成包括内核RDMA资源分级数据结构的内核上下文。内核RDMA资源分级数据结构包括用户空间RDMA资源分级数据结构的节点。该方法也包括数据处理系统接收对于关闭RDMA资源的请求并且数据处理系统遍历用户空间RDMA资源分级数据结构以确定RDMA资源是否具有在用户空间RDMA资源分级数据结构中分配的子RDMA资源。另外,该方法包括数据处理系统响应于基于用户空间RDMA资源分级数据结构或者内核RDMA资源分级数据结构中的至少一个确定RDMA资源具有在用户空间RDMA资源分级数据结构中分配的子RDMA资源来检测资源泄漏。此外,该方法包括数据处理系统报告资源泄漏。
在其它示例实施例中,提供一种包括计算机可用或者可读介质的计算机程序产品,该计算机可用或者可读介质具有计算机可读程序。计算机可读程序在计算设备上被执行时使计算设备执行以上关于方法示例实施例概述的操作中的各种操作和组合。
在更多另一示例实施例中,提供一种系统/装置。该系统/装置可以包括一个或者多个处理器和耦合到一个或者多个处理器的存储器。存储器可以包括指令,这些指令在由一个或者多个处理器执行时使一个或者多个处理器执行以上关于方法示例实施例概述的操作中的各种操作和组合。
本发明的这些和其它特征以及优点将在本发明的示例实施例的以下具体描述中被描述或者按照以下具体描述将变得为本领域普通 技术人员所清楚。
附图说明
将通过参照在结合附图阅读时的示例实施例的以下具体描述来最好地理解本发明及其优选使用方式和更多目的以及优点,其中:
图1是利用开放结构企业分布(OFEDTM)核的一个这样的RDMA模型的示例;
图2是图示用于上下文管理的示例实施例的机制的示例框图;
图3是根据一个示例实施例的示例用户空间树数据结构的示例框图;
图4是根据一个示例实施例的示例内核空间树数据结构的示例框图;
图5是概述根据一个示例实施例的用于分配资源的示例操作的流程图;
图6是概述根据一个示例实施例的用于执行资源泄漏检测和报告的示例操作的流程图;并且
图7是其中可以实施示例实施例的方面的计算设备的示例框图。
具体实施方式
示例实施例提供用于远程直接存储器访问(RDMA)资源泄漏检测和报告的机制。在RDMA与传统复用输入/输出(IO)模型、比如网络接口卡(NIC)和光纤信道(FC)之间的主要差异之一是资源管理。在复用IO模型之下,有限缓冲器/资源集合由低级、例如开放系统互连(OSI)模型第2层(数据链路层)设备驱动器分配。经由存储器复制通过OSI层2复用待发送/接收的数据。OSI模型的更高层协议(ULP)操作范围是分配虚拟存储器而设备驱动器操作范围是复制或者映射虚拟存储器用于设备驱动器的使用。在数据链路层接收的数据必须从数据链路层的缓冲器/资源向应用层(例如在OSI模型中第7层)的虚拟存储器复制。
为了避免可能需要附加资源并且可能由于需要在更低级缓冲器与更高级虚拟存储器之间执行复制操作以及其它原因而引入附加延时的这样的复制操作,已经引入RDMA模型。图1是利用开放结构企业分布(OFEDTM)核的一个这样的RDMA模型的示例。如图1中所示,应用110存在于用户空间120中并且对库函数进行调用或者调动库函数,以用于经由OFEDTM库130和硬件特有库140执行RDMA操作。OFEDTM库130包括可以经由控制路径150用来与在操作系统的内核空间170中的OFEDTM核160通信的动词库(libibverb)和DMA连接管理器库(librdmacm)。在库130中的动词(verb)是OFEDTM封装部分并且向链接到库130的应用、例如应用110提供动词应用编程接口(API),该应用可以使用该API以利用RDMA功能。子库libibverb和librdmacm包含动词,其中libibverb与资源有关而librdmacm动词用来操纵协议以在本地与远程系统之间连接队列对(QP)。在实质上,OFEDTM库130包含对于OFEDTM事实标准的应用级支持并且提供用于实施RDMA的API。
OFEDTM核160提供OFEDTM RDMA机制的其余部分,这些部分包括操作系统内核级动词API以及RDMA协议的硬件不可知实现方式的整体。OFEDTM核160可以经由硬件特有设备驱动器195与在物理硬件级185的网络适配器180通信。硬件特有设备驱动器195和硬件特有库140可以是在特定实现方式中使用的网络适配器190的类型特有的。
如从图1可见,数据路径105经由使用OFEDTM库130和硬件特有库140而执行的RDMA操作从在用户平面120中的应用110直接流向在物理硬件级185中的网络适配器180并且反之亦然。仍然经由控制路径150向在内核空间170中的OFEDTM核160和硬件特有设备驱动器195路由与网络适配器190的控制路径通信。
使用这一架构,更高层协议(ULP)在网络适配器190上执行资源创建。应当认识到,ULP是指在协议模型、例如OSI模型中的协议栈上向上相对更高的应用或者其它代码。例如直接使用OFEDTM 动词的代码可以是在应用层的应用、但是也可以是用户直接访问编程库(uDAPL)、即应用空间用户,该uDAPL又可以由中间件层使用,该中间件层本身由应用、例如DB2使用。术语ULP在这一场景中是指代码的直接用户(即OFEDTM动词的直接用户),而并未使ULP限缩为可能被去除了许多个级的应用。
ULP执行显式调用以分配和映射用于在设备、例如网络适配器180上直接存储器访问(DMA)的资源。因此,RDMA设备驱动器、即硬件特有驱动器195向OFEDTM核160每设备、例如网络适配器一个实例注册的用于特定设备、例如网络适配器180的设备驱动器实例有效地资源分配器,并且比虚拟NIC/FC驱动器更类似于虚拟机管理器(VMM)而区别在于设备驱动器为动态而VMM对于关联虚拟机(VM)的寿命持续。ULP通过OFEDTM库130和/或OFEDTM核160的动词访问设备驱动器实例以分配在特有设备/设备驱动器对、例如网络适配器/适配器驱动器对上的资源。
设备驱动器195实例必须允许每个操作系统实例(或者VM)的干净上载/重载,从而无资源泄漏。如果资源泄漏随时间持续,则资源泄漏可以妨碍设备、例如网络适配器190或者甚至操作系统实例本身能够被使用而未重新引导计算设备。例如ULP释放或者取消分配RDMA资源失败对于组合的操作系统(或者VM)存储器、总线存储器、适配器硬件存储器等造成存储器泄漏,所有这些部件是支持(backing)RDMA资源分配的部件。
资源泄漏、比如存储器泄漏在资源未被用于重用的管理机制恢复时出现并且可以保持分配、但是未被使用或者访问。资源泄漏条件可以引起错误传播问题、包括阻止错误恢复,因为恢复由于未释放的资源和关联函数指针而不能继续,从而出于相似原因而引起崩溃和数据破坏并且阻止固件更新操作的任何重置。在存储器泄漏的情况下,在具有如图1中所示RDMA架构的情况下,总线存储器可以泄漏而与在网络适配器190上的虚拟存储器和物理存储器无关、可以泄漏而与总线存储器和/或虚拟存储器无关。因此,与RDMA架 构关联的资源泄漏问题可能化解起来复杂和成问题。
用于解决在RDMA架构中的资源泄漏问题的可能解决方案落入级联错误/错误传播范畴中,这意味着这些解决方案通过在更低级设备驱动器内涵盖ULP错误来抽象化ULP错误。例如ULP错误可以是从为RDMA访问而配置的设备驱动器(即RDMA设备驱动器)向对应设备分配队列对。然而如果ULP内核扩展然后在以后关闭被分配队列对的连接并且未释放队列对资源,则从该点以后未对队列对进行寻址。在这样的情形中,RDMA设备驱动器不能从主机系统存储器被关闭/卸载,因为它具有仍然在使用中的资源、即队列对资源。因此,ULP内核扩展代码已经负面地影响在它本身以外的其它代码(级联错误)。
对于引起存储器泄漏的这样的ULP错误的一种可能解决方案的一个示例是将存储器泄漏仅绑定到虚拟存储器,从而它未影响操作系统的其它元素。例如RDMA设备驱动器可以选择在网络适配器上清除队列对代表的资源,但是RDMA设备驱动器不能释放队列对存储器,因为它可能被用户空间应用引用。在这样的情形中,RDMA设备驱动器仍然可以卸载,然而队列对存储器将在以后不可恢复。尽管将这样的存储器泄漏仅绑定到虚拟存储器可以允许卸载RDMA设备驱动器并且有些减轻存储器泄漏问题,但是这一方式未解决关于资源回收和清除的不恰当ULP操作的根本问题以及第一失败数据捕获(FFDC)原理,因为如果不能在问题初始地出现时发现存储器泄漏的来源,则在执行期间的以后点绕过它不那么有效,因为存储器仍然被泄漏并且ULP仍然正在错误地操作。
另外,绑定解决方案由于在计算机程序员的知识以外的二次影响本身很复杂和易出错。绑定解决方案的复杂性和易出错属性给设备驱动器增添显著风险、即增添如下可能错误情况,设备驱动器的程序员将在它应当作为应用错误被解决时试图在设备驱动器的编码中覆盖它。绑定解决方案造成ULP用无效逻辑并且潜在地用如下行为执行,该行为可能由于为了保护设备驱动器免于错误地操作的 ULP而必须提供的大量代码而将来禁止应用程序接口(API)连接。
此外,在网络适配器错误恢复的情况下,网络适配器需要被重置并且资源被重新初始化,从而它们可以被重用,这允许操作系统继续工作而无重新引导、包括经历失败的网络适配器的功能。有了RDMA资源,设备驱动器要求ULP在这一网络适配器恢复之前释放资源,并且这样做的失败结果将妨碍操作系统(和其它ULP)使用网络适配器。在没有下文描述的示例实施例的机制的情况下,标识未释放资源的ULP有困难。
在已知的RDMA架构中,资源泄漏将仅经由系统崩溃或者所得数据破坏来间接检测。从资源泄漏的结果、即崩溃或者数据破坏反向跟踪以标识资源泄漏根本原因由于错误的间接属性而为一项非平凡和耗费时间的任务。因此,软件开发和支持团队必须执行系列设备驱动器仪器测量和问题重建以便对这样的崩溃和数据破坏的来源进行定点和标识以由此标识在RDMA资源中的资源泄漏为问题的根本原因。
本示例实施例提供用于避免这样的耗费时间和资源成本密集的过程的机制。另外,本发明操作用于辅助减少在ULP中的潜在错误代码并且提供一种用于标识这些错误代码部分或者“故障(bug)”、从而可以解决它们而未求助于这些耗费时间的备选方案。
示例实施例的机制实施的核心概念是一旦资源泄漏条件出现就决定性地检测到它并且采取适当动作,从而管理员、应用开发员或者自动化的机制被通知资源泄漏、然后可以采取纠正动作。示例实施例使设备驱动器构架充分地健壮以便减少软件支持成本以及防止潜在应用错误向生产环境中传播。
在一个示例实施例中,这些结果通过实现一系列红黑树和/或链接列表以跟踪每个资源来实现。在一个示例实施例中,资源分集是如在OFEDTM模型中实现的InfiniBandTM父子关系模型的变形。示例实施例利用协议和空间不可知(即用户空间和内核空间不可知)列表和树服务。另外,示例实施例可用于在进程/应用粒度上的泄漏检 测和恰当资源取消分配顺序实行二者。另外,示例实施例允许对有序平衡二元树、例如红黑树的数据路径直通(log2N)效率的隐式搜索优化。
下文将参照附图更具体描述本发明的示例实施例的以上方面和优点。应当认识到,附图仅旨在于举例说明本发明的示例实施例。本发明可以涵盖未在图中显式地示出的方面、实施例和对描绘的示例实施例的修改、但是将按照示例实施例的本说明书而容易为本领域普通技术人员所清楚。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在任何一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可用的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置、器件或者任意以上的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
在一些示例实施例中,计算机可读介质为非瞬态计算机可读介质。非瞬态计算机可读介质是任何如下介质,该介质不是无实体的 信号或者蚕箔波、即本身为纯信号或者传播波。非瞬态计算机可读介质可以利用信号和传播波、但是本身不是信号或者传播波。因此,例如以如比如任何方式利用信号以维持它们的状态的各种形式的存储器设备和其它类型的系统、设备或者装置可以在本说明书的范围内视为非瞬态计算机可读介质。
在另一方面,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的计算机代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、射频(RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如JavaTM、SmalltalkTM、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明示例实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、 专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
如以上提到的那样,示例实施例利用协议和空间不可知列表和树服务以便提供资源泄漏检测和报告功能。示例实施例还修改和扩展在OFEDTM中的上下文管理模型,其中上下文是存储信息的数据结构,该信息用于管理数据处理系统的资源和与资源的连接(包括 但不限于用于资源或者与资源的连接的状态信息)以提供协议和空间不可知列表和树服务可以对其操作的这些链接列表和树数据结构。在一个示例实施例中,上下文是OFEDTM动词定义的、比如ib_ucontext标识的软件资源并且被分配作为对alloc_ucontext的调用的结果(并且被dalloc_ucontext)取消分配,该alloc_ucontext(和dalloc_ucontext)是应用级ULP使用的动词,该动词向OFEDTM层标识资源和用户级事件操纵器的统一用户。这一上下文资源被连结到资源池将分配的所有后续资源。
上下文是用于用户空间应用的所需资源作为用于完成队列(CQ)(存储已经被报告为完成的信息操作的数据结构)的和保护域(PD)(代表与资源关联的访问权限的数据结构)的父代(parent)。每个上下文等效于适配器实例/地址空间、即每对适配器实例和用户空间地址空间具有它自己的对应用户空间上下文数据结构。因此,如果用户空间应用与多个用户空间地址空间关联或者存在用户空间应用与之操作的多个适配器实例,则该用户空间应用可以具有多于一个用户空间上下文数据结构。
示例实施例创建和/或利用内核空间上下文数据结构以涵盖所有用户空间和内核空间资源。然而内核空间上下文数据结构并不被视为实际内核资源、即它不被内核ULP分配。
因此,利用示例实施例,OFEDTM模型架构在OFEDTM模型架构事实上未包括内核空间上下文数据结构时被修改为包括内核空间上下文数据结构。示例实施例还提供用户空间上下文数据结构,其中这些内核空间和用户空间上下文中的每项存储用于跟踪相应内核空间和用户空间资源的红黑树结构。此外,示例实施例提供用于内核空间和用户空间二者的资源管理逻辑,该资源管理逻辑借助该修改以包括内核空间和用户空间上下文数据结构二者而被规范化以用于内核空间和用户空间二者。
如以上提到的那样,内核空间上下文数据结构比如以链接列表的形式存储红黑树数据结构以管理父子关系。红黑类型树是自平衡 二元搜索树类型。自平衡通过以所得涂绘的树满足某些属性——这些属性不允许它变成显著地失衡、即一个颜色的节点数目与另一颜色相比显著地更高——这样的方式用两个颜色(这些通常称为‘红’和‘黑’、因此是树的名称)涂绘每个节点之一来提供。在修改树时,新树随后被重新排列和重新涂绘以恢复着色属性。以可以高效地执行这一重新排列和重新着色这样的方式设计属性。
树的平衡并非完美,但是它好到足以允许它保障在O(log n)时间内搜索,其中n是在树中的元素总数。插入和删除操作与树重新排列和重新着色也是在O(log n)时间内执行的。跟踪每个节点的颜色由于仅有两个颜色而每节点仅需1位信息。树未包含它是红黑树特有的任何其它数据,因此它的存储器覆盖区域(footprint)与经典(未着色)二元搜索树几乎相同。在许多情况下,可以无附加存储器成本存储附加颜色位信息。红黑树具有以下属性:(1)在树中的每个节点被着色为红或者黑;(2)每个叶节点被着色为黑;(3)如果节点为红,则它的两个子代(child)为黑(这隐含着在从根节点到叶节点的任何路径上,红节点决不相邻,然而任何数目的黑节点可以依次出现);并且(4)从节点到后代叶节点的每个简单路径包含相同数目的黑节点。
示例实施例的可以在设备驱动器、内核等中驻留的资源管理逻辑提供用于利用这样的红黑树以基于父子节点关系实行节点去除规则以及在标识资源泄漏出现时标识它们并且提供关于这样的资源泄漏的来源的信息的逻辑。例如在用户应用分配上下文(比如通过调用ib_ucontext)时,这一内容存储于与RDMA控制结构(RCS)关联的列表中,该RCS是内核或者设备驱动器(下文为了简化说明而假设为设备驱动器)维护的数据结构并且用来包含RDMA特有数据结构。在分配另一更低级资源时,用户空间应用将更低级资源连结到上下文。设备驱动器使用与RCS关联的列表来跟踪这一关系。设备驱动器防止在取消分配更低级资源之前取消分配上下文,因为它是上下文的子代并且最低级资源的存在假设上下文贯穿最低级资源 的寿命可用。有序取消分配的这一实行由示例实施例的机制实施并且也可以用来如下文描述的那样标识潜在资源泄漏及其资源。
相似地,关于在一个示例实施例中如下文描述的那样接近地遵循OFEDTM模型的用户空间上下文数据结构红黑树,资源管理逻辑被扩展为如果子节点存在则不能去除在树中的父节点实行这样的规则。这将下文在图3和4的讨论中更具体地加以举例说明。另外,资源管理逻辑创建在完成队列(CQ)与队列对(QP)之间的依赖性,从而如果关联QP存在则不能去除CQ、即完成队列是队列对的父代。这通过在红黑树数据结构中在QP创建时间关联QP与对应CQ来实现。红黑树结构跟踪在父CQ和子QP之间的这一关联而红黑树和用于实行取消分配规则的关联逻辑用作这样的关联的跟踪器。也就是说,红黑树结构服务于允许本发明了解未释放的资源以及允许本发明搜寻和发现具体资源这样的双重目的。
在用户空间树结构内,每个设备、例如网络适配器等是硬件特有库、例如图1中的硬件特有库140的实例并且可以包含多个用户空间上下文数据结构。每个用户空间上下文数据结构提供描述用户实例/视图的状态信息并且可以包含一个或者多个保护域(PD)和关联资源。追踪资源泄漏错误是在每CQ和每PD控制块基础上从用户空间树数据结构到内核空间错误纠正逻辑执行的。
可以有为每个用户空间应用提供的分离用户空间上下文数据结构,从而可以有多个分离用户空间上下文数据结构。在一些实例中,单个用户空间应用可以具有多个用户空间上下文数据结构。这可以在用户空间应用利用多个分离用户空间地址空间时出现,因为用户空间上下文数据结构实质上代表用户空间地址空间与特定的支持RDMA功能的设备、例如RDMA网络适配器进行配对。这也可以在应用需要可扩展性、例如应用需要独立地工作的大量活跃连接并且线程与不同上下文关联地被分组时或者如果应用本身被实例化则出现。实质上,未实行在应用与上下文之间的一对一关系。
与用户空间上下文数据结构对照,示例实施例还提供用于单个 内核空间地址空间的单个内核空间上下文数据结构。这一单个内核空间上下文数据结构包含用于所有资源(用户空间和内核空间)的上下文信息的阴影副本、由此提供与用户空间上下文数据结构的一致性。
内核空间上下文数据结构包括内核空间树数据结构,该内核空间树数据结构同样可以是使用标识父子关系的链接列表或者其它关系结构来实施的红黑树数据结构。内核空间树数据结构是与用户空间树的超集而内核空间树被扩展成与内核空间树的节点关联地存储从各种资源捕获的取证(forensics)数据。例如以下取证数据是为创建的每个资源而捕获的并且可以在检测到资源泄漏时被报告给系统管理员、程序员或者其他授权的人员、比如可以通过错误日志等来完成:(1)用于分配资源的进程的进程标识符;(2)在分配资源时的日期和/或时间;以及(3)与在以上(1)中的进程标识符互补的整个调用栈(这可以例如在ASCII格式中被提供)。这一信息可以在通过行进树结构、发现用于与检测到的资源泄漏关联的资源的对应节点、取回在内核空间上下文数据结构的内核空间树数据结构中的与节点关联的收集的取证数据并且在错误日志条目——该错误日志条目然后被输出以供授权的人员使用,由此标识资源泄漏的来源——中包括取证数据来检测到资源泄漏时在错误日志中被报告。
在内核空间树数据结构中,RDMA资源(例如dma_single(该dma_single映射单个地址/长度缓冲器)、dma_page(该dma_page映射存储器页面)、dma_sg(该dma_sg是散射收集资源))是RDMA控制结构(RCS)的子代和用户空间上下文数据结构的同代(peer)(见下文描述的图4)。另外,与用户空间树数据结构一样,QP是用于数据路径踪迹和调试操作的子代。另外,在用户空间树数据结构和内核空间数据结构中,QP也是用于控制路径优先失败数据收集(FFDC)追踪/调试操作的保护域(PD)的子代。因此,在示例实施例的用户空间和内核空间树结构中,QP具有双父代关系,一个具有用于数据路径追踪/调试的CQ而一个具有用于控制路径追踪/调试 的PD。另外,在用户空间和内核空间树结构二者中,所有资源是对应PD的子代。这允许有关资源的前向/后向发现。此外,如果资源是用户空间资源,则用于资源的上下文数据结构用作树结构中的祖代以便与架构模型、例如OFEDTM模型相配。
应当注意在OFEDTM模型架构中,无用于资源泄漏检测、例如存储器泄漏检测的RDMA资源的形式跟踪。作为结果,它被留给用户空间应用以保证正确行为。然而这出于以上先前讨论的原因而易错。示例实施例使用内核空间上下文数据结构和关联内核空间树数据结构在内核级提供自动化的机制,该机制可以实施用于RDMA资源跟踪的例如红黑树机制,从而检测RDMA资源泄漏。红黑树实现方式可以用来允许对存储器区域(MR)的DMA寻址从而对数据路径操作进行解码。MR是指用户空间应用分配的一类存储器型资源。
MR资源、例如快速注册存储器区域(FRMR)、DMA存储器区域(DMR)、用户存储器区域(UMR)、地址操纵(AH)等被扩展为提供跟踪型粒度,从而这些资源无需作为组被跟踪、但是可以被分离地跟踪。尽管每个MR资源类型在技术上是MR,但是每个MR资源的使用可以不同,并且示例实施例出于软件可服务性的目的而提供粒度以有助于标识资源使用。因此,软件支持可以快速地检测哪个MR类型被泄漏从而经由删减问题空间改进根本原因确定。例如如果设备正在被关闭,则关闭资源可能由于资源仍然在使用中而失败。由于示例实施例分离地跟踪每个类型的存储器区域,所以示例实施例可以立即标识哪个资源类型仍然在使用中、哪个用户空间应用分配资源,并且这一信息可以用来缩减哪个资源未被释放。
利用示例实施例,快速注册页面列表(FRPL)资源被进一步扩展为允许双重跟踪。FRPL资源映射虚拟到总线地址页面关联。与关联FRMW独立地分配/取消分配这一资源。在OFEDTM模型架构中,创建后连结操作用来关联FRPL资源与FRMR。因此,动词消费者有可能分配FRPL、但是未关联FRPL与FRMR、由此造成资源泄漏。也就是说,由于ULP分配资源并且以后将它连结到FRMR,所以如 果它的资源释放被连结到FRMR取消分配逻辑,则未与FRMR关联的FRPL的泄漏是可能的。因此,对FRPL的跟踪从(更早分配的)FRMR分离地被执行。然而由于FRPL贯穿FRMR的寿命而连结到FRMR,所以与FRMR关联地跟踪FRPL,从而示例实施例可以防止在FRMR仍然活跃之时释放FRPL。因此,FRPL资源被扩展用于关于FRPL资源本身和关于FRMR二者的双重跟踪。
示例实施例无论FRPL何时被关联都通过植入在RCS级用于FRPL的跟踪器以及在FRMR中的跟踪器在所有范围实行资源泄漏检测(见下文描述的图4,其中示出指向FRPL428的双箭头)。术语“跟踪器”在本文中的意思是示例实施例的机制在分配动词中设立的并且在取消分配时实行的数据结构关系。例如在分配FRPL时,向FRPL的红黑树添加资源作为RCS的子代。在FRPL被连结到FRMR时,FRPL被添加到FRPL的FRMR红黑树。FRMR本身也被添加到上下文的FRMR红黑树中。在FRPL被释放时,示例实施例的逻辑验证FRPL不是FRMR红黑树的一部分并且通过该校验将从RCS的树结构去除FRPL。在设备被关闭时,进行的校验之一是RCS的FRPL红黑树为空。数据结构连结的求和总计和校验逻辑一起构成“跟踪器”。
如果动词消费者尝试在FRPL之前取消分配FRMR,则FRMR可以实行失败。也就是说,示例实施例的每个资源取消分配逻辑实行资源无仍然分配的任何子资源这样的要求。如果子资源被这一资源取消分配逻辑发现,则取消分配失败并且用与失败关联的资源取证信息登记失败,该资源取证信息提供关于失败的来源的信息。
图2是图示用于上下文管理的示例实施例的机制的示例框图。如图2中所示,每个用户空间应用210具有一个或者多个关联用户空间上下文数据结构220。每个用户空间上下文数据结构代表与特定RDMA设备、例如RDMA网络适配器关联的地址空间。因此,单个用户空间应用可以具有多个用户空间上下文数据结构(uctx)220。每个uctx220包括用于用户空间应用的状态信息222以及用户空间 树数据结构224,该用户空间树数据结构代表与对应于用户空间应用的用户空间地址空间关联的资源的用户空间视图。用户空间树数据结构224遵循以上先前提到的父子关系规则,从而用适当父子关系代表上下文数据结构、保护域(PD)、完整队列(CQ)、队列对(QP)等以实行对于资源泄漏检测和报告的创建/去除要求。
如图2中进一步所示,示例实施例引入单个内核空间上下文数据结构(kctx)230,该内核空间上下文数据结构代表单个内核空间地址空间和跨越所有用户空间应用的所有用户空间资源。kctx230包括用于各种内核空间资源的状态信息232以及内核空间树数据结构234,该内核空间树数据结构代表与各种用户空间应用关联的资源的内核空间视图。此外,代表数据处理系统的资源的内核空间树数据结构234的节点具有在它们中或者与它们关联地存储的关联取证数据用于以后在资源泄漏检测和报告中使用、比如经由错误日志等。在创建资源、例如CQ、QP、向PD添加的设备等时捕获这一信息。
可以在一个示例实施例中实现在uctx220和kctx230中的树数据结构为红黑树以便跟踪资源泄漏。然而应当人类史尽管这里描述红黑树实现作为示例实现,但是示例实施例不限于此。实际上,可以使用能够代表在实体、比如资源、上下文等之间的分级关系的任何链接列表、树结构或者其它数据结构而未脱离示例实施例的精神实质和范围。
如图2中进一步所示,用户空间上下文数据结构220和内核空间上下文数据结构230由RDMA控制结构(RCS)240管理。RCS240是用于硬件特有层的根数据结构,该根数据结构包含用于特有硬件设备、例如网络适配器的RDMA有关数据结构。有用于与主机系统关联的每个网络适配器的RCS240,并且每个RCS240包含所有RDMA有关数据结构作为子代(或者子代的子代等)。RCS240可以在硬件特有库中被镜像以允许校验RCS240而未进入内核。
逻辑——该逻辑可以是图1中的OFEDTM核160、硬件特有设备驱动器195等的部分——可以实施示例实施例的用于使用上下文 数据结构220和230来跟踪、检测和报告资源泄漏的资源管理逻辑。也就是说,示例实施例的例如在硬件特有设备驱动器195中实施的逻辑可以使用这些上下文数据结构220和230的树结构224和234以实行关于资源去除的规则以便检测和/或避免资源泄漏条件并且响应于检测到资源泄漏从树结构获得对应取证数据以在通知消息、错误日志等中标识资源泄漏的来源。下文将参照图5和6的流程图提供参与执行资源泄漏检测和通知的过程的描述。
图3是根据一个示例实施例的示例用户空间树数据结构的示例框图。如图3中所示,用户空间树数据结构300实质上是定义资源间关联的“树的树”。用户空间树数据结构300是“树的树”在于在树的每级可以定义子树,例如包括元素314、316、318、320和322的第一个树以及包括图3的所有元素的更高级第二个树。利用用户空间树数据结构,实行各种规则以生成在资源之间的关联并且由此使得有可能实行关于从树结构去除节点的规则,这些规则支持资源泄漏检测。例如在用户空间树数据结构300中,向库表示设备为实例,从而表示设备、例如RDMA网络适配器为库实例、例如图3中所示类型“lidrdma”的每个节点。在图3中,表示设备为具有关联完整队列(CQ)312、保护域(PD)314、QP316和其它资源318-320的一个或者多个用户空间上下文310。每个这样的设备可以与多个用户空间上下文310关联或者包含多个用户空间上下文310。用户空间上下文310由RCS330管理,该RCS可以例如是图2中的RCS240。
如图3中所示,用于构建用户空间树数据结构的规则包括QP316是用于数据路径追踪/调试目的的关联CQ312的子代这样的规则。此外,QP316是用于控制路径优先失败数据收集(FFDC)追踪/调试目的的关联PD314的子代。因此,QP316具有与QP316和PD314的双重父关系。所有资源节点、例如QP316和其它资源318-320是关联PD314的子代。在这一结构就位时,如果子节点存在则不能去除父节点这样的规则可以被资源管理逻辑实行以由此检测和报告在数据处理系统中的资源泄漏。因此,如果过程尝试从数据处理系统 去除资源、比如CQ312而未释放与QP316关联的子节点,则该过程可以返回错误,该错误指示资源泄漏的潜在来源、例如释放CQ312而未释放它的关联QP36从而产生代表资源泄漏的QP316。
此外,在检测到资源泄漏的情况下,可以比如使用红黑树搜索算法来搜索树结构300以找到在树结构300中的与检测到的资源泄漏对应的节点,并且这可以与内核空间树数据结构一起进一步用来取回将在报告资源泄漏时使用的取证数据。也就是说,如果在树结构300中标识与资源泄漏对应的节点,则可以在内核空间树数据结构中找到相同节点并且可以取回和向错误日志数据结构条目中插入对应取证数据。因此,例如如果设备正在被取消分配,则仍然分配保护域(PD)资源,则本发明的取消分配逻辑可以标识这一PD资源正仍然在被分配、因此代表资源泄漏。可以从内核空间树数据结构取回用于PD资源的对应取证数据,该取证数据比如指示设备驱动器由于PD的资源泄漏而不能被在特定时间分配PD的特定代码路径上载。因此,检测到资源泄漏不仅标识资源泄漏本身而且提供标识资源泄漏来源的附加取证信息。
图4是根据一个示例实施例的示例内核空间树数据结构的示例框图。内核空间树数据结构400遵循与用户空间树数据结构相同的用于父子依赖性的规则以便使内核空间树数据结构400与用户空间树数据结构300一致。另外,利用内核空间树数据结构400,图1中的OFEDTM核160视为如同它是分离资源。因此,OFEDTM核160在内核空间树数据结构400中被表示为包括QP、PD、CQ和其它资源的多个资源。因此,如图4中所示,OFEDTM核由OFEDTM核上下文410或者内核上下文410表示,该上下文具有完整队列(CQ)412、保护域(PD)414、QP416和其它资源418-434。此外,每个用户空间资源也可以在内核空间树数据结构400内被表示为来自各种用户空间上下文(未示出)的用户空间树数据结构的阴影副本。与图3中的用户空间上下文310一样,内核空间上下文数据结构410由RCS330管理,该RCS可以例如是图2中的RCS240。因此,RCS330 是用户空间上下文310和内核空间上下文410二者的父代。
如图4中所示,与用户空间树数据结构300一样,用于构建用户空间树数据结构的规则包括QP416是用于数据路径追踪/调试目的的关联CQ412的子代这样的规则。此外,QP416是用于控制路径首次失败数据收集(FFDC)追踪/调试目的的关联PD414的子代。因此,QP416具有与QP416和PD414的双重父关系。所有资源节点、例如QP416和其它资源418-428是关联PD414的子代。RDMA资源节点430-434是RCS330的子代和上下文节点410的同代。
此外,应当注意每个资源节点在它被创建时具有关于资源收集的并且在内核空间树数据结构中与资源节点关联地存储的对应取证数据。这一取证数据包括分配资源的过程的过程标识符、分配资源的日期和/或时间以及与进程标识符互补的整个调用栈。因此,在与特定资源关联地检测到资源泄漏时,可以从在内核空间树数据结构中的对应节点取回这一信息以由此标识资源泄漏的来源。可以在向授权的用户发送的通知消息中包括、在错误日志中存储或者以别的方式向授权的人员传达这一信息用于错误跟踪和化解。
在这一结构就位时,与用户空间树数据结构一样,如果子节点存在则不能去除父节点这样的规则可以被资源管理逻辑实行以由此检测和报告在数据处理系统中的资源泄漏。
图5是概述根据一个示例实施例的用于分配资源的示例操作的流程图。如图5中所示,该操作始于用户空间应用调用用于分配资源、例如QP、PD等的例程(步骤510)。内核更高层协议(ULP)分配资源(步骤520),并且收集用于分配资源的取证数据(步骤530)。根据以上描述的分级规则生成在用户空间和内核空间树数据结构中的对应节点(步骤540)。因此,根据正在分配的资源类型,基于指定的分级规则在树数据结构中产生不同父子关联,例如QP是CQ和PD二者的子代、FRPL是RCS和FRMR二者的子代等。在内核空间树数据结构中,扩展用于分配的资源的节点以存储收集的取证数据(步骤550)。该操作然后对于这一资源分配终止、但是可 以对于每个后续资源分配来重复。
图6是概述根据一个示例实施例的用于执行资源泄漏检测和报告的示例操作的流程图。如图6中所示,该操作通过让用户空间应用调用用于关闭设备的例程(步骤610)来开始。遍历用户空间树数据结构以确定与设备关联的上下文是否具有仍然分配的任何子节点(步骤620)。关于上下文是否具有仍然分配的任何子节点进行确定(步骤630)。如果不是,则可以取消分配任何剩余RDMA资源以及设备的关联用户空间和内核空间上下文(步骤640)。
如果有子节点,则这些代表资源泄漏。作为结果,不允许设备关闭(步骤650)并且可以生成指示不能执行关闭操作和原因、即资源泄漏的错误日志条目(步骤660)。此外,执行在内核空间树数据结构中的子节点的查找以发现在内核空间树数据结构中的对应节点并且取回在这些节点中或者与这些节点关联地存储的取证数据(步骤670)。取证数据存储于错误日志条目中用于以后使用、比如经由客户端计算设备向系统管理员或者其他授权的用户输出、由用于执行错误纠正或者报告的自动化的机制处理等(步骤680)。该操作然后终止。
为了进一步举例说明示例实施例的机制的操作,再次参照图4,以下系列事件可以在实现示例实施例的机制的系统上按顺序出现。当然,与描述的流程无关的其它事件可以出现或者可以未出现于这些列举的事件中的任何事件之间:
a.内核ULP分配CQ。
i.硬件特有库或者硬件特有驱动器(根据具体实现方式;下文称为“HW”)记录关于分配功能的信息,该信息包括分配资源的时间戳和栈路径(在412中)。
ii.关联CQ与内核级上下文的子代(410)。
b.内核ULP分配PD。
i.HW记录用于PD(414)结构的关于分配功能的信息(如它对于CQ完成的那样)。
ii.关联PD与内核级上下文的子代(410)。
c.内核ULP分配QP。
i.HW记录用于QP(416)结构的关于分配功能的信息(如它对于CQ完成的那样)。
ii.关联QP与用户标识的PD(414)的子代以及CQ(412)的数据结构的子代。
d.用户尝试卸载设备驱动器。
i.在这一点,hw层将中断连接从而向所有资源的所有者通知它们需要释放分配的资源。
ii.HW在卸载设备驱动器之前等待释放资源。HW等待释放内核上下文的跟踪的资源。
e.用户想要发现设备驱动器的卸载为什么被延迟并且发布用于转储关于未尽资源的信息的命令。在调用该命令时,用户能够在CQ和QP被分配时标识它们仍然正在被分配并且标识个别栈踪迹,这些栈踪迹标识谁分配它们从而允许调试问题。
在另一示例中,参照图3的数据结构,以下系列事件可以按照描述的顺序出现。当然,与描述的流程无关的其它事件可以出现或者可以未出现于这些列举的事件中的任何事件之间:
a.应用ULP分配上下文(310)。
i.HW记录关于分配功能的信息,该信息包括分配用户级上下文资源的时间戳和栈路径(在310中)。
ii.关联上下文与RCS的子代(330)。
b.应用ULP分配CQ。
i.HW记录用于CQ(312)结构的关于分配功能的信息(如它对于上下文完成的那样)。
ii.关联CQ与用户标识的用户级上下文的子代(310)。
c.应用ULP分配PD。
i.HW记录用于PD(314)结构的关于分配功能的信息(如它对于上下文完成的那样)。
ii.关联PD与用户标识的用户级上下文的子代(310)。
d.应用ULP分配QP。
i.HW记录用于QP(316)结构的关于分配功能的信息(如它对于上下文完成的那样)。
ii.关联QP与用户标识的PD(314)的子代和用户标识的CQ(312)的子代。
e.时间过去并且用户尝试取消分配CQ。
i.HW将在CQ具有存在的子代时使命令失败(针对注册的QP校验)。
1.它可以用相关调试信息记录事件,该调试信息标识分配的CQ、分配的QP和尝试取消分配CQ的路径。这将允许对错误应用的快速化解。
因此,示例实施例提供用于RDMA资源的资源泄漏检测的严格确定性实行的机制。示例实施例检测和在第一次出现、即FFDC时报告资源泄漏而充分取证信息指示负责资源泄漏的进程/应用。示例实施例借助在根本原因确定时删减错误空间来进一步改进软件支持进程。也就是说,通过将资源泄漏的报告连结到具体资源类型,示例实施例已经有效地删减超出涉及到的ULP之外、但是也对于ULP正在使用的具体资源的问题。这允许ULP缩减对于资源泄露来源的搜索,该搜索不是对所有RDMA资源使用或者甚至所有存储器区域的校验,而是对具体类型的RDMA资源或者存储器区域。
鉴于上文,可见可以在其中未提供RDMA资源泄漏检测机制的许多不同类型的数据处理环境中利用和实现示例实施例。例如可以在实现结构交换网络、比如InfiniBandTM、OFEDTM等的许多不同类型的计算环境中使用和实现示例实施例。另外,一般而言,在数据处理系统上执行的软件的内核级提供的资源管理逻辑中实现示例实施例。示例实施例操作用于通过使用与本发明引入的附加资源管理逻辑以及先前描述的链接列表和树数据结构——该资源管理逻辑在用户空间上下文数据结构和内核空间数据结构内对这样的链接列表 和树数据结构操作——在内核级标识和报告资源泄漏。
下文提供图7作为其中可以实现示例实施例的方面的示例数据处理系统环境或者计算设备。应当认识图7仅为示例而未旨在于断定或者暗示关于可以在其中实现本发明的方面或者实施例的环境的任何限制。可以进行对描绘的环境的许多修改而未脱离本发明的精神实质和范围。
图7是其中可以实现示例实施例的方面的示例数据处理系统或者计算设备的框图。数据处理系统700是实现用于本发明的示例实施例的过程的计算机可用代码或者指令可以位于其中的、可以实现为客户端计算设备、服务器计算设备、单独计算设备等的计算设备。
在描绘的示例中,数据处理系统700运用中枢架构,该中枢架构包括北桥和存储器控制器中枢(NB/MCH)702以及南桥和输入/输出(I/O)控制器中枢(SB/ICH)704。处理单元706、主存储器708和图形处理器710连接到NB/MCH702。图形处理器710可以通过加速图形端口(AGP)连接到NB/MCH702。
在描绘的示例中,局域网(LAN)适配器712连接到SB/ICH704。音频适配器716、键盘和鼠标适配器720、调制解调器722、只读存储器(ROM)724、硬盘驱动(HDD)726、CD-ROM驱动730、通用串行总线(USB)端口和其它通信端口732以及PCI/PCIe设备734通过总线738和总线740连接到SB/ICH704。PCI/PCIe设备可以例如包括以太网适配器、插入卡和用于笔记本计算机的PC卡。PCI使用卡总线控制器而PCIe未使用。ROM724可以例如是快闪基本输入/输出系统(BIOS)。
HDD726和CD-ROM驱动730通过总线740连接到SB/ICH704。HDD726和CD-ROM驱动730可以例如使用集成驱动电子装置(IDE)或者串行高级技术附件(SATA)接口。超级I/O(SIO)设备736可以连接到SB/ICH704。
操作系统在处理单元706上运行。操作系统协调在图7中的数据处理系统700内的各种部件并且提供这些部件的控制。作为客户 端,操作系统可以是商业上可用的操作系统、比如面向对象编程语言、比如JavaTM编程系统可以结合操作系统运行并且提供从在数据处理系统700上执行的JavaTM程序或者应用对操作系统的调用。
作为服务器,数据处理系统700可以例如是运行高级交互管理操作系统或者操作系统的eServerTM计算机系统。数据处理系统700可以是包括处理单元706中的多个处理器的对称多处理器(SMP)系统。备选地,可以运用单处理器系统。
用于操作系统、面向对象的编程系统和应用或者程序的指令位于存储设备、比如HDD726上并且可以被加载到主存储器708中用于由处理单元706执行。用于本发明的示例实施例的过程可以例如使用可以位于存储器、如比如主存储器708、ROM724中或者一个或者多个外围设备726和730中的计算机可用程序代码由处理单元706执行。
总线系统、比如如图7中所示总线738或者总线740可以由一个或者多个总线组成。当然,总线系统可以使用任何类型的通信结构或者架构来实现,该通信结构或者架构提供在附着到结构或者架构的不同部件或者设备之间的数据传送。通信单元、比如图7的调制解调器722或者网络适配器712可以包括用来发送和接收数据的一个或者多个设备。存储器可以例如是主存储器708、ROM724或者比如在图7中的NB/MCH702中发现的高速缓存。
本领域普通技术人员将认识到图7中的硬件可以根据实现方式而变化。除了在图7中描绘的硬件之外或者取代该硬件还可以使用其它内部硬件或者外围设备、比如闪存、等效非易失性存储器或者光盘等。示例实施例的过程也可以应用于除了先前提到的SMP系统之外的多处理器数据处理系统而未脱离本发明的精神实质和范围。
另外,数据处理系统700可以采用包括客户端计算设备、服务器计算设备、平板计算机、膝上型计算机、电话或者其它通信设备、 个人数字助理(PDA)等的多个不同数据处理系统中的任何数据处理系统的形式。在一些示例中,数据处理系统700可以例如是配置有闪存以提供用于存储操作系统文件和/或用户生成的数据的非易失性存储器的便携计算设备。实质上,数据处理系统700可以是无架构限制的任何已知或者以后开发的数据处理系统。
如以上指出的那样,应当认识示例实施例可以采用全硬件实施例、全软件实施例或者包含硬件与软件单元二者的实施例这样的形式。在一个示例实施例中,在包括但不限于固件、常驻软件、微代码等的软件或者程序代码中实施示例实施例的机制。
本发明的描述已经出于示例和描述的目的而加以呈现并且未旨在于穷举本发明或者使本发明限于公开的形式。许多修改和变化将为本领域普通技术人员所清楚。选择和描述实施例以便最佳地说明本发明的原理、实际应用并且使本领域其他普通技术人员能够针对具有如与设想的特定使用相适合的各种修改的各种实施例来理解本发明。

RDMA资源泄漏检测和报告.pdf_第1页
第1页 / 共23页
RDMA资源泄漏检测和报告.pdf_第2页
第2页 / 共23页
RDMA资源泄漏检测和报告.pdf_第3页
第3页 / 共23页
点击查看更多>>
资源描述

《RDMA资源泄漏检测和报告.pdf》由会员分享,可在线阅读,更多相关《RDMA资源泄漏检测和报告.pdf(23页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 (43)申请公布日 (21)申请号 201410461344.2(22)申请日 2014.09.1114/034,739 2013.09.24 USG06F 12/02(2006.01)(71)申请人国际商业机器公司地址美国纽约阿芒克(72)发明人 O卡多纳 JP梅辛CL所托冈扎尔兹 P V托里斯(74)专利代理机构北京市金杜律师事务所 11256代理人王茂华 陈颖(54) 发明名称RDMA资源泄漏检测和报告(57) 摘要本发明涉及一种RDMA资源泄漏检测和报告。提供用于远程直接存储器访问(RDMA)资源泄漏检测。生成包括用户空间RDMA资源分级数据结构的用户空间上下文。生。

2、成包括内核RDMA资源分级数据结构的内核上下文。内核RDMA资源分级数据结构包括用户空间RDMA资源分级数据结构的节点。接收对于关闭RDMA资源的请求,并且遍历用户空间RDMA资源分级数据结构以确定RDMA资源是否具有在用户空间RDMA资源分级数据结构中分配的子RDMA资源。响应于基于用户空间RDMA资源分级数据结构或者内核RDMA资源分级数据结构中的至少一个确定RDMA资源具有在用户空间RDMA资源分级数据结构中分配的子RDMA资源来检测资源泄漏。(30)优先权数据(51)Int.Cl.(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书15页 附图5页(10)申请。

3、公布号 CN 104461912 A(43)申请公布日 2015.03.25CN 104461912 A1/2页21.一种在数据处理系统中的用于远程直接存储器访问(RDMA)资源泄漏检测的方法,所述数据处理系统包括处理器和存储器,所述方法包括:由所述数据处理系统在所述数据处理系统的用户空间中生成包括用户空间RDMA资源分级数据结构的用户空间上下文;由所述数据处理系统在所述数据处理系统的内核空间中生成包括内核RDMA资源分级数据结构的内核上下文,其中所述内核RDMA资源分级数据结构包括所述用户空间RDMA资源分级数据结构的节点;由所述数据处理系统接收对于关闭RDMA资源的请求;由所述数据处理系统。

4、遍历所述用户空间RDMA资源分级数据结构,以确定所述RDMA资源是否具有在所述用户空间RDMA资源分级数据结构中分配的子RDMA资源;由所述数据处理系统响应于基于所述用户空间RDMA资源分级数据结构或者所述内核RDMA资源分级数据结构中的至少一个确定所述RDMA资源具有在所述用户空间RDMA资源分级数据结构中分配的子RDMA资源来检测资源泄漏;以及由所述数据处理系统报告所述资源泄漏。2.根据权利要求1所述的方法,其中所述用户空间RDMA资源分级数据结构或者所述内核RDMA资源分级数据结构中的至少一个包括红黑树数据结构。3.根据权利要求1所述的方法,还包括:实行有序取消分配策略,所述有序取消分配。

5、策略指定在所述用户空间RDMA资源分级数据结构或者内核RDMA资源分级数据结构中的父资源不能在所述父资源的子资源被取消分配之前被取消分配,其中检测资源泄漏包括检测对于违反所述有序取消分配策略的尝试。4.根据权利要求1所述的方法,其中所述内核RDMA资源分级数据结构是所述用户空间RDMA资源分级数据结构的超集,并且包括代表在所述用户空间RDMA资源分级数据结构中代表的RDMA资源并且代表内核空间RDMA资源的数据。5.根据权利要求4所述的方法,其中所述内核RDMA资源分级数据结构的与用户空间RDMA资源或者内核空间RDMA资源对应的节点还包括从所述用户空间RDMA资源或者内核空间RDMA资源收集。

6、的关联取证数据,其中与所述内核RDMA资源分级数据结构的节点关联的所述取证数据提供标识与所述节点关联的资源泄漏的来源的信息。6.根据权利要求5所述的方法,其中所述取证数据包括用于分配了与所述节点关联的RDMA资源的进程的进程标识符、与所述节点关联的所述RDMA资源何时被分配的指示符、或者分配了与所述节点关联的所述RDMA资源的进程的整个调用栈中的至少一项。7.根据权利要求5所述的方法,其中报告所述资源泄漏还包括:使所述子RDMA资源与在所述内核RDMA资源分级数据结构中的对应节点相关;从与所述子RDMA资源对应的所述节点取回取证数据;以及生成包括所述取证数据的资源泄漏通知。8.根据权利要求1所。

7、述的方法,其中所述用户空间RDMA分级数据结构和内核RDMA分级数据结构使用实行如下规则的逻辑来生成,所述规则为队列对(QP)RDMA资源是对应保护域(PD)RDMA资源和对应完成队列(CQ)RDMA资源的子代。9.根据权利要求1所述的方法,其中所述用户空间RDMA分级数据结构和内核RDMA权 利 要 求 书CN 104461912 A2/2页3分级数据结构使用实行如下规则的逻辑来生成,所述规则为所有RDMA资源是对应保护域(PD)RDMA资源的子代。10.根据权利要求1所述的方法,其中所述用户空间RDMA分级数据结构和内核RDMA分级数据结构使用实行如下规则的逻辑来生成,所述规则为快速注册页。

8、面列表(FRPL)RDMA资源是RDMA控制结构(RCS)和对应快速注册存储器区域(FRMR)RDMA资源的子代。11.一种包括计算机可读存储介质的计算机程序产品,所述计算机可读介质具有存储于其中的计算机可读程序,其中所述计算机可读程序在数据处理系统上被执行时使所述数据处理系统:在所述数据处理系统的用户空间中生成包括用户空间RDMA资源分级数据结构的用户空间上下文;在所述数据处理系统的内核空间中生成包括内核RDMA资源分级数据结构的内核上下文,其中所述内核RDMA资源分级数据结构包括所述用户空间RDMA资源分级数据结构的节点;接收对于关闭RDMA资源的请求;遍历所述用户空间RDMA资源分级数据。

9、结构以确定所述RDMA资源是否具有在所述用户空间RDMA资源分级数据结构中分配的子RDMA资源;响应于基于所述用户空间RDMA资源分级数据结构或者所述内核RDMA资源分级数据结构中的至少一个确定所述RDMA资源具有在所述用户空间RDMA资源分级数据结构中分配的子RDMA资源来检测资源泄漏;以及报告所述资源泄漏。12.一种装置,包括:处理器;以及耦合到所述处理器的存储器,其中所述存储器包括指令,所述指令在被所述处理器执行时使所述处理器:在所述数据处理系统的用户空间中生成包括用户空间RDMA资源分级数据结构的用户空间上下文;在所述数据处理系统的内核空间中生成包括内核RDMA资源分级数据结构的内核上。

10、下文,其中所述内核RDMA资源分级数据结构包括所述用户空间RDMA资源分级数据结构的节点;接收对于关闭RDMA资源的请求;遍历所述用户空间RDMA资源分级数据结构以确定所述RDMA资源是否具有在所述用户空间RDMA资源分级数据结构中分配的子RDMA资源;响应于基于所述用户空间RDMA资源分级数据结构或者所述内核RDMA资源分级数据结构中的至少一个确定所述RDMA资源具有在所述用户空间RDMA资源分级数据结构中分配的子RDMA资源来检测资源泄漏;以及报告所述资源泄漏。权 利 要 求 书CN 104461912 A1/15页4RDMA 资源泄漏检测和报告技术领域0001 本申请总体涉及一种改进的数。

11、据处理装置和方法,并且更具体地涉及用于检测和报告远程直接存储器访问(RDMA)资源泄漏的机制。背景技术0002 远程直接存储器访问(RDMA)是允许从一个计算机的存储器向另一计算机的存储器中的直接存储器访问的功能而未涉及到任一计算机的操作系统。RDMA有助于高吞吐量、低延时联网,这在大规模并行计算机群集中尤其有用。0003 RDMA通过使计算机的网络适配器能够向应用存储器或者从应用存储器直接传送数据、由此消除在操作系统中的数据缓冲器与在应用存储器之间复制数据的需求来支持零复制联网。这样的直接数据传送不要求处理器、高速缓冲存储器等完成任何工作、并且不要求上下文切换。这样的直接传送可以与计算机正在。

12、执行的其它系统操作并行执行。例如在应用执行RDMA读取或者写入请求时,经由支持RDMA功能的网络适配器向网络直接递送应用数据从而减少传送的延时。0004 许多现代架构和规范是鉴于RDMA和具有RDMA功能的网络适配器而设计的。例如InniBandTM贸易协会(IBTA)维护和促进的InniBandTM规范以及纽约阿芒克的国际商业机器公司开发的InniBandTM架构提供支持经由InniBandTM结构执行RDMA操作。类似地,开放结构联盟(OFA)维护和促进的并且在InniBandTM规范上构建的开放结构企业分布(DFEDTM)规范和架构也提供支持RDMA操作。对于关于InniBandTM和O。

13、FEDTM的更多信息,可以从IBTA和OFA组织以及对应网站获得附加信息。发明内容0005 在一个示例实施例中,提供一种在包括处理器和存储器的数据处理系统中的用于远程直接存储器访问(RDMA)资源泄漏检测的方法。该方法包括数据处理系统在数据处理系统的用户空间中生成包括用户空间RDMA资源分级数据结构的用户空间上下文。该方法还包括数据处理系统在数据处理系统的内核空间中生成包括内核RDMA资源分级数据结构的内核上下文。内核RDMA资源分级数据结构包括用户空间RDMA资源分级数据结构的节点。该方法也包括数据处理系统接收对于关闭RDMA资源的请求并且数据处理系统遍历用户空间RDMA资源分级数据结构以确。

14、定RDMA资源是否具有在用户空间RDMA资源分级数据结构中分配的子RDMA资源。另外,该方法包括数据处理系统响应于基于用户空间RDMA资源分级数据结构或者内核RDMA资源分级数据结构中的至少一个确定RDMA资源具有在用户空间RDMA资源分级数据结构中分配的子RDMA资源来检测资源泄漏。此外,该方法包括数据处理系统报告资源泄漏。0006 在其它示例实施例中,提供一种包括计算机可用或者可读介质的计算机程序产品,该计算机可用或者可读介质具有计算机可读程序。计算机可读程序在计算设备上被执行时使计算设备执行以上关于方法示例实施例概述的操作中的各种操作和组合。说 明 书CN 104461912 A2/15。

15、页50007 在更多另一示例实施例中,提供一种系统/装置。该系统/装置可以包括一个或者多个处理器和耦合到一个或者多个处理器的存储器。存储器可以包括指令,这些指令在由一个或者多个处理器执行时使一个或者多个处理器执行以上关于方法示例实施例概述的操作中的各种操作和组合。0008 本发明的这些和其它特征以及优点将在本发明的示例实施例的以下具体描述中被描述或者按照以下具体描述将变得为本领域普通技术人员所清楚。附图说明0009 将通过参照在结合附图阅读时的示例实施例的以下具体描述来最好地理解本发明及其优选使用方式和更多目的以及优点,其中:0010 图1是利用开放结构企业分布(OFEDTM)核的一个这样的R。

16、DMA模型的示例;0011 图2是图示用于上下文管理的示例实施例的机制的示例框图;0012 图3是根据一个示例实施例的示例用户空间树数据结构的示例框图;0013 图4是根据一个示例实施例的示例内核空间树数据结构的示例框图;0014 图5是概述根据一个示例实施例的用于分配资源的示例操作的流程图;0015 图6是概述根据一个示例实施例的用于执行资源泄漏检测和报告的示例操作的流程图;并且0016 图7是其中可以实施示例实施例的方面的计算设备的示例框图。具体实施方式0017 示例实施例提供用于远程直接存储器访问(RDMA)资源泄漏检测和报告的机制。在RDMA与传统复用输入/输出(IO)模型、比如网络接。

17、口卡(NIC)和光纤信道(FC)之间的主要差异之一是资源管理。在复用IO模型之下,有限缓冲器/资源集合由低级、例如开放系统互连(OSI)模型第2层(数据链路层)设备驱动器分配。经由存储器复制通过OSI层2复用待发送/接收的数据。OSI模型的更高层协议(ULP)操作范围是分配虚拟存储器而设备驱动器操作范围是复制或者映射虚拟存储器用于设备驱动器的使用。在数据链路层接收的数据必须从数据链路层的缓冲器/资源向应用层(例如在OSI模型中第7层)的虚拟存储器复制。0018 为了避免可能需要附加资源并且可能由于需要在更低级缓冲器与更高级虚拟存储器之间执行复制操作以及其它原因而引入附加延时的这样的复制操作,已。

18、经引入RDMA模型。图1是利用开放结构企业分布(OFEDTM)核的一个这样的RDMA模型的示例。如图1中所示,应用110存在于用户空间120中并且对库函数进行调用或者调动库函数,以用于经由OFEDTM库130和硬件特有库140执行RDMA操作。OFEDTM库130包括可以经由控制路径150用来与在操作系统的内核空间170中的OFEDTM核160通信的动词库(libibverb)和DMA连接管理器库(librdmacm)。在库130中的动词(verb)是OFEDTM封装部分并且向链接到库130的应用、例如应用110提供动词应用编程接口(API),该应用可以使用该API以利用RDMA功能。子库li。

19、bibverb和librdmacm包含动词,其中libibverb与资源有关而librdmacm动词用来操纵协议以在本地与远程系统之间连接队列对(QP)。在实质上,OFEDTM库130包含对于OFEDTM事实标准的应用级支持并且提供用于实施RDMA的API。说 明 书CN 104461912 A3/15页60019 OFEDTM核160提供OFEDTMRDMA机制的其余部分,这些部分包括操作系统内核级动词API以及RDMA协议的硬件不可知实现方式的整体。OFEDTM核160可以经由硬件特有设备驱动器195与在物理硬件级185的网络适配器180通信。硬件特有设备驱动器195和硬件特有库140可以。

20、是在特定实现方式中使用的网络适配器190的类型特有的。0020 如从图1可见,数据路径105经由使用OFEDTM库130和硬件特有库140而执行的RDMA操作从在用户平面120中的应用110直接流向在物理硬件级185中的网络适配器180并且反之亦然。仍然经由控制路径150向在内核空间170中的OFEDTM核160和硬件特有设备驱动器195路由与网络适配器190的控制路径通信。0021 使用这一架构,更高层协议(ULP)在网络适配器190上执行资源创建。应当认识到,ULP是指在协议模型、例如OSI模型中的协议栈上向上相对更高的应用或者其它代码。例如直接使用OFEDTM动词的代码可以是在应用层的应。

21、用、但是也可以是用户直接访问编程库(uDAPL)、即应用空间用户,该uDAPL又可以由中间件层使用,该中间件层本身由应用、例如DB2使用。术语ULP在这一场景中是指代码的直接用户(即OFEDTM动词的直接用户),而并未使ULP限缩为可能被去除了许多个级的应用。0022 ULP执行显式调用以分配和映射用于在设备、例如网络适配器180上直接存储器访问(DMA)的资源。因此,RDMA设备驱动器、即硬件特有驱动器195向OFEDTM核160每设备、例如网络适配器一个实例注册的用于特定设备、例如网络适配器180的设备驱动器实例有效地资源分配器,并且比虚拟NIC/FC驱动器更类似于虚拟机管理器(VMM)而。

22、区别在于设备驱动器为动态而VMM对于关联虚拟机(VM)的寿命持续。ULP通过OFEDTM库130和/或OFEDTM核160的动词访问设备驱动器实例以分配在特有设备/设备驱动器对、例如网络适配器/适配器驱动器对上的资源。0023 设备驱动器195实例必须允许每个操作系统实例(或者VM)的干净上载/重载,从而无资源泄漏。如果资源泄漏随时间持续,则资源泄漏可以妨碍设备、例如网络适配器190或者甚至操作系统实例本身能够被使用而未重新引导计算设备。例如ULP释放或者取消分配RDMA资源失败对于组合的操作系统(或者VM)存储器、总线存储器、适配器硬件存储器等造成存储器泄漏,所有这些部件是支持(backin。

23、g)RDMA资源分配的部件。0024 资源泄漏、比如存储器泄漏在资源未被用于重用的管理机制恢复时出现并且可以保持分配、但是未被使用或者访问。资源泄漏条件可以引起错误传播问题、包括阻止错误恢复,因为恢复由于未释放的资源和关联函数指针而不能继续,从而出于相似原因而引起崩溃和数据破坏并且阻止固件更新操作的任何重置。在存储器泄漏的情况下,在具有如图1中所示RDMA架构的情况下,总线存储器可以泄漏而与在网络适配器190上的虚拟存储器和物理存储器无关、可以泄漏而与总线存储器和/或虚拟存储器无关。因此,与RDMA架构关联的资源泄漏问题可能化解起来复杂和成问题。0025 用于解决在RDMA架构中的资源泄漏问题。

24、的可能解决方案落入级联错误/错误传播范畴中,这意味着这些解决方案通过在更低级设备驱动器内涵盖ULP错误来抽象化ULP错误。例如ULP错误可以是从为RDMA访问而配置的设备驱动器(即RDMA设备驱动器)向对应设备分配队列对。然而如果ULP内核扩展然后在以后关闭被分配队列对的连接并且未释放队列对资源,则从该点以后未对队列对进行寻址。在这样的情形中,RDMA设备驱动器不能从主机系统存储器被关闭/卸载,因为它具有仍然在使用中的资源、即队列对资源。因说 明 书CN 104461912 A4/15页7此,ULP内核扩展代码已经负面地影响在它本身以外的其它代码(级联错误)。0026 对于引起存储器泄漏的这样。

25、的ULP错误的一种可能解决方案的一个示例是将存储器泄漏仅绑定到虚拟存储器,从而它未影响操作系统的其它元素。例如RDMA设备驱动器可以选择在网络适配器上清除队列对代表的资源,但是RDMA设备驱动器不能释放队列对存储器,因为它可能被用户空间应用引用。在这样的情形中,RDMA设备驱动器仍然可以卸载,然而队列对存储器将在以后不可恢复。尽管将这样的存储器泄漏仅绑定到虚拟存储器可以允许卸载RDMA设备驱动器并且有些减轻存储器泄漏问题,但是这一方式未解决关于资源回收和清除的不恰当ULP操作的根本问题以及第一失败数据捕获(FFDC)原理,因为如果不能在问题初始地出现时发现存储器泄漏的来源,则在执行期间的以后点。

26、绕过它不那么有效,因为存储器仍然被泄漏并且ULP仍然正在错误地操作。0027 另外,绑定解决方案由于在计算机程序员的知识以外的二次影响本身很复杂和易出错。绑定解决方案的复杂性和易出错属性给设备驱动器增添显著风险、即增添如下可能错误情况,设备驱动器的程序员将在它应当作为应用错误被解决时试图在设备驱动器的编码中覆盖它。绑定解决方案造成ULP用无效逻辑并且潜在地用如下行为执行,该行为可能由于为了保护设备驱动器免于错误地操作的ULP而必须提供的大量代码而将来禁止应用程序接口(API)连接。0028 此外,在网络适配器错误恢复的情况下,网络适配器需要被重置并且资源被重新初始化,从而它们可以被重用,这允许。

27、操作系统继续工作而无重新引导、包括经历失败的网络适配器的功能。有了RDMA资源,设备驱动器要求ULP在这一网络适配器恢复之前释放资源,并且这样做的失败结果将妨碍操作系统(和其它ULP)使用网络适配器。在没有下文描述的示例实施例的机制的情况下,标识未释放资源的ULP有困难。0029 在已知的RDMA架构中,资源泄漏将仅经由系统崩溃或者所得数据破坏来间接检测。从资源泄漏的结果、即崩溃或者数据破坏反向跟踪以标识资源泄漏根本原因由于错误的间接属性而为一项非平凡和耗费时间的任务。因此,软件开发和支持团队必须执行系列设备驱动器仪器测量和问题重建以便对这样的崩溃和数据破坏的来源进行定点和标识以由此标识在RD。

28、MA资源中的资源泄漏为问题的根本原因。0030 本示例实施例提供用于避免这样的耗费时间和资源成本密集的过程的机制。另外,本发明操作用于辅助减少在ULP中的潜在错误代码并且提供一种用于标识这些错误代码部分或者“故障(bug)”、从而可以解决它们而未求助于这些耗费时间的备选方案。0031 示例实施例的机制实施的核心概念是一旦资源泄漏条件出现就决定性地检测到它并且采取适当动作,从而管理员、应用开发员或者自动化的机制被通知资源泄漏、然后可以采取纠正动作。示例实施例使设备驱动器构架充分地健壮以便减少软件支持成本以及防止潜在应用错误向生产环境中传播。0032 在一个示例实施例中,这些结果通过实现一系列红黑。

29、树和/或链接列表以跟踪每个资源来实现。在一个示例实施例中,资源分集是如在OFEDTM模型中实现的InniBandTM父子关系模型的变形。示例实施例利用协议和空间不可知(即用户空间和内核空间不可知)列表和树服务。另外,示例实施例可用于在进程/应用粒度上的泄漏检测和恰当资源取消分配顺序实行二者。另外,示例实施例允许对有序平衡二元树、例如红黑树的数据路径直通(log2N)效率的隐式搜索优化。说 明 书CN 104461912 A5/15页80033 下文将参照附图更具体描述本发明的示例实施例的以上方面和优点。应当认识到,附图仅旨在于举例说明本发明的示例实施例。本发明可以涵盖未在图中显式地示出的方面、。

30、实施例和对描绘的示例实施例的修改、但是将按照示例实施例的本说明书而容易为本领域普通技术人员所清楚。0034 所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在任何一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可用的程序代码。0035 可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以。

31、是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置、器件或者任意以上的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。0036 在一些示例实施例中,。

32、计算机可读介质为非瞬态计算机可读介质。非瞬态计算机可读介质是任何如下介质,该介质不是无实体的信号或者蚕箔波、即本身为纯信号或者传播波。非瞬态计算机可读介质可以利用信号和传播波、但是本身不是信号或者传播波。因此,例如以如比如任何方式利用信号以维持它们的状态的各种形式的存储器设备和其它类型的系统、设备或者装置可以在本说明书的范围内视为非瞬态计算机可读介质。0037 在另一方面,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机。

33、可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。0038 计算机可读介质上包含的计算机代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、射频(RF)等等,或者上述的任意合适的组合。0039 可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言诸如JavaTM、SmalltalkTM、C+等,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独。

34、立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。0040 下面将参照根据本发明示例实施例的方法、装置(系统)和计算机程序产品的流说 明 书CN 104461912 A6/15页9程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数。

35、据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。0041 也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。0042 也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置。

36、或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。0043 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反。

37、的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。0044 如以上提到的那样,示例实施例利用协议和空间不可知列表和树服务以便提供资源泄漏检测和报告功能。示例实施例还修改和扩展在OFEDTM中的上下文管理模型,其中上下文是存储信息的数据结构,该信息用于管理数据处理系统的资源和与资源的连接(包括但不限于用于资源或者与资源的连接的状态信息)以提供协议和空间不可知列表和树服务可以对其操作的这些链接列表和树数据结构。在一个示例实施例中,上下文。

38、是OFEDTM动词定义的、比如ib_ucontext标识的软件资源并且被分配作为对alloc_ucontext的调用的结果(并且被dalloc_ucontext)取消分配,该alloc_ucontext(和dalloc_ucontext)是应用级ULP使用的动词,该动词向OFEDTM层标识资源和用户级事件操纵器的统一用户。这一上下文资源被连结到资源池将分配的所有后续资源。0045 上下文是用于用户空间应用的所需资源作为用于完成队列(CQ)(存储已经被报告为完成的信息操作的数据结构)的和保护域(PD)(代表与资源关联的访问权限的数据结构)的父代(parent)。每个上下文等效于适配器实例/地址空。

39、间、即每对适配器实例和用户空间地址空间具有它自己的对应用户空间上下文数据结构。因此,如果用户空间应用与多个用户空间地址空间关联或者存在用户空间应用与之操作的多个适配器实例,则该用户空间应用可以具有多于一个用户空间上下文数据结构。0046 示例实施例创建和/或利用内核空间上下文数据结构以涵盖所有用户空间和内核空间资源。然而内核空间上下文数据结构并不被视为实际内核资源、即它不被内核ULP说 明 书CN 104461912 A7/15页10分配。0047 因此,利用示例实施例,OFEDTM模型架构在OFEDTM模型架构事实上未包括内核空间上下文数据结构时被修改为包括内核空间上下文数据结构。示例实施例。

40、还提供用户空间上下文数据结构,其中这些内核空间和用户空间上下文中的每项存储用于跟踪相应内核空间和用户空间资源的红黑树结构。此外,示例实施例提供用于内核空间和用户空间二者的资源管理逻辑,该资源管理逻辑借助该修改以包括内核空间和用户空间上下文数据结构二者而被规范化以用于内核空间和用户空间二者。0048 如以上提到的那样,内核空间上下文数据结构比如以链接列表的形式存储红黑树数据结构以管理父子关系。红黑类型树是自平衡二元搜索树类型。自平衡通过以所得涂绘的树满足某些属性这些属性不允许它变成显著地失衡、即一个颜色的节点数目与另一颜色相比显著地更高这样的方式用两个颜色(这些通常称为红和黑、因此是树的名称)涂。

41、绘每个节点之一来提供。在修改树时,新树随后被重新排列和重新涂绘以恢复着色属性。以可以高效地执行这一重新排列和重新着色这样的方式设计属性。0049 树的平衡并非完美,但是它好到足以允许它保障在O(log n)时间内搜索,其中n是在树中的元素总数。插入和删除操作与树重新排列和重新着色也是在O(log n)时间内执行的。跟踪每个节点的颜色由于仅有两个颜色而每节点仅需1位信息。树未包含它是红黑树特有的任何其它数据,因此它的存储器覆盖区域(footprint)与经典(未着色)二元搜索树几乎相同。在许多情况下,可以无附加存储器成本存储附加颜色位信息。红黑树具有以下属性:(1)在树中的每个节点被着色为红或者。

42、黑;(2)每个叶节点被着色为黑;(3)如果节点为红,则它的两个子代(child)为黑(这隐含着在从根节点到叶节点的任何路径上,红节点决不相邻,然而任何数目的黑节点可以依次出现);并且(4)从节点到后代叶节点的每个简单路径包含相同数目的黑节点。0050 示例实施例的可以在设备驱动器、内核等中驻留的资源管理逻辑提供用于利用这样的红黑树以基于父子节点关系实行节点去除规则以及在标识资源泄漏出现时标识它们并且提供关于这样的资源泄漏的来源的信息的逻辑。例如在用户应用分配上下文(比如通过调用ib_ucontext)时,这一内容存储于与RDMA控制结构(RCS)关联的列表中,该RCS是内核或者设备驱动器(下文。

43、为了简化说明而假设为设备驱动器)维护的数据结构并且用来包含RDMA特有数据结构。在分配另一更低级资源时,用户空间应用将更低级资源连结到上下文。设备驱动器使用与RCS关联的列表来跟踪这一关系。设备驱动器防止在取消分配更低级资源之前取消分配上下文,因为它是上下文的子代并且最低级资源的存在假设上下文贯穿最低级资源的寿命可用。有序取消分配的这一实行由示例实施例的机制实施并且也可以用来如下文描述的那样标识潜在资源泄漏及其资源。0051 相似地,关于在一个示例实施例中如下文描述的那样接近地遵循OFEDTM模型的用户空间上下文数据结构红黑树,资源管理逻辑被扩展为如果子节点存在则不能去除在树中的父节点实行这样的规则。这将下文在图3和4的讨论中更具体地加以举例说明。另外,资源管理逻辑创建在完成队列(CQ)与队列对(QP)之间的依赖性,从而如果关联QP存在则不能去除CQ、即完成队列是队列对的父代。这通过在红黑树数据结构中在QP创建时间关联QP与对应CQ来实现。红黑树结构跟踪在父CQ和子QP之间的这一关联而红黑树和用于实行取消分配规则的关联逻辑用作这样的关联的跟踪器。也就是说,红黑树结构服务于允许说 明 书CN 104461912 A10。

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

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


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