《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。