Rdma资源泄漏检测和报告的制作方法

文档序号:6626665阅读:276来源:国知局
Rdma资源泄漏检测和报告的制作方法
【专利摘要】本发明涉及一种RDMA资源泄漏检测和报告。提供用于远程直接存储器访问(RDMA)资源泄漏检测。生成包括用户空间RDMA资源分级数据结构的用户空间上下文。生成包括内核RDMA资源分级数据结构的内核上下文。内核RDMA资源分级数据结构包括用户空间RDMA资源分级数据结构的节点。接收对于关闭RDMA资源的请求,并且遍历用户空间RDMA资源分级数据结构以确定RDMA资源是否具有在用户空间RDMA资源分级数据结构中分配的子RDMA资源。响应于基于用户空间RDMA资源分级数据结构或者内核RDMA资源分级数据结构中的至少一个确定RDMA资源具有在用户空间RDMA资源分级数据结构中分配的子RDMA资源来检测资源泄漏。
【专利说明】RDMA资源泄漏检测和报告

【技术领域】
[0001] 本申请总体涉及一种改进的数据处理装置和方法,并且更具体地涉及用于检测和 报告远程直接存储器访问(RDM)资源泄漏的机制。

【背景技术】
[0002] 远程直接存储器访问(RDM)是允许从一个计算机的存储器向另一计算机的存储 器中的直接存储器访问的功能而未涉及到任一计算机的操作系统。RDM有助于高吞吐量、 低延时联网,这在大规模并行计算机群集中尤其有用。
[0003] RDM通过使计算机的网络适配器能够向应用存储器或者从应用存储器直接传送 数据、由此消除在操作系统中的数据缓冲器与在应用存储器之间复制数据的需求来支持零 复制联网。这样的直接数据传送不要求处理器、高速缓冲存储器等完成任何工作、并且不要 求上下文切换。这样的直接传送可以与计算机正在执行的其它系统操作并行执行。例如在 应用执行RDM读取或者写入请求时,经由支持RDM功能的网络适配器向网络直接递送应 用数据从而减少传送的延时。
[0004] 许多现代架构和规范是鉴于RDM和具有RDM功能的网络适配器而设计的。例 如InfiniBand?贸易协会(IBTA)维护和促进的InfiniBand?规范以及纽约阿芒克的国际商 业机器公司开发的InfiniBand?架构提供支持经由InfiniBand?结构执行RDM操作。类似 地,开放结构联盟(OFA)维护和促进的并且在InfiniBand?规范上构建的开放结构企业分布 (DFED tm)规范和架构也提供支持RDM操作。对于关于InfiniBand?和0FED?的更多信息, 可以从IBTA和OFA组织以及对应网站获得附加信息。


【发明内容】

[0005] 在一个示例实施例中,提供一种在包括处理器和存储器的数据处理系统中的用于 远程直接存储器访问(RDMA)资源泄漏检测的方法。该方法包括数据处理系统在数据处理 系统的用户空间中生成包括用户空间RDM资源分级数据结构的用户空间上下文。该方法 还包括数据处理系统在数据处理系统的内核空间中生成包括内核RDMA资源分级数据结构 的内核上下文。内核RDM资源分级数据结构包括用户空间RDM资源分级数据结构的节点。 该方法也包括数据处理系统接收对于关闭RDMA资源的请求并且数据处理系统遍历用户空 间RDM资源分级数据结构以确定RDM资源是否具有在用户空间RDM资源分级数据结构 中分配的子RDM资源。另外,该方法包括数据处理系统响应于基于用户空间RDM资源分 级数据结构或者内核RDM资源分级数据结构中的至少一个确定RDM资源具有在用户空间 RDM资源分级数据结构中分配的子RDM资源来检测资源泄漏。此外,该方法包括数据处理 系统报告资源泄漏。
[0006] 在其它示例实施例中,提供一种包括计算机可用或者可读介质的计算机程序产 品,该计算机可用或者可读介质具有计算机可读程序。计算机可读程序在计算设备上被执 行时使计算设备执行以上关于方法示例实施例概述的操作中的各种操作和组合。
[0007] 在更多另一示例实施例中,提供一种系统/装置。该系统/装置可以包括一个或 者多个处理器和耦合到一个或者多个处理器的存储器。存储器可以包括指令,这些指令在 由一个或者多个处理器执行时使一个或者多个处理器执行以上关于方法不例实施例概述 的操作中的各种操作和组合。
[0008] 本发明的这些和其它特征以及优点将在本发明的示例实施例的以下具体描述中 被描述或者按照以下具体描述将变得为本领域普通技术人员所清楚。

【专利附图】

【附图说明】
[0009] 将通过参照在结合附图阅读时的示例实施例的以下具体描述来最好地理解本发 明及其优选使用方式和更多目的以及优点,其中:
[0010] 图1是利用开放结构企业分布(OFEDTM)核的一个这样的RDMA模型的示例;
[0011] 图2是图示用于上下文管理的示例实施例的机制的示例框图;
[0012] 图3是根据一个示例实施例的示例用户空间树数据结构的示例框图;
[0013] 图4是根据一个示例实施例的示例内核空间树数据结构的示例框图;
[0014] 图5是概述根据一个示例实施例的用于分配资源的示例操作的流程图;
[0015] 图6是概述根据一个示例实施例的用于执行资源泄漏检测和报告的示例操作的 流程图;并且
[0016] 图7是其中可以实施示例实施例的方面的计算设备的示例框图。

【具体实施方式】
[0017] 示例实施例提供用于远程直接存储器访问(RDM)资源泄漏检测和报告的机制。 在RDM与传统复用输入/输出(IO)模型、比如网络接口卡(NIC)和光纤信道(FC)之间的 主要差异之一是资源管理。在复用IO模型之下,有限缓冲器/资源集合由低级、例如开放 系统互连(OSI)模型第2层(数据链路层)设备驱动器分配。经由存储器复制通过OSI层 2复用待发送/接收的数据。OSI模型的更高层协议(ULP)操作范围是分配虚拟存储器而 设备驱动器操作范围是复制或者映射虚拟存储器用于设备驱动器的使用。在数据链路层接 收的数据必须从数据链路层的缓冲器/资源向应用层(例如在OSI模型中第7层)的虚拟 存储器复制。
[0018] 为了避免可能需要附加资源并且可能由于需要在更低级缓冲器与更高级虚拟存 储器之间执行复制操作以及其它原因而引入附加延时的这样的复制操作,已经引入RDM 模型。图1是利用开放结构企业分布(OFEDtm)核的一个这样的RDM模型的示例。如图1 中所示,应用110存在于用户空间120中并且对库函数进行调用或者调动库函数,以用于 经由0FED?库130和硬件特有库140执行RDMA操作。0FED?库130包括可以经由控制路 径150用来与在操作系统的内核空间170中的0FED?核160通信的动词库(Iibibverb)和 DMA连接管理器库(Iibrdmacm)。在库130中的动词(verb)是0FED?封装部分并且向链 接到库130的应用、例如应用110提供动词应用编程接口(API),该应用可以使用该API以 利用RDMA功能。子库Iibibverb和Iibrdmacm包含动词,其中Iibibverb与资源有关而 Iibrdmacm动词用来操纵协议以在本地与远程系统之间连接队列对(QP)。在实质上,OFEDtm 库130包含对于OFEDtm事实标准的应用级支持并且提供用于实施RDMA的API。
[0019] 0FED?核160提供OFED? RDM机制的其余部分,这些部分包括操作系统内核级动 词API以及RDM协议的硬件不可知实现方式的整体。0FED?核160可以经由硬件特有设 备驱动器195与在物理硬件级185的网络适配器180通信。硬件特有设备驱动器195和硬 件特有库140可以是在特定实现方式中使用的网络适配器190的类型特有的。
[0020] 如从图1可见,数据路径105经由使用0FED?库130和硬件特有库140而执行的 RDM操作从在用户平面120中的应用110直接流向在物理硬件级185中的网络适配器180 并且反之亦然。仍然经由控制路径150向在内核空间170中的0FED?核160和硬件特有设 备驱动器195路由与网络适配器190的控制路径通信。
[0021] 使用这一架构,更高层协议(ULP)在网络适配器190上执行资源创建。应当认识 至IJ,ULP是指在协议模型、例如OSI模型中的协议栈上向上相对更高的应用或者其它代码。 例如直接使用0FED?动词的代码可以是在应用层的应用、但是也可以是用户直接访问编程 库(uDAPL)、即应用空间用户,该uDAPL又可以由中间件层使用,该中间件层本身由应用、例 如DB2使用。术语ULP在这一场景中是指代码的直接用户(即0FED?动词的直接用户), 而并未使ULP限缩为可能被去除了许多个级的应用。
[0022] ULP执行显式调用以分配和映射用于在设备、例如网络适配器180上直接存储器 访问(DMA)的资源。因此,RDMA设备驱动器、即硬件特有驱动器195向0FED?核160每设 备、例如网络适配器一个实例注册的用于特定设备、例如网络适配器180的设备驱动器实 例有效地资源分配器,并且比虚拟NIC/FC驱动器更类似于虚拟机管理器(VMM)而区别在于 设备驱动器为动态而VMM对于关联虚拟机(VM)的寿命持续。ULP通过0FED?库130和/或 0FED?核160的动词访问设备驱动器实例以分配在特有设备/设备驱动器对、例如网络适 配器/适配器驱动器对上的资源。
[0023] 设备驱动器195实例必须允许每个操作系统实例(或者VM)的干净上载/重载,从 而无资源泄漏。如果资源泄漏随时间持续,则资源泄漏可以妨碍设备、例如网络适配器190 或者甚至操作系统实例本身能够被使用而未重新引导计算设备。例如ULP释放或者取消分 配RDM资源失败对于组合的操作系统(或者VM)存储器、总线存储器、适配器硬件存储器 等造成存储器泄漏,所有这些部件是支持(backing)RDM资源分配的部件。
[0024] 资源泄漏、比如存储器泄漏在资源未被用于重用的管理机制恢复时出现并且可以 保持分配、但是未被使用或者访问。资源泄漏条件可以引起错误传播问题、包括阻止错误恢 复,因为恢复由于未释放的资源和关联函数指针而不能继续,从而出于相似原因而引起崩 溃和数据破坏并且阻止固件更新操作的任何重置。在存储器泄漏的情况下,在具有如图1 中所示RDMA架构的情况下,总线存储器可以泄漏而与在网络适配器190上的虚拟存储器和 物理存储器无关、可以泄漏而与总线存储器和/或虚拟存储器无关。因此,与RDM架构关 联的资源泄漏问题可能化解起来复杂和成问题。
[0025] 用于解决在RDM架构中的资源泄漏问题的可能解决方案落入级联错误/错误传 播范畴中,这意味着这些解决方案通过在更低级设备驱动器内涵盖ULP错误来抽象化ULP 错误。例如ULP错误可以是从为RDM访问而配置的设备驱动器(即RDM设备驱动器)向 对应设备分配队列对。然而如果ULP内核扩展然后在以后关闭被分配队列对的连接并且未 释放队列对资源,则从该点以后未对队列对进行寻址。在这样的情形中,RDM设备驱动器 不能从主机系统存储器被关闭/卸载,因为它具有仍然在使用中的资源、即队列对资源。因 此,ULP内核扩展代码已经负面地影响在它本身以外的其它代码(级联错误)。
[0026] 对于引起存储器泄漏的这样的ULP错误的一种可能解决方案的一个不例是将存 储器泄漏仅绑定到虚拟存储器,从而它未影响操作系统的其它元素。例如RDM设备驱动器 可以选择在网络适配器上清除队列对代表的资源,但是RDM设备驱动器不能释放队列对 存储器,因为它可能被用户空间应用引用。在这样的情形中,RDM设备驱动器仍然可以卸 载,然而队列对存储器将在以后不可恢复。尽管将这样的存储器泄漏仅绑定到虚拟存储器 可以允许卸载RDM设备驱动器并且有些减轻存储器泄漏问题,但是这一方式未解决关于 资源回收和清除的不恰当ULP操作的根本问题以及第一失败数据捕获(FFDC)原理,因为如 果不能在问题初始地出现时发现存储器泄漏的来源,则在执行期间的以后点绕过它不那么 有效,因为存储器仍然被泄漏并且ULP仍然正在错误地操作。
[0027] 另外,绑定解决方案由于在计算机程序员的知识以外的二次影响本身很复杂和易 出错。绑定解决方案的复杂性和易出错属性给设备驱动器增添显著风险、即增添如下可能 错误情况,设备驱动器的程序员将在它应当作为应用错误被解决时试图在设备驱动器的编 码中覆盖它。绑定解决方案造成ULP用无效逻辑并且潜在地用如下行为执行,该行为可能 由于为了保护设备驱动器免于错误地操作的ULP而必须提供的大量代码而将来禁止应用 程序接口(API)连接。
[0028] 此外,在网络适配器错误恢复的情况下,网络适配器需要被重置并且资源被重新 初始化,从而它们可以被重用,这允许操作系统继续工作而无重新引导、包括经历失败的网 络适配器的功能。有了 RDM资源,设备驱动器要求ULP在这一网络适配器恢复之前释放资 源,并且这样做的失败结果将妨碍操作系统(和其它ULP)使用网络适配器。在没有下文描 述的示例实施例的机制的情况下,标识未释放资源的ULP有困难。
[0029] 在已知的RDM架构中,资源泄漏将仅经由系统崩溃或者所得数据破坏来间接检 测。从资源泄漏的结果、即崩溃或者数据破坏反向跟踪以标识资源泄漏根本原因由于错误 的间接属性而为一项非平凡和耗费时间的任务。因此,软件开发和支持团队必须执行系列 设备驱动器仪器测量和问题重建以便对这样的崩溃和数据破坏的来源进行定点和标识以 由此标识在RDM资源中的资源泄漏为问题的根本原因。
[0030] 本示例实施例提供用于避免这样的耗费时间和资源成本密集的过程的机制。另 夕卜,本发明操作用于辅助减少在ULP中的潜在错误代码并且提供一种用于标识这些错误代 码部分或者"故障(bug) "、从而可以解决它们而未求助于这些耗费时间的备选方案。
[0031] 示例实施例的机制实施的核心概念是一旦资源泄漏条件出现就决定性地检测到 它并且采取适当动作,从而管理员、应用开发员或者自动化的机制被通知资源泄漏、然后可 以采取纠正动作。示例实施例使设备驱动器构架充分地健壮以便减少软件支持成本以及防 止潜在应用错误向生产环境中传播。
[0032] 在一个示例实施例中,这些结果通过实现一系列红黑树和/或链接列表以跟踪每 个资源来实现。在一个示例实施例中,资源分集是如在0FED?模型中实现的InfiniBand?父 子关系模型的变形。示例实施例利用协议和空间不可知(即用户空间和内核空间不可知) 列表和树服务。另外,示例实施例可用于在进程/应用粒度上的泄漏检测和恰当资源取消 分配顺序实行二者。另外,示例实施例允许对有序平衡二元树、例如红黑树的数据路径直通 (log2N)效率的隐式搜索优化。
[0033] 下文将参照附图更具体描述本发明的示例实施例的以上方面和优点。应当认识 至IJ,附图仅旨在于举例说明本发明的示例实施例。本发明可以涵盖未在图中显式地示出的 方面、实施例和对描绘的示例实施例的修改、但是将按照示例实施例的本说明书而容易为 本领域普通技术人员所清楚。
[0034] 所属【技术领域】的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。 因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件 实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以 统称为"电路"、"模块"或"系统"。此外,在一些实施例中,本发明的各个方面还可以实现为 在任何一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含 计算机可用的程序代码。
[0035] 可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算 机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是--但不限 于--电、磁、光、电磁、红外线、或半导体的系统、装置、器件或者任意以上的组合。计算机 可读存储介质的更具体的示例(非穷举的列表)包括:具有一个或多个导线的电连接、便 携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器 (EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者 上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的 有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0036] 在一些示例实施例中,计算机可读介质为非瞬态计算机可读介质。非瞬态计算机 可读介质是任何如下介质,该介质不是无实体的信号或者蚕箔波、即本身为纯信号或者传 播波。非瞬态计算机可读介质可以利用信号和传播波、但是本身不是信号或者传播波。因 此,例如以如比如任何方式利用信号以维持它们的状态的各种形式的存储器设备和其它类 型的系统、设备或者装置可以在本说明书的范围内视为非瞬态计算机可读介质。
[0037] 在另一方面,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播 的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形 式,包括--但不限于--电磁信号、光信号或上述的任意合适的组合。计算机可读的信号 介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发 送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0038] 计算机可读介质上包含的计算机代码可以用任何适当的介质传输,包括--但不 限于--无线、有线、光缆、射频(RF)等等,或者上述的任意合适的组合。
[0039] 可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算 机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java?、Smalltalk?、 C++等,还包括常规的过程式程序设计语言一诸如"C"语言或类似的程序设计语言。程序代 码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包 执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上 执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络--包括局域网 (LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特 网服务提供商来通过因特网连接)。
[0040] 下面将参照根据本发明示例实施例的方法、装置(系统)和计算机程序产品的流 程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或 框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通 用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这 些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现 流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0041] 也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、 其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的 指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令 的制造品(article of manufacture) 〇
[0042] 也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备 上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计 算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/ 或框图中的一个或多个方框中规定的功能/动作的过程。
[0043] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程 序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以 代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个 用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所 标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以 基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的 是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行 规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的 组合来实现。
[0044] 如以上提到的那样,示例实施例利用协议和空间不可知列表和树服务以便提供资 源泄漏检测和报告功能。示例实施例还修改和扩展在0FED?中的上下文管理模型,其中上 下文是存储信息的数据结构,该信息用于管理数据处理系统的资源和与资源的连接(包括 但不限于用于资源或者与资源的连接的状态信息)以提供协议和空间不可知列表和树服 务可以对其操作的这些链接列表和树数据结构。在一个示例实施例中,上下文是0FED?动 词定义的、比如ib_ucontext标识的软件资源并且被分配作为对alloc_ucontext的调用的 结果(并且被 dalloc_ucontext)取消分配,该 alloc_ucontext (和 dalloc_ucontext)是 应用级ULP使用的动词,该动词向0FED?层标识资源和用户级事件操纵器的统一用户。这 一上下文资源被连结到资源池将分配的所有后续资源。
[0045] 上下文是用于用户空间应用的所需资源作为用于完成队列(CQ)(存储已经被报 告为完成的信息操作的数据结构)的和保护域(PD)(代表与资源关联的访问权限的数据结 构)的父代(parent)。每个上下文等效于适配器实例/地址空间、即每对适配器实例和用 户空间地址空间具有它自己的对应用户空间上下文数据结构。因此,如果用户空间应用与 多个用户空间地址空间关联或者存在用户空间应用与之操作的多个适配器实例,则该用户 空间应用可以具有多于一个用户空间上下文数据结构。
[0046] 示例实施例创建和/或利用内核空间上下文数据结构以涵盖所有用户空间和内 核空间资源。然而内核空间上下文数据结构并不被视为实际内核资源、即它不被内核ULP 分配。
[0047] 因此,利用示例实施例,0FED?模型架构在0FED?模型架构事实上未包括内核空间 上下文数据结构时被修改为包括内核空间上下文数据结构。示例实施例还提供用户空间上 下文数据结构,其中这些内核空间和用户空间上下文中的每项存储用于跟踪相应内核空间 和用户空间资源的红黑树结构。此外,示例实施例提供用于内核空间和用户空间二者的资 源管理逻辑,该资源管理逻辑借助该修改以包括内核空间和用户空间上下文数据结构二者 而被规范化以用于内核空间和用户空间二者。
[0048] 如以上提到的那样,内核空间上下文数据结构比如以链接列表的形式存储红黑树 数据结构以管理父子关系。红黑类型树是自平衡二元搜索树类型。自平衡通过以所得涂绘 的树满足某些属性--这些属性不允许它变成显著地失衡、即一个颜色的节点数目与另一 颜色相比显著地更高--这样的方式用两个颜色(这些通常称为'红'和'黑'、因此是树的 名称)涂绘每个节点之一来提供。在修改树时,新树随后被重新排列和重新涂绘以恢复着 色属性。以可以高效地执行这一重新排列和重新着色这样的方式设计属性。
[0049] 树的平衡并非完美,但是它好到足以允许它保障在0(log η)时间内搜索,其中η 是在树中的元素总数。插入和删除操作与树重新排列和重新着色也是在0(l〇g η)时间内 执行的。跟踪每个节点的颜色由于仅有两个颜色而每节点仅需1位信息。树未包含它是 红黑树特有的任何其它数据,因此它的存储器覆盖区域(footprint)与经典(未着色)二 元搜索树几乎相同。在许多情况下,可以无附加存储器成本存储附加颜色位信息。红黑树 具有以下属性:(1)在树中的每个节点被着色为红或者黑;(2)每个叶节点被着色为黑;(3) 如果节点为红,则它的两个子代(child)为黑(这隐含着在从根节点到叶节点的任何路径 上,红节点决不相邻,然而任何数目的黑节点可以依次出现);并且(4)从节点到后代叶节 点的每个简单路径包含相同数目的黑节点。
[0050] 示例实施例的可以在设备驱动器、内核等中驻留的资源管理逻辑提供用于利用这 样的红黑树以基于父子节点关系实行节点去除规则以及在标识资源泄漏出现时标识它们 并且提供关于这样的资源泄漏的来源的信息的逻辑。例如在用户应用分配上下文(比如通 过调用ib_uc 〇nteXt)时,这一内容存储于与RDM控制结构(RCS)关联的列表中,该RCS是 内核或者设备驱动器(下文为了简化说明而假设为设备驱动器)维护的数据结构并且用来 包含RDM特有数据结构。在分配另一更低级资源时,用户空间应用将更低级资源连结到上 下文。设备驱动器使用与RCS关联的列表来跟踪这一关系。设备驱动器防止在取消分配更 低级资源之前取消分配上下文,因为它是上下文的子代并且最低级资源的存在假设上下文 贯穿最低级资源的寿命可用。有序取消分配的这一实行由示例实施例的机制实施并且也可 以用来如下文描述的那样标识潜在资源泄漏及其资源。
[0051] 相似地,关于在一个示例实施例中如下文描述的那样接近地遵循0FED?模型的用 户空间上下文数据结构红黑树,资源管理逻辑被扩展为如果子节点存在则不能去除在树中 的父节点实行这样的规则。这将下文在图3和4的讨论中更具体地加以举例说明。另外, 资源管理逻辑创建在完成队列(CQ)与队列对(QP)之间的依赖性,从而如果关联QP存在则 不能去除CQ、即完成队列是队列对的父代。这通过在红黑树数据结构中在QP创建时间关联 QP与对应CQ来实现。红黑树结构跟踪在父CQ和子QP之间的这一关联而红黑树和用于实 行取消分配规则的关联逻辑用作这样的关联的跟踪器。也就是说,红黑树结构服务于允许 本发明了解未释放的资源以及允许本发明搜寻和发现具体资源这样的双重目的。
[0052] 在用户空间树结构内,每个设备、例如网络适配器等是硬件特有库、例如图1中的 硬件特有库140的实例并且可以包含多个用户空间上下文数据结构。每个用户空间上下文 数据结构提供描述用户实例/视图的状态信息并且可以包含一个或者多个保护域(PD)和 关联资源。追踪资源泄漏错误是在每CQ和每ro控制块基础上从用户空间树数据结构到内 核空间错误纠正逻辑执行的。
[0053] 可以有为每个用户空间应用提供的分离用户空间上下文数据结构,从而可以有多 个分离用户空间上下文数据结构。在一些实例中,单个用户空间应用可以具有多个用户空 间上下文数据结构。这可以在用户空间应用利用多个分离用户空间地址空间时出现,因为 用户空间上下文数据结构实质上代表用户空间地址空间与特定的支持RDMA功能的设备、 例如RDM网络适配器进行配对。这也可以在应用需要可扩展性、例如应用需要独立地工作 的大量活跃连接并且线程与不同上下文关联地被分组时或者如果应用本身被实例化则出 现。实质上,未实行在应用与上下文之间的一对一关系。
[0054] 与用户空间上下文数据结构对照,示例实施例还提供用于单个内核空间地址空间 的单个内核空间上下文数据结构。这一单个内核空间上下文数据结构包含用于所有资源 (用户空间和内核空间)的上下文信息的阴影副本、由此提供与用户空间上下文数据结构 的一致性。
[0055] 内核空间上下文数据结构包括内核空间树数据结构,该内核空间树数据结构同样 可以是使用标识父子关系的链接列表或者其它关系结构来实施的红黑树数据结构。内核空 间树数据结构是与用户空间树的超集而内核空间树被扩展成与内核空间树的节点关联地 存储从各种资源捕获的取证(forensics)数据。例如以下取证数据是为创建的每个资源而 捕获的并且可以在检测到资源泄漏时被报告给系统管理员、程序员或者其他授权的人员、 比如可以通过错误日志等来完成:(1)用于分配资源的进程的进程标识符;(2)在分配资源 时的日期和/或时间;以及(3)与在以上(1)中的进程标识符互补的整个调用栈(这可以 例如在ASCII格式中被提供)。这一信息可以在通过行进树结构、发现用于与检测到的资源 泄漏关联的资源的对应节点、取回在内核空间上下文数据结构的内核空间树数据结构中的 与节点关联的收集的取证数据并且在错误日志条目--该错误日志条目然后被输出以供 授权的人员使用,由此标识资源泄漏的来源--中包括取证数据来检测到资源泄漏时在错 误日志中被报告。
[0056] 在内核空间树数据结构中,RDMA资源(例如dma_single (该dma_single映射单个 地址/长度缓冲器)、dma_page (该dma_page映射存储器页面)、dma_sg (该dma_sg是散射 收集资源))是RDMA控制结构(RCS)的子代和用户空间上下文数据结构的同代(peer)(见 下文描述的图4)。另外,与用户空间树数据结构一样,QP是用于数据路径踪迹和调试操作 的子代。另外,在用户空间树数据结构和内核空间数据结构中,QP也是用于控制路径优先 失败数据收集(FFDC)追踪/调试操作的保护域(PD)的子代。因此,在示例实施例的用户 空间和内核空间树结构中,QP具有双父代关系,一个具有用于数据路径追踪/调试的CQ而 一个具有用于控制路径追踪/调试的PD。另外,在用户空间和内核空间树结构二者中,所有 资源是对应ro的子代。这允许有关资源的前向/后向发现。此外,如果资源是用户空间资 源,则用于资源的上下文数据结构用作树结构中的祖代以便与架构模型、例如0FED?模型 相配。
[0057] 应当注意在0FED?模型架构中,无用于资源泄漏检测、例如存储器泄漏检测的 RDM资源的形式跟踪。作为结果,它被留给用户空间应用以保证正确行为。然而这出于以 上先前讨论的原因而易错。示例实施例使用内核空间上下文数据结构和关联内核空间树数 据结构在内核级提供自动化的机制,该机制可以实施用于RDM资源跟踪的例如红黑树机 制,从而检测RDM资源泄漏。红黑树实现方式可以用来允许对存储器区域(MR)的DM寻 址从而对数据路径操作进行解码。MR是指用户空间应用分配的一类存储器型资源。
[0058] MR资源、例如快速注册存储器区域(FRMR)、DMA存储器区域(DMR)、用户存储器区 域(UMR)、地址操纵(AH)等被扩展为提供跟踪型粒度,从而这些资源无需作为组被跟踪、但 是可以被分离地跟踪。尽管每个MR资源类型在技术上是MR,但是每个MR资源的使用可以 不同,并且示例实施例出于软件可服务性的目的而提供粒度以有助于标识资源使用。因此, 软件支持可以快速地检测哪个MR类型被泄漏从而经由删减问题空间改进根本原因确定。 例如如果设备正在被关闭,则关闭资源可能由于资源仍然在使用中而失败。由于示例实施 例分离地跟踪每个类型的存储器区域,所以示例实施例可以立即标识哪个资源类型仍然在 使用中、哪个用户空间应用分配资源,并且这一信息可以用来缩减哪个资源未被释放。
[0059] 利用示例实施例,快速注册页面列表(FRPL)资源被进一步扩展为允许双重跟踪。 FRPL资源映射虚拟到总线地址页面关联。与关联FRMW独立地分配/取消分配这一资源。 在0FED?模型架构中,创建后连结操作用来关联FRPL资源与FRMR。因此,动词消费者有可 能分配FRPL、但是未关联FRPL与FRMR、由此造成资源泄漏。也就是说,由于ULP分配资源并 且以后将它连结到FRMR,所以如果它的资源释放被连结到FRMR取消分配逻辑,则未与FRMR 关联的FRPL的泄漏是可能的。因此,对FRPL的跟踪从(更早分配的)FRMR分离地被执行。 然而由于FRPL贯穿FRMR的寿命而连结到FRMR,所以与FRMR关联地跟踪FRPL,从而示例实 施例可以防止在FRMR仍然活跃之时释放FRPL。因此,FRPL资源被扩展用于关于FRPL资源 本身和关于FRMR二者的双重跟踪。
[0060] 示例实施例无论FRPL何时被关联都通过植入在RCS级用于FRPL的跟踪器以及在 FRMR中的跟踪器在所有范围实行资源泄漏检测(见下文描述的图4,其中示出指向FRPL428 的双箭头)。术语"跟踪器"在本文中的意思是示例实施例的机制在分配动词中设立的并 且在取消分配时实行的数据结构关系。例如在分配FRPL时,向FRPL的红黑树添加资源作 为RCS的子代。在FRPL被连结到FRMR时,FRPL被添加到FRPL的FRMR红黑树。FRMR本身 也被添加到上下文的FRMR红黑树中。在FRPL被释放时,示例实施例的逻辑验证FRPL不是 FRMR红黑树的一部分并且通过该校验将从RCS的树结构去除FRPL。在设备被关闭时,进行 的校验之一是RCS的FRPL红黑树为空。数据结构连结的求和总计和校验逻辑一起构成"跟 踪器"。
[0061] 如果动词消费者尝试在FRPL之前取消分配FRMR,则FRMR可以实行失败。也就是 说,示例实施例的每个资源取消分配逻辑实行资源无仍然分配的任何子资源这样的要求。 如果子资源被这一资源取消分配逻辑发现,则取消分配失败并且用与失败关联的资源取证 信息登记失败,该资源取证信息提供关于失败的来源的信息。
[0062] 图2是图示用于上下文管理的示例实施例的机制的示例框图。如图2中所示,每 个用户空间应用210具有一个或者多个关联用户空间上下文数据结构220。每个用户空间 上下文数据结构代表与特定RDM设备、例如RDM网络适配器关联的地址空间。因此,单个 用户空间应用可以具有多个用户空间上下文数据结构(uctx) 220。每个uctx220包括用于 用户空间应用的状态信息222以及用户空间树数据结构224,该用户空间树数据结构代表 与对应于用户空间应用的用户空间地址空间关联的资源的用户空间视图。用户空间树数据 结构224遵循以上先前提到的父子关系规则,从而用适当父子关系代表上下文数据结构、 保护域(PD)、完整队列(CQ)、队列对(QP)等以实行对于资源泄漏检测和报告的创建/去除 要求。
[0063] 如图2中进一步所示,示例实施例引入单个内核空间上下文数据结构(kctx) 230, 该内核空间上下文数据结构代表单个内核空间地址空间和跨越所有用户空间应用的所有 用户空间资源。kctx230包括用于各种内核空间资源的状态信息232以及内核空间树数 据结构234,该内核空间树数据结构代表与各种用户空间应用关联的资源的内核空间视图。 此外,代表数据处理系统的资源的内核空间树数据结构234的节点具有在它们中或者与它 们关联地存储的关联取证数据用于以后在资源泄漏检测和报告中使用、比如经由错误日志 等。在创建资源、例如CQ、QP、向ro添加的设备等时捕获这一信息。
[0064] 可以在一个示例实施例中实现在uctx220和kctx230中的树数据结构为红黑树以 便跟踪资源泄漏。然而应当人类史尽管这里描述红黑树实现作为示例实现,但是示例实施 例不限于此。实际上,可以使用能够代表在实体、比如资源、上下文等之间的分级关系的任 何链接列表、树结构或者其它数据结构而未脱离示例实施例的精神实质和范围。
[0065] 如图2中进一步所示,用户空间上下文数据结构220和内核空间上下文数据结构 230由RDMA控制结构(RCS) 240管理。RCS240是用于硬件特有层的根数据结构,该根数据结 构包含用于特有硬件设备、例如网络适配器的RDM有关数据结构。有用于与主机系统关联 的每个网络适配器的RCS240,并且每个RCS240包含所有RDMA有关数据结构作为子代(或 者子代的子代等)。RCS240可以在硬件特有库中被镜像以允许校验RCS240而未进入内核。
[0066] 逻辑--该逻辑可以是图1中的OFEDTM核160、硬件特有设备驱动器195等的部 分--可以实施示例实施例的用于使用上下文数据结构220和230来跟踪、检测和报告资 源泄漏的资源管理逻辑。也就是说,示例实施例的例如在硬件特有设备驱动器195中实施 的逻辑可以使用这些上下文数据结构220和230的树结构224和234以实行关于资源去除 的规则以便检测和/或避免资源泄漏条件并且响应于检测到资源泄漏从树结构获得对应 取证数据以在通知消息、错误日志等中标识资源泄漏的来源。下文将参照图5和6的流程 图提供参与执行资源泄漏检测和通知的过程的描述。
[0067] 图3是根据一个示例实施例的示例用户空间树数据结构的示例框图。如图3中所 示,用户空间树数据结构300实质上是定义资源间关联的"树的树"。用户空间树数据结构 300是"树的树"在于在树的每级可以定义子树,例如包括元素314、316、318、320和322的 第一个树以及包括图3的所有元素的更高级第二个树。利用用户空间树数据结构,实行各 种规则以生成在资源之间的关联并且由此使得有可能实行关于从树结构去除节点的规则, 这些规则支持资源泄漏检测。例如在用户空间树数据结构300中,向库表示设备为实例, 从而表示设备、例如RDM网络适配器为库实例、例如图3中所示类型"lidrdma"的每个节 点。在图3中,表示设备为具有关联完整队列(CQ)312、保护域(PD)314、QP316和其它资源 318-320的一个或者多个用户空间上下文310。每个这样的设备可以与多个用户空间上下 文310关联或者包含多个用户空间上下文310。用户空间上下文310由RCS330管理,该RCS 可以例如是图2中的RCS240。
[0068] 如图3中所示,用于构建用户空间树数据结构的规则包括QP316是用于数据路径 追踪/调试目的的关联CQ312的子代这样的规则。此外,QP316是用于控制路径优先失败数 据收集(FFDC)追踪/调试目的的关联TO314的子代。因此,QP316具有与QP316和TO314 的双重父关系。所有资源节点、例如QP316和其它资源318-320是关联TO314的子代。在 这一结构就位时,如果子节点存在则不能去除父节点这样的规则可以被资源管理逻辑实行 以由此检测和报告在数据处理系统中的资源泄漏。因此,如果过程尝试从数据处理系统去 除资源、比如CQ312而未释放与QP316关联的子节点,则该过程可以返回错误,该错误指示 资源泄漏的潜在来源、例如释放CQ312而未释放它的关联QP36从而产生代表资源泄漏的 QP316。
[0069] 此外,在检测到资源泄漏的情况下,可以比如使用红黑树搜索算法来搜索树结构 300以找到在树结构300中的与检测到的资源泄漏对应的节点,并且这可以与内核空间树 数据结构一起进一步用来取回将在报告资源泄漏时使用的取证数据。也就是说,如果在树 结构300中标识与资源泄漏对应的节点,则可以在内核空间树数据结构中找到相同节点并 且可以取回和向错误日志数据结构条目中插入对应取证数据。因此,例如如果设备正在被 取消分配,则仍然分配保护域(PD)资源,则本发明的取消分配逻辑可以标识这一ro资源正 仍然在被分配、因此代表资源泄漏。可以从内核空间树数据结构取回用于ro资源的对应取 证数据,该取证数据比如指示设备驱动器由于ro的资源泄漏而不能被在特定时间分配ro 的特定代码路径上载。因此,检测到资源泄漏不仅标识资源泄漏本身而且提供标识资源泄 漏来源的附加取证信息。
[0070] 图4是根据一个示例实施例的示例内核空间树数据结构的示例框图。内核空间 树数据结构400遵循与用户空间树数据结构相同的用于父子依赖性的规则以便使内核空 间树数据结构400与用户空间树数据结构300 -致。另外,利用内核空间树数据结构400, 图1中的0FED?核160视为如同它是分离资源。因此,0FED?核160在内核空间树数据结 构400中被表示为包括QP、PD、CQ和其它资源的多个资源。因此,如图4中所示,0FED?核 由0FED?核上下文410或者内核上下文410表示,该上下文具有完整队列(CQ) 412、保护域 (PD)414、QP416和其它资源418-434。此外,每个用户空间资源也可以在内核空间树数据 结构400内被表示为来自各种用户空间上下文(未示出)的用户空间树数据结构的阴影副 本。与图3中的用户空间上下文310 -样,内核空间上下文数据结构410由RCS330管理, 该RCS可以例如是图2中的RCS240。因此,RCS330是用户空间上下文310和内核空间上下 文410二者的父代。
[0071] 如图4中所示,与用户空间树数据结构300-样,用于构建用户空间树数据结构的 规则包括QP416是用于数据路径追踪/调试目的的关联CQ412的子代这样的规则。此外, QP416是用于控制路径首次失败数据收集(FFDC)追踪/调试目的的关联TO414的子代。因 此,QP416具有与QP416和TO414的双重父关系。所有资源节点、例如QP416和其它资源 418-428是关联TO414的子代。RDMA资源节点430-434是RCS330的子代和上下文节点410 的同代。
[0072] 此外,应当注意每个资源节点在它被创建时具有关于资源收集的并且在内核空间 树数据结构中与资源节点关联地存储的对应取证数据。这一取证数据包括分配资源的过程 的过程标识符、分配资源的日期和/或时间以及与进程标识符互补的整个调用栈。因此,在 与特定资源关联地检测到资源泄漏时,可以从在内核空间树数据结构中的对应节点取回这 一信息以由此标识资源泄漏的来源。可以在向授权的用户发送的通知消息中包括、在错误 日志中存储或者以别的方式向授权的人员传达这一信息用于错误跟踪和化解。
[0073] 在这一结构就位时,与用户空间树数据结构一样,如果子节点存在则不能去除父 节点这样的规则可以被资源管理逻辑实行以由此检测和报告在数据处理系统中的资源泄 漏。
[0074] 图5是概述根据一个示例实施例的用于分配资源的示例操作的流程图。如图5中 所示,该操作始于用户空间应用调用用于分配资源、例如QP、H)等的例程(步骤510)。内核 更高层协议(ULP)分配资源(步骤520),并且收集用于分配资源的取证数据(步骤530)。根 据以上描述的分级规则生成在用户空间和内核空间树数据结构中的对应节点(步骤540)。 因此,根据正在分配的资源类型,基于指定的分级规则在树数据结构中产生不同父子关联, 例如QP是CQ和二者的子代、FRPL是RCS和FRMR二者的子代等。在内核空间树数据结 构中,扩展用于分配的资源的节点以存储收集的取证数据(步骤550)。该操作然后对于这 一资源分配终止、但是可以对于每个后续资源分配来重复。
[0075] 图6是概述根据一个示例实施例的用于执行资源泄漏检测和报告的示例操作的 流程图。如图6中所示,该操作通过让用户空间应用调用用于关闭设备的例程(步骤610) 来开始。遍历用户空间树数据结构以确定与设备关联的上下文是否具有仍然分配的任何子 节点(步骤620)。关于上下文是否具有仍然分配的任何子节点进行确定(步骤630)。如果 不是,则可以取消分配任何剩余RDM资源以及设备的关联用户空间和内核空间上下文(步 骤 640)。
[0076] 如果有子节点,则这些代表资源泄漏。作为结果,不允许设备关闭(步骤650)并 且可以生成指示不能执行关闭操作和原因、即资源泄漏的错误日志条目(步骤660)。此外, 执行在内核空间树数据结构中的子节点的查找以发现在内核空间树数据结构中的对应节 点并且取回在这些节点中或者与这些节点关联地存储的取证数据(步骤670)。取证数据存 储于错误日志条目中用于以后使用、比如经由客户端计算设备向系统管理员或者其他授权 的用户输出、由用于执行错误纠正或者报告的自动化的机制处理等(步骤680)。该操作然 后终止。
[0077] 为了进一步举例说明示例实施例的机制的操作,再次参照图4,以下系列事件可以 在实现示例实施例的机制的系统上按顺序出现。当然,与描述的流程无关的其它事件可以 出现或者可以未出现于这些列举的事件中的任何事件之间:
[0078] a.内核 ULP 分配 CQ。
[0079] i.硬件特有库或者硬件特有驱动器(根据具体实现方式;下文称为"HW")记录关 于分配功能的信息,该信息包括分配资源的时间戳和栈路径(在412中)。
[0080] ii.关联CQ与内核级上下文的子代(410)。
[0081] b.内核 ULP 分配 ro。
[0082] i. HW记录用于ro (414)结构的关于分配功能的信息(如它对于CQ完成的那样)。
[0083] ii.关联ro与内核级上下文的子代(410)。
[0084] c.内核 ULP 分配 QP。
[0085] i. HW记录用于QP (416)结构的关于分配功能的信息(如它对于CQ完成的那样)。
[0086] ii.关联QP与用户标识的ro(414)的子代以及CQ(412)的数据结构的子代。 [0087] d.用户尝试卸载设备驱动器。
[0088] i.在这一点,hw层将中断连接从而向所有资源的所有者通知它们需要释放分配 的资源。
[0089] ii. HW在卸载设备驱动器之前等待释放资源。HW等待释放内核上下文的跟踪的资 源。
[0090] e.用户想要发现设备驱动器的卸载为什么被延迟并且发布用于转储关于未尽资 源的信息的命令。在调用该命令时,用户能够在CQ和QP被分配时标识它们仍然正在被分 配并且标识个别栈踪迹,这些栈踪迹标识谁分配它们从而允许调试问题。
[0091] 在另一示例中,参照图3的数据结构,以下系列事件可以按照描述的顺序出现。当 然,与描述的流程无关的其它事件可以出现或者可以未出现于这些列举的事件中的任何事 件之间:
[0092] a.应用ULP分配上下文(310)。
[0093] i. HW记录关于分配功能的信息,该信息包括分配用户级上下文资源的时间戳和栈 路径(在310中)。
[0094] ii.关联上下文与RCS的子代(330)。
[0095] b.应用 ULP 分配 CQ。
[0096] i. HW记录用于CQ(312)结构的关于分配功能的信息(如它对于上下文完成的那 样)。
[0097] ii.关联CQ与用户标识的用户级上下文的子代(310)。
[0098] c.应用 ULP 分配 PD。
[0099] i. HW记录用于Η)(314)结构的关于分配功能的信息(如它对于上下文完成的那 样)。
[0100] ii.关联ro与用户标识的用户级上下文的子代(310)。
[0101] d 应用 ULP 分配 QP。
[0102] i. HW记录用于QP(316)结构的关于分配功能的信息(如它对于上下文完成的那 样)。
[0103] ii.关联QP与用户标识的Η)(314)的子代和用户标识的CQ(312)的子代。
[0104] e.时间过去并且用户尝试取消分配CQ。
[0105] i. HW将在CQ具有存在的子代时使命令失败(针对注册的QP校验)。
[0106] 1.它可以用相关调试信息记录事件,该调试信息标识分配的CQ、分配的QP和尝试 取消分配CQ的路径。这将允许对错误应用的快速化解。
[0107] 因此,示例实施例提供用于RDM资源的资源泄漏检测的严格确定性实行的机制。 示例实施例检测和在第一次出现、即FFDC时报告资源泄漏而充分取证信息指示负责资源 泄漏的进程/应用。示例实施例借助在根本原因确定时删减错误空间来进一步改进软件支 持进程。也就是说,通过将资源泄漏的报告连结到具体资源类型,示例实施例已经有效地删 减超出涉及到的ULP之外、但是也对于ULP正在使用的具体资源的问题。这允许ULP缩减 对于资源泄露来源的搜索,该搜索不是对所有RDM资源使用或者甚至所有存储器区域的 校验,而是对具体类型的RDM资源或者存储器区域。
[0108] 鉴于上文,可见可以在其中未提供RDMA资源泄漏检测机制的许多不同类型的数 据处理环境中利用和实现示例实施例。例如可以在实现结构交换网络、比如InfiniBand?、 0FED?等的许多不同类型的计算环境中使用和实现示例实施例。另外,一般而言,在数据 处理系统上执行的软件的内核级提供的资源管理逻辑中实现示例实施例。示例实施例操 作用于通过使用与本发明引入的附加资源管理逻辑以及先前描述的链接列表和树数据结 构--该资源管理逻辑在用户空间上下文数据结构和内核空间数据结构内对这样的链接 列表和树数据结构操作--在内核级标识和报告资源泄漏。
[0109] 下文提供图7作为其中可以实现示例实施例的方面的示例数据处理系统环境或 者计算设备。应当认识图7仅为示例而未旨在于断定或者暗示关于可以在其中实现本发明 的方面或者实施例的环境的任何限制。可以进行对描绘的环境的许多修改而未脱离本发明 的精神实质和范围。
[0110] 图7是其中可以实现示例实施例的方面的示例数据处理系统或者计算设备的框 图。数据处理系统700是实现用于本发明的示例实施例的过程的计算机可用代码或者指令 可以位于其中的、可以实现为客户端计算设备、服务器计算设备、单独计算设备等的计算设 备。
[0111] 在描绘的示例中,数据处理系统700运用中枢架构,该中枢架构包括北桥和存储 器控制器中枢(NB/MCH)702以及南桥和输入/输出(I/O)控制器中枢(SB/ICH)704。处理 单元706、主存储器708和图形处理器710连接到NB/MCH702。图形处理器710可以通过加 速图形端口(AGP)连接到NB/MCH702。
[0112] 在描绘的示例中,局域网(LAN)适配器712连接到SB/ICH704。音频适配器716、 键盘和鼠标适配器720、调制解调器722、只读存储器(ROM) 724、硬盘驱动(HDD) 726、⑶-ROM 驱动730、通用串行总线(USB)端口和其它通信端口 732以及PCI/PCIe设备734通过总线 738和总线740连接到SB/ICH704。PCI/PCIe设备可以例如包括以太网适配器、插入卡和用 于笔记本计算机的PC卡。PCI使用卡总线控制器而PCIe未使用。R0M724可以例如是快闪 基本输入/输出系统(BIOS)。
[0113] HDD726 和 CD-ROM 驱动 730 通过总线 740 连接到 SB/ICH704。HDD726 和 CD-ROM 驱 动730可以例如使用集成驱动电子装置(IDE)或者串行高级技术附件(SATA)接口。超级 I/0(SI0)设备736可以连接到SB/ICH704。
[0114] 操作系统在处理单元706上运行。操作系统协调在图7中的数据处理系统700内 的各种部件并且提供这些部件的控制。作为客户端,操作系统可以是商业上可用的操作系 统、比如Windows 7'面向对象编程语言、比如Java?编程系统可以结合 操作系统运行并且提供从在数据处理系统700上执行的Java?程序或者应用对操作系统的 调用。
[0115] 作为服务器,数据处理系统700可以例如是运行高级交互管理(AIX? )操作系 统或者LINUX?操作系统的IBM? eServer? Systemp?·计算机系统。数据处理系统 700可以是包括处理单元706中的多个处理器的对称多处理器(SMP)系统。备选地,可以运 用单处理器系统。
[0116] 用于操作系统、面向对象的编程系统和应用或者程序的指令位于存储设备、比如 HDD726上并且可以被加载到主存储器708中用于由处理单元706执行。用于本发明的示例 实施例的过程可以例如使用可以位于存储器、如比如主存储器708、R0M724中或者一个或 者多个外围设备726和730中的计算机可用程序代码由处理单元706执行。
[0117] 总线系统、比如如图7中所示总线738或者总线740可以由一个或者多个总线组 成。当然,总线系统可以使用任何类型的通信结构或者架构来实现,该通信结构或者架构提 供在附着到结构或者架构的不同部件或者设备之间的数据传送。通信单元、比如图7的调 制解调器722或者网络适配器712可以包括用来发送和接收数据的一个或者多个设备。存 储器可以例如是主存储器708、R0M724或者比如在图7中的NB/MCH702中发现的高速缓存。
[0118] 本领域普通技术人员将认识到图7中的硬件可以根据实现方式而变化。除了在图 7中描绘的硬件之外或者取代该硬件还可以使用其它内部硬件或者外围设备、比如闪存、等 效非易失性存储器或者光盘等。示例实施例的过程也可以应用于除了先前提到的SMP系统 之外的多处理器数据处理系统而未脱离本发明的精神实质和范围。
[0119] 另外,数据处理系统700可以采用包括客户端计算设备、服务器计算设备、平板计 算机、膝上型计算机、电话或者其它通信设备、个人数字助理(PDA)等的多个不同数据处理 系统中的任何数据处理系统的形式。在一些示例中,数据处理系统700可以例如是配置有 闪存以提供用于存储操作系统文件和/或用户生成的数据的非易失性存储器的便携计算 设备。实质上,数据处理系统700可以是无架构限制的任何已知或者以后开发的数据处理 系统。
[0120] 如以上指出的那样,应当认识示例实施例可以采用全硬件实施例、全软件实施例 或者包含硬件与软件单元二者的实施例这样的形式。在一个示例实施例中,在包括但不限 于固件、常驻软件、微代码等的软件或者程序代码中实施示例实施例的机制。
[0121] 本发明的描述已经出于示例和描述的目的而加以呈现并且未旨在于穷举本发明 或者使本发明限于公开的形式。许多修改和变化将为本领域普通技术人员所清楚。选择和 描述实施例以便最佳地说明本发明的原理、实际应用并且使本领域其他普通技术人员能够 针对具有如与设想的特定使用相适合的各种修改的各种实施例来理解本发明。
【权利要求】
1. 一种在数据处理系统中的用于远程直接存储器访问(RDMA)资源泄漏检测的方法, 所述数据处理系统包括处理器和存储器,所述方法包括: 由所述数据处理系统在所述数据处理系统的用户空间中生成包括用户空间畑MA资源 分级数据结构的用户空间上下文; 由所述数据处理系统在所述数据处理系统的内核空间中生成包括内核畑MA资源分级 数据结构的内核上下文,其中所述内核RDMA资源分级数据结构包括所述用户空间RDMA资 源分级数据结构的节点; 由所述数据处理系统接收对于关闭RDMA资源的请求; 由所述数据处理系统遍历所述用户空间RDMA资源分级数据结构,W确定所述RDMA资 源是否具有在所述用户空间RDMA资源分级数据结构中分配的子RDMA资源; 由所述数据处理系统响应于基于所述用户空间RDMA资源分级数据结构或者所述内核 RDMA资源分级数据结构中的至少一个确定所述RDMA资源具有在所述用户空间RDMA资源分 级数据结构中分配的子RDMA资源来检测资源泄漏;W及 由所述数据处理系统报告所述资源泄漏。
2. 根据权利要求1所述的方法,其中所述用户空间RDMA资源分级数据结构或者所述内 核RDMA资源分级数据结构中的至少一个包括红黑树数据结构。
3. 根据权利要求1所述的方法,还包括: 实行有序取消分配策略,所述有序取消分配策略指定在所述用户空间RDMA资源分级 数据结构或者内核RDMA资源分级数据结构中的父资源不能在所述父资源的子资源被取消 分配之前被取消分配,其中检测资源泄漏包括检测对于违反所述有序取消分配策略的尝 试。
4. 根据权利要求1所述的方法,其中所述内核RDM资源分级数据结构是所述用户空 间RDMA资源分级数据结构的超集,并且包括代表在所述用户空间RDMA资源分级数据结构 中代表的RDMA资源并且代表内核空间RDMA资源的数据。
5. 根据权利要求4所述的方法,其中所述内核RDMA资源分级数据结构的与用户空间 RDMA资源或者内核空间RDMA资源对应的节点还包括从所述用户空间RDMA资源或者内核空 间RDMA资源收集的关联取证数据,其中与所述内核RDMA资源分级数据结构的节点关联的 所述取证数据提供标识与所述节点关联的资源泄漏的来源的信息。
6. 根据权利要求5所述的方法,其中所述取证数据包括用于分配了与所述节点关联的 RDM资源的进程的进程标识符、与所述节点关联的所述RDM资源何时被分配的指示符、或 者分配了与所述节点关联的所述RDMA资源的进程的整个调用找中的至少一项。
7. 根据权利要求5所述的方法,其中报告所述资源泄漏还包括: 使所述子RDMA资源与在所述内核RDMA资源分级数据结构中的对应节点相关; 从与所述子RDMA资源对应的所述节点取回取证数据;W及 生成包括所述取证数据的资源泄漏通知。
8. 根据权利要求1所述的方法,其中所述用户空间RDMA分级数据结构和内核RDMA分 级数据结构使用实行如下规则的逻辑来生成,所述规则为队列对(QP)RDMA资源是对应保 护域(PD) RDMA资源和对应完成队列(C曲RDMA资源的子代。
9. 根据权利要求1所述的方法,其中所述用户空间RDMA分级数据结构和内核RDMA 分级数据结构使用实行如下规则的逻辑来生成,所述规则为所有RDMA资源是对应保护域 (PD) RDM资源的子代。
10. 根据权利要求1所述的方法,其中所述用户空间RDMA分级数据结构和内核RDMA 分级数据结构使用实行如下规则的逻辑来生成,所述规则为快速注册页面列表(FRPL) RDMA 资源是RDMA控制结构(RC巧和对应快速注册存储器区域(FRMR) RDMA资源的子代。
11. 一种包括计算机可读存储介质的计算机程序产品,所述计算机可读介质具有存储 于其中的计算机可读程序,其中所述计算机可读程序在数据处理系统上被执行时使所述数 据处理系统: 在所述数据处理系统的用户空间中生成包括用户空间RDMA资源分级数据结构的用户 空间上下文; 在所述数据处理系统的内核空间中生成包括内核畑MA资源分级数据结构的内核上下 文,其中所述内核RDMA资源分级数据结构包括所述用户空间RDMA资源分级数据结构的节 占. ;、、、? 接收对于关闭RDMA资源的请求; 遍历所述用户空间RDMA资源分级数据结构W确定所述RDMA资源是否具有在所述用户 空间RDMA资源分级数据结构中分配的子RDMA资源; 响应于基于所述用户空间RDMA资源分级数据结构或者所述内核RDMA资源分级数据结 构中的至少一个确定所述RDMA资源具有在所述用户空间RDMA资源分级数据结构中分配的 子RDMA资源来检测资源泄漏;W及 报告所述资源泄漏。
12. -种装置,包括: 处理器;W及 禪合到所述处理器的存储器,其中所述存储器包括指令,所述指令在被所述处理器执 行时使所述处理器: 在所述数据处理系统的用户空间中生成包括用户空间RDMA资源分级数据结构的用户 空间上下文; 在所述数据处理系统的内核空间中生成包括内核畑MA资源分级数据结构的内核上下 文,其中所述内核RDMA资源分级数据结构包括所述用户空间RDMA资源分级数据结构的节 占. ;、、、? 接收对于关闭RDMA资源的请求; 遍历所述用户空间RDMA资源分级数据结构W确定所述RDMA资源是否具有在所述用户 空间RDMA资源分级数据结构中分配的子RDMA资源; 响应于基于所述用户空间RDMA资源分级数据结构或者所述内核RDMA资源分级数据结 构中的至少一个确定所述RDMA资源具有在所述用户空间RDMA资源分级数据结构中分配的 子RDMA资源来检测资源泄漏;W及 报告所述资源泄漏。
【文档编号】G06F12/02GK104461912SQ201410461344
【公开日】2015年3月25日 申请日期:2014年9月11日 优先权日:2013年9月24日
【发明者】O·卡多纳, J·P·梅辛, C·L·所托冈扎尔兹, P·V·托里斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1