欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

Rdma資源泄漏檢測和報告的制作方法

文檔序號:6626665閱讀:323來源:國知局
Rdma資源泄漏檢測和報告的制作方法
【專利摘要】本發(fā)明涉及一種RDMA資源泄漏檢測和報告。提供用于遠程直接存儲器訪問(RDMA)資源泄漏檢測。生成包括用戶空間RDMA資源分級數(shù)據結構的用戶空間上下文。生成包括內核RDMA資源分級數(shù)據結構的內核上下文。內核RDMA資源分級數(shù)據結構包括用戶空間RDMA資源分級數(shù)據結構的節(jié)點。接收對于關閉RDMA資源的請求,并且遍歷用戶空間RDMA資源分級數(shù)據結構以確定RDMA資源是否具有在用戶空間RDMA資源分級數(shù)據結構中分配的子RDMA資源。響應于基于用戶空間RDMA資源分級數(shù)據結構或者內核RDMA資源分級數(shù)據結構中的至少一個確定RDMA資源具有在用戶空間RDMA資源分級數(shù)據結構中分配的子RDMA資源來檢測資源泄漏。
【專利說明】RDMA資源泄漏檢測和報告

【技術領域】
[0001] 本申請總體涉及一種改進的數(shù)據處理裝置和方法,并且更具體地涉及用于檢測和 報告遠程直接存儲器訪問(RDM)資源泄漏的機制。

【背景技術】
[0002] 遠程直接存儲器訪問(RDM)是允許從一個計算機的存儲器向另一計算機的存儲 器中的直接存儲器訪問的功能而未涉及到任一計算機的操作系統(tǒng)。RDM有助于高吞吐量、 低延時聯(lián)網,這在大規(guī)模并行計算機群集中尤其有用。
[0003] RDM通過使計算機的網絡適配器能夠向應用存儲器或者從應用存儲器直接傳送 數(shù)據、由此消除在操作系統(tǒng)中的數(shù)據緩沖器與在應用存儲器之間復制數(shù)據的需求來支持零 復制聯(lián)網。這樣的直接數(shù)據傳送不要求處理器、高速緩沖存儲器等完成任何工作、并且不要 求上下文切換。這樣的直接傳送可以與計算機正在執(zhí)行的其它系統(tǒng)操作并行執(zhí)行。例如在 應用執(zhí)行RDM讀取或者寫入請求時,經由支持RDM功能的網絡適配器向網絡直接遞送應 用數(shù)據從而減少傳送的延時。
[0004] 許多現(xiàn)代架構和規(guī)范是鑒于RDM和具有RDM功能的網絡適配器而設計的。例 如InfiniBand?貿易協(xié)會(IBTA)維護和促進的InfiniBand?規(guī)范以及紐約阿芒克的國際商 業(yè)機器公司開發(fā)的InfiniBand?架構提供支持經由InfiniBand?結構執(zhí)行RDM操作。類似 地,開放結構聯(lián)盟(OFA)維護和促進的并且在InfiniBand?規(guī)范上構建的開放結構企業(yè)分布 (DFED tm)規(guī)范和架構也提供支持RDM操作。對于關于InfiniBand?和0FED?的更多信息, 可以從IBTA和OFA組織以及對應網站獲得附加信息。


【發(fā)明內容】

[0005] 在一個示例實施例中,提供一種在包括處理器和存儲器的數(shù)據處理系統(tǒng)中的用于 遠程直接存儲器訪問(RDMA)資源泄漏檢測的方法。該方法包括數(shù)據處理系統(tǒng)在數(shù)據處理 系統(tǒng)的用戶空間中生成包括用戶空間RDM資源分級數(shù)據結構的用戶空間上下文。該方法 還包括數(shù)據處理系統(tǒng)在數(shù)據處理系統(tǒng)的內核空間中生成包括內核RDMA資源分級數(shù)據結構 的內核上下文。內核RDM資源分級數(shù)據結構包括用戶空間RDM資源分級數(shù)據結構的節(jié)點。 該方法也包括數(shù)據處理系統(tǒng)接收對于關閉RDMA資源的請求并且數(shù)據處理系統(tǒng)遍歷用戶空 間RDM資源分級數(shù)據結構以確定RDM資源是否具有在用戶空間RDM資源分級數(shù)據結構 中分配的子RDM資源。另外,該方法包括數(shù)據處理系統(tǒng)響應于基于用戶空間RDM資源分 級數(shù)據結構或者內核RDM資源分級數(shù)據結構中的至少一個確定RDM資源具有在用戶空間 RDM資源分級數(shù)據結構中分配的子RDM資源來檢測資源泄漏。此外,該方法包括數(shù)據處理 系統(tǒng)報告資源泄漏。
[0006] 在其它示例實施例中,提供一種包括計算機可用或者可讀介質的計算機程序產 品,該計算機可用或者可讀介質具有計算機可讀程序。計算機可讀程序在計算設備上被執(zhí) 行時使計算設備執(zhí)行以上關于方法示例實施例概述的操作中的各種操作和組合。
[0007] 在更多另一示例實施例中,提供一種系統(tǒng)/裝置。該系統(tǒng)/裝置可以包括一個或 者多個處理器和耦合到一個或者多個處理器的存儲器。存儲器可以包括指令,這些指令在 由一個或者多個處理器執(zhí)行時使一個或者多個處理器執(zhí)行以上關于方法不例實施例概述 的操作中的各種操作和組合。
[0008] 本發(fā)明的這些和其它特征以及優(yōu)點將在本發(fā)明的示例實施例的以下具體描述中 被描述或者按照以下具體描述將變得為本領域普通技術人員所清楚。

【專利附圖】

【附圖說明】
[0009] 將通過參照在結合附圖閱讀時的示例實施例的以下具體描述來最好地理解本發(fā) 明及其優(yōu)選使用方式和更多目的以及優(yōu)點,其中:
[0010] 圖1是利用開放結構企業(yè)分布(OFEDTM)核的一個這樣的RDMA模型的示例;
[0011] 圖2是圖示用于上下文管理的示例實施例的機制的示例框圖;
[0012] 圖3是根據一個示例實施例的示例用戶空間樹數(shù)據結構的示例框圖;
[0013] 圖4是根據一個示例實施例的示例內核空間樹數(shù)據結構的示例框圖;
[0014] 圖5是概述根據一個示例實施例的用于分配資源的示例操作的流程圖;
[0015] 圖6是概述根據一個示例實施例的用于執(zhí)行資源泄漏檢測和報告的示例操作的 流程圖;并且
[0016] 圖7是其中可以實施示例實施例的方面的計算設備的示例框圖。

【具體實施方式】
[0017] 示例實施例提供用于遠程直接存儲器訪問(RDM)資源泄漏檢測和報告的機制。 在RDM與傳統(tǒng)復用輸入/輸出(IO)模型、比如網絡接口卡(NIC)和光纖信道(FC)之間的 主要差異之一是資源管理。在復用IO模型之下,有限緩沖器/資源集合由低級、例如開放 系統(tǒng)互連(OSI)模型第2層(數(shù)據鏈路層)設備驅動器分配。經由存儲器復制通過OSI層 2復用待發(fā)送/接收的數(shù)據。OSI模型的更高層協(xié)議(ULP)操作范圍是分配虛擬存儲器而 設備驅動器操作范圍是復制或者映射虛擬存儲器用于設備驅動器的使用。在數(shù)據鏈路層接 收的數(shù)據必須從數(shù)據鏈路層的緩沖器/資源向應用層(例如在OSI模型中第7層)的虛擬 存儲器復制。
[0018] 為了避免可能需要附加資源并且可能由于需要在更低級緩沖器與更高級虛擬存 儲器之間執(zhí)行復制操作以及其它原因而引入附加延時的這樣的復制操作,已經引入RDM 模型。圖1是利用開放結構企業(yè)分布(OFEDtm)核的一個這樣的RDM模型的示例。如圖1 中所示,應用110存在于用戶空間120中并且對庫函數(shù)進行調用或者調動庫函數(shù),以用于 經由0FED?庫130和硬件特有庫140執(zhí)行RDMA操作。0FED?庫130包括可以經由控制路 徑150用來與在操作系統(tǒng)的內核空間170中的0FED?核160通信的動詞庫(Iibibverb)和 DMA連接管理器庫(Iibrdmacm)。在庫130中的動詞(verb)是0FED?封裝部分并且向鏈 接到庫130的應用、例如應用110提供動詞應用編程接口(API),該應用可以使用該API以 利用RDMA功能。子庫Iibibverb和Iibrdmacm包含動詞,其中Iibibverb與資源有關而 Iibrdmacm動詞用來操縱協(xié)議以在本地與遠程系統(tǒng)之間連接隊列對(QP)。在實質上,OFEDtm 庫130包含對于OFEDtm事實標準的應用級支持并且提供用于實施RDMA的API。
[0019] 0FED?核160提供OFED? RDM機制的其余部分,這些部分包括操作系統(tǒng)內核級動 詞API以及RDM協(xié)議的硬件不可知實現(xiàn)方式的整體。0FED?核160可以經由硬件特有設 備驅動器195與在物理硬件級185的網絡適配器180通信。硬件特有設備驅動器195和硬 件特有庫140可以是在特定實現(xiàn)方式中使用的網絡適配器190的類型特有的。
[0020] 如從圖1可見,數(shù)據路徑105經由使用0FED?庫130和硬件特有庫140而執(zhí)行的 RDM操作從在用戶平面120中的應用110直接流向在物理硬件級185中的網絡適配器180 并且反之亦然。仍然經由控制路徑150向在內核空間170中的0FED?核160和硬件特有設 備驅動器195路由與網絡適配器190的控制路徑通信。
[0021] 使用這一架構,更高層協(xié)議(ULP)在網絡適配器190上執(zhí)行資源創(chuàng)建。應當認識 至IJ,ULP是指在協(xié)議模型、例如OSI模型中的協(xié)議棧上向上相對更高的應用或者其它代碼。 例如直接使用0FED?動詞的代碼可以是在應用層的應用、但是也可以是用戶直接訪問編程 庫(uDAPL)、即應用空間用戶,該uDAPL又可以由中間件層使用,該中間件層本身由應用、例 如DB2使用。術語ULP在這一場景中是指代碼的直接用戶(即0FED?動詞的直接用戶), 而并未使ULP限縮為可能被去除了許多個級的應用。
[0022] ULP執(zhí)行顯式調用以分配和映射用于在設備、例如網絡適配器180上直接存儲器 訪問(DMA)的資源。因此,RDMA設備驅動器、即硬件特有驅動器195向0FED?核160每設 備、例如網絡適配器一個實例注冊的用于特定設備、例如網絡適配器180的設備驅動器實 例有效地資源分配器,并且比虛擬NIC/FC驅動器更類似于虛擬機管理器(VMM)而區(qū)別在于 設備驅動器為動態(tài)而VMM對于關聯(lián)虛擬機(VM)的壽命持續(xù)。ULP通過0FED?庫130和/或 0FED?核160的動詞訪問設備驅動器實例以分配在特有設備/設備驅動器對、例如網絡適 配器/適配器驅動器對上的資源。
[0023] 設備驅動器195實例必須允許每個操作系統(tǒng)實例(或者VM)的干凈上載/重載,從 而無資源泄漏。如果資源泄漏隨時間持續(xù),則資源泄漏可以妨礙設備、例如網絡適配器190 或者甚至操作系統(tǒng)實例本身能夠被使用而未重新引導計算設備。例如ULP釋放或者取消分 配RDM資源失敗對于組合的操作系統(tǒng)(或者VM)存儲器、總線存儲器、適配器硬件存儲器 等造成存儲器泄漏,所有這些部件是支持(backing)RDM資源分配的部件。
[0024] 資源泄漏、比如存儲器泄漏在資源未被用于重用的管理機制恢復時出現(xiàn)并且可以 保持分配、但是未被使用或者訪問。資源泄漏條件可以引起錯誤傳播問題、包括阻止錯誤恢 復,因為恢復由于未釋放的資源和關聯(lián)函數(shù)指針而不能繼續(xù),從而出于相似原因而引起崩 潰和數(shù)據破壞并且阻止固件更新操作的任何重置。在存儲器泄漏的情況下,在具有如圖1 中所示RDMA架構的情況下,總線存儲器可以泄漏而與在網絡適配器190上的虛擬存儲器和 物理存儲器無關、可以泄漏而與總線存儲器和/或虛擬存儲器無關。因此,與RDM架構關 聯(lián)的資源泄漏問題可能化解起來復雜和成問題。
[0025] 用于解決在RDM架構中的資源泄漏問題的可能解決方案落入級聯(lián)錯誤/錯誤傳 播范疇中,這意味著這些解決方案通過在更低級設備驅動器內涵蓋ULP錯誤來抽象化ULP 錯誤。例如ULP錯誤可以是從為RDM訪問而配置的設備驅動器(即RDM設備驅動器)向 對應設備分配隊列對。然而如果ULP內核擴展然后在以后關閉被分配隊列對的連接并且未 釋放隊列對資源,則從該點以后未對隊列對進行尋址。在這樣的情形中,RDM設備驅動器 不能從主機系統(tǒng)存儲器被關閉/卸載,因為它具有仍然在使用中的資源、即隊列對資源。因 此,ULP內核擴展代碼已經負面地影響在它本身以外的其它代碼(級聯(lián)錯誤)。
[0026] 對于引起存儲器泄漏的這樣的ULP錯誤的一種可能解決方案的一個不例是將存 儲器泄漏僅綁定到虛擬存儲器,從而它未影響操作系統(tǒng)的其它元素。例如RDM設備驅動器 可以選擇在網絡適配器上清除隊列對代表的資源,但是RDM設備驅動器不能釋放隊列對 存儲器,因為它可能被用戶空間應用引用。在這樣的情形中,RDM設備驅動器仍然可以卸 載,然而隊列對存儲器將在以后不可恢復。盡管將這樣的存儲器泄漏僅綁定到虛擬存儲器 可以允許卸載RDM設備驅動器并且有些減輕存儲器泄漏問題,但是這一方式未解決關于 資源回收和清除的不恰當ULP操作的根本問題以及第一失敗數(shù)據捕獲(FFDC)原理,因為如 果不能在問題初始地出現(xiàn)時發(fā)現(xiàn)存儲器泄漏的來源,則在執(zhí)行期間的以后點繞過它不那么 有效,因為存儲器仍然被泄漏并且ULP仍然正在錯誤地操作。
[0027] 另外,綁定解決方案由于在計算機程序員的知識以外的二次影響本身很復雜和易 出錯。綁定解決方案的復雜性和易出錯屬性給設備驅動器增添顯著風險、即增添如下可能 錯誤情況,設備驅動器的程序員將在它應當作為應用錯誤被解決時試圖在設備驅動器的編 碼中覆蓋它。綁定解決方案造成ULP用無效邏輯并且潛在地用如下行為執(zhí)行,該行為可能 由于為了保護設備驅動器免于錯誤地操作的ULP而必須提供的大量代碼而將來禁止應用 程序接口(API)連接。
[0028] 此外,在網絡適配器錯誤恢復的情況下,網絡適配器需要被重置并且資源被重新 初始化,從而它們可以被重用,這允許操作系統(tǒng)繼續(xù)工作而無重新引導、包括經歷失敗的網 絡適配器的功能。有了 RDM資源,設備驅動器要求ULP在這一網絡適配器恢復之前釋放資 源,并且這樣做的失敗結果將妨礙操作系統(tǒng)(和其它ULP)使用網絡適配器。在沒有下文描 述的示例實施例的機制的情況下,標識未釋放資源的ULP有困難。
[0029] 在已知的RDM架構中,資源泄漏將僅經由系統(tǒng)崩潰或者所得數(shù)據破壞來間接檢 測。從資源泄漏的結果、即崩潰或者數(shù)據破壞反向跟蹤以標識資源泄漏根本原因由于錯誤 的間接屬性而為一項非平凡和耗費時間的任務。因此,軟件開發(fā)和支持團隊必須執(zhí)行系列 設備驅動器儀器測量和問題重建以便對這樣的崩潰和數(shù)據破壞的來源進行定點和標識以 由此標識在RDM資源中的資源泄漏為問題的根本原因。
[0030] 本示例實施例提供用于避免這樣的耗費時間和資源成本密集的過程的機制。另 夕卜,本發(fā)明操作用于輔助減少在ULP中的潛在錯誤代碼并且提供一種用于標識這些錯誤代 碼部分或者"故障(bug) "、從而可以解決它們而未求助于這些耗費時間的備選方案。
[0031] 示例實施例的機制實施的核心概念是一旦資源泄漏條件出現(xiàn)就決定性地檢測到 它并且采取適當動作,從而管理員、應用開發(fā)員或者自動化的機制被通知資源泄漏、然后可 以采取糾正動作。示例實施例使設備驅動器構架充分地健壯以便減少軟件支持成本以及防 止?jié)撛趹缅e誤向生產環(huán)境中傳播。
[0032] 在一個示例實施例中,這些結果通過實現(xiàn)一系列紅黑樹和/或鏈接列表以跟蹤每 個資源來實現(xiàn)。在一個示例實施例中,資源分集是如在0FED?模型中實現(xiàn)的InfiniBand?父 子關系模型的變形。示例實施例利用協(xié)議和空間不可知(即用戶空間和內核空間不可知) 列表和樹服務。另外,示例實施例可用于在進程/應用粒度上的泄漏檢測和恰當資源取消 分配順序實行二者。另外,示例實施例允許對有序平衡二元樹、例如紅黑樹的數(shù)據路徑直通 (log2N)效率的隱式搜索優(yōu)化。
[0033] 下文將參照附圖更具體描述本發(fā)明的示例實施例的以上方面和優(yōu)點。應當認識 至IJ,附圖僅旨在于舉例說明本發(fā)明的示例實施例。本發(fā)明可以涵蓋未在圖中顯式地示出的 方面、實施例和對描繪的示例實施例的修改、但是將按照示例實施例的本說明書而容易為 本領域普通技術人員所清楚。
[0034] 所屬【技術領域】的技術人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機程序產品。 因此,本發(fā)明的各個方面可以具體實現(xiàn)為以下形式,即:完全的硬件實施方式、完全的軟件 實施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結合的實施方式,這里可以 統(tǒng)稱為"電路"、"模塊"或"系統(tǒng)"。此外,在一些實施例中,本發(fā)明的各個方面還可以實現(xiàn)為 在任何一個或多個計算機可讀介質中的計算機程序產品的形式,該計算機可讀介質中包含 計算機可用的程序代碼。
[0035] 可以采用一個或多個計算機可讀介質的任意組合。計算機可讀介質可以是計算 機可讀信號介質或者計算機可讀存儲介質。計算機可讀存儲介質例如可以是--但不限 于--電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、裝置、器件或者任意以上的組合。計算機 可讀存儲介質的更具體的示例(非窮舉的列表)包括:具有一個或多個導線的電連接、便 攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器 (EPROM或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者 上述的任意合適的組合。在本文件中,計算機可讀存儲介質可以是任何包含或存儲程序的 有形介質,該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用。
[0036] 在一些示例實施例中,計算機可讀介質為非瞬態(tài)計算機可讀介質。非瞬態(tài)計算機 可讀介質是任何如下介質,該介質不是無實體的信號或者蠶箔波、即本身為純信號或者傳 播波。非瞬態(tài)計算機可讀介質可以利用信號和傳播波、但是本身不是信號或者傳播波。因 此,例如以如比如任何方式利用信號以維持它們的狀態(tài)的各種形式的存儲器設備和其它類 型的系統(tǒng)、設備或者裝置可以在本說明書的范圍內視為非瞬態(tài)計算機可讀介質。
[0037] 在另一方面,計算機可讀的信號介質可以包括在基帶中或者作為載波一部分傳播 的數(shù)據信號,其中承載了計算機可讀的程序代碼。這種傳播的數(shù)據信號可以采用多種形 式,包括--但不限于--電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號 介質還可以是計算機可讀存儲介質以外的任何計算機可讀介質,該計算機可讀介質可以發(fā) 送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用的程序。
[0038] 計算機可讀介質上包含的計算機代碼可以用任何適當?shù)慕橘|傳輸,包括--但不 限于--無線、有線、光纜、射頻(RF)等等,或者上述的任意合適的組合。
[0039] 可以以一種或多種程序設計語言的任意組合來編寫用于執(zhí)行本發(fā)明操作的計算 機程序代碼,所述程序設計語言包括面向對象的程序設計語言一諸如Java?、Smalltalk?、 C++等,還包括常規(guī)的過程式程序設計語言一諸如"C"語言或類似的程序設計語言。程序代 碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包 執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上 執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡--包括局域網 (LAN)或廣域網(WAN)-連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特 網服務提供商來通過因特網連接)。
[0040] 下面將參照根據本發(fā)明示例實施例的方法、裝置(系統(tǒng))和計算機程序產品的流 程圖和/或框圖描述本發(fā)明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或 框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通 用計算機、專用計算機或其它可編程數(shù)據處理裝置的處理器,從而生產出一種機器,使得這 些計算機程序指令在通過計算機或其它可編程數(shù)據處理裝置的處理器執(zhí)行時,產生了實現(xiàn) 流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。
[0041] 也可以把這些計算機程序指令存儲在計算機可讀介質中,這些指令使得計算機、 其它可編程數(shù)據處理裝置、或其他設備以特定方式工作,從而,存儲在計算機可讀介質中的 指令就產生出包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的指令 的制造品(article of manufacture) 〇
[0042] 也可以把計算機程序指令加載到計算機、其它可編程數(shù)據處理裝置、或其它設備 上,使得在計算機、其它可編程數(shù)據處理裝置或其它設備上執(zhí)行一系列操作步驟,以產生計 算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令提供實現(xiàn)流程圖和/ 或框圖中的一個或多個方框中規(guī)定的功能/動作的過程。
[0043] 附圖中的流程圖和框圖顯示了根據本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程 序產品的可能實現(xiàn)的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以 代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個 用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現(xiàn)中,方框中所 標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框實際上可以 基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的 是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行 規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的 組合來實現(xiàn)。
[0044] 如以上提到的那樣,示例實施例利用協(xié)議和空間不可知列表和樹服務以便提供資 源泄漏檢測和報告功能。示例實施例還修改和擴展在0FED?中的上下文管理模型,其中上 下文是存儲信息的數(shù)據結構,該信息用于管理數(shù)據處理系統(tǒng)的資源和與資源的連接(包括 但不限于用于資源或者與資源的連接的狀態(tài)信息)以提供協(xié)議和空間不可知列表和樹服 務可以對其操作的這些鏈接列表和樹數(shù)據結構。在一個示例實施例中,上下文是0FED?動 詞定義的、比如ib_ucontext標識的軟件資源并且被分配作為對alloc_ucontext的調用的 結果(并且被 dalloc_ucontext)取消分配,該 alloc_ucontext (和 dalloc_ucontext)是 應用級ULP使用的動詞,該動詞向0FED?層標識資源和用戶級事件操縱器的統(tǒng)一用戶。這 一上下文資源被連結到資源池將分配的所有后續(xù)資源。
[0045] 上下文是用于用戶空間應用的所需資源作為用于完成隊列(CQ)(存儲已經被報 告為完成的信息操作的數(shù)據結構)的和保護域(PD)(代表與資源關聯(lián)的訪問權限的數(shù)據結 構)的父代(parent)。每個上下文等效于適配器實例/地址空間、即每對適配器實例和用 戶空間地址空間具有它自己的對應用戶空間上下文數(shù)據結構。因此,如果用戶空間應用與 多個用戶空間地址空間關聯(lián)或者存在用戶空間應用與之操作的多個適配器實例,則該用戶 空間應用可以具有多于一個用戶空間上下文數(shù)據結構。
[0046] 示例實施例創(chuàng)建和/或利用內核空間上下文數(shù)據結構以涵蓋所有用戶空間和內 核空間資源。然而內核空間上下文數(shù)據結構并不被視為實際內核資源、即它不被內核ULP 分配。
[0047] 因此,利用示例實施例,0FED?模型架構在0FED?模型架構事實上未包括內核空間 上下文數(shù)據結構時被修改為包括內核空間上下文數(shù)據結構。示例實施例還提供用戶空間上 下文數(shù)據結構,其中這些內核空間和用戶空間上下文中的每項存儲用于跟蹤相應內核空間 和用戶空間資源的紅黑樹結構。此外,示例實施例提供用于內核空間和用戶空間二者的資 源管理邏輯,該資源管理邏輯借助該修改以包括內核空間和用戶空間上下文數(shù)據結構二者 而被規(guī)范化以用于內核空間和用戶空間二者。
[0048] 如以上提到的那樣,內核空間上下文數(shù)據結構比如以鏈接列表的形式存儲紅黑樹 數(shù)據結構以管理父子關系。紅黑類型樹是自平衡二元搜索樹類型。自平衡通過以所得涂繪 的樹滿足某些屬性--這些屬性不允許它變成顯著地失衡、即一個顏色的節(jié)點數(shù)目與另一 顏色相比顯著地更高--這樣的方式用兩個顏色(這些通常稱為'紅'和'黑'、因此是樹的 名稱)涂繪每個節(jié)點之一來提供。在修改樹時,新樹隨后被重新排列和重新涂繪以恢復著 色屬性。以可以高效地執(zhí)行這一重新排列和重新著色這樣的方式設計屬性。
[0049] 樹的平衡并非完美,但是它好到足以允許它保障在0(log η)時間內搜索,其中η 是在樹中的元素總數(shù)。插入和刪除操作與樹重新排列和重新著色也是在0(l〇g η)時間內 執(zhí)行的。跟蹤每個節(jié)點的顏色由于僅有兩個顏色而每節(jié)點僅需1位信息。樹未包含它是 紅黑樹特有的任何其它數(shù)據,因此它的存儲器覆蓋區(qū)域(footprint)與經典(未著色)二 元搜索樹幾乎相同。在許多情況下,可以無附加存儲器成本存儲附加顏色位信息。紅黑樹 具有以下屬性:(1)在樹中的每個節(jié)點被著色為紅或者黑;(2)每個葉節(jié)點被著色為黑;(3) 如果節(jié)點為紅,則它的兩個子代(child)為黑(這隱含著在從根節(jié)點到葉節(jié)點的任何路徑 上,紅節(jié)點決不相鄰,然而任何數(shù)目的黑節(jié)點可以依次出現(xiàn));并且(4)從節(jié)點到后代葉節(jié) 點的每個簡單路徑包含相同數(shù)目的黑節(jié)點。
[0050] 示例實施例的可以在設備驅動器、內核等中駐留的資源管理邏輯提供用于利用這 樣的紅黑樹以基于父子節(jié)點關系實行節(jié)點去除規(guī)則以及在標識資源泄漏出現(xiàn)時標識它們 并且提供關于這樣的資源泄漏的來源的信息的邏輯。例如在用戶應用分配上下文(比如通 過調用ib_uc 〇nteXt)時,這一內容存儲于與RDM控制結構(RCS)關聯(lián)的列表中,該RCS是 內核或者設備驅動器(下文為了簡化說明而假設為設備驅動器)維護的數(shù)據結構并且用來 包含RDM特有數(shù)據結構。在分配另一更低級資源時,用戶空間應用將更低級資源連結到上 下文。設備驅動器使用與RCS關聯(lián)的列表來跟蹤這一關系。設備驅動器防止在取消分配更 低級資源之前取消分配上下文,因為它是上下文的子代并且最低級資源的存在假設上下文 貫穿最低級資源的壽命可用。有序取消分配的這一實行由示例實施例的機制實施并且也可 以用來如下文描述的那樣標識潛在資源泄漏及其資源。
[0051] 相似地,關于在一個示例實施例中如下文描述的那樣接近地遵循0FED?模型的用 戶空間上下文數(shù)據結構紅黑樹,資源管理邏輯被擴展為如果子節(jié)點存在則不能去除在樹中 的父節(jié)點實行這樣的規(guī)則。這將下文在圖3和4的討論中更具體地加以舉例說明。另外, 資源管理邏輯創(chuàng)建在完成隊列(CQ)與隊列對(QP)之間的依賴性,從而如果關聯(lián)QP存在則 不能去除CQ、即完成隊列是隊列對的父代。這通過在紅黑樹數(shù)據結構中在QP創(chuàng)建時間關聯(lián) QP與對應CQ來實現(xiàn)。紅黑樹結構跟蹤在父CQ和子QP之間的這一關聯(lián)而紅黑樹和用于實 行取消分配規(guī)則的關聯(lián)邏輯用作這樣的關聯(lián)的跟蹤器。也就是說,紅黑樹結構服務于允許 本發(fā)明了解未釋放的資源以及允許本發(fā)明搜尋和發(fā)現(xiàn)具體資源這樣的雙重目的。
[0052] 在用戶空間樹結構內,每個設備、例如網絡適配器等是硬件特有庫、例如圖1中的 硬件特有庫140的實例并且可以包含多個用戶空間上下文數(shù)據結構。每個用戶空間上下文 數(shù)據結構提供描述用戶實例/視圖的狀態(tài)信息并且可以包含一個或者多個保護域(PD)和 關聯(lián)資源。追蹤資源泄漏錯誤是在每CQ和每ro控制塊基礎上從用戶空間樹數(shù)據結構到內 核空間錯誤糾正邏輯執(zhí)行的。
[0053] 可以有為每個用戶空間應用提供的分離用戶空間上下文數(shù)據結構,從而可以有多 個分離用戶空間上下文數(shù)據結構。在一些實例中,單個用戶空間應用可以具有多個用戶空 間上下文數(shù)據結構。這可以在用戶空間應用利用多個分離用戶空間地址空間時出現(xiàn),因為 用戶空間上下文數(shù)據結構實質上代表用戶空間地址空間與特定的支持RDMA功能的設備、 例如RDM網絡適配器進行配對。這也可以在應用需要可擴展性、例如應用需要獨立地工作 的大量活躍連接并且線程與不同上下文關聯(lián)地被分組時或者如果應用本身被實例化則出 現(xiàn)。實質上,未實行在應用與上下文之間的一對一關系。
[0054] 與用戶空間上下文數(shù)據結構對照,示例實施例還提供用于單個內核空間地址空間 的單個內核空間上下文數(shù)據結構。這一單個內核空間上下文數(shù)據結構包含用于所有資源 (用戶空間和內核空間)的上下文信息的陰影副本、由此提供與用戶空間上下文數(shù)據結構 的一致性。
[0055] 內核空間上下文數(shù)據結構包括內核空間樹數(shù)據結構,該內核空間樹數(shù)據結構同樣 可以是使用標識父子關系的鏈接列表或者其它關系結構來實施的紅黑樹數(shù)據結構。內核空 間樹數(shù)據結構是與用戶空間樹的超集而內核空間樹被擴展成與內核空間樹的節(jié)點關聯(lián)地 存儲從各種資源捕獲的取證(forensics)數(shù)據。例如以下取證數(shù)據是為創(chuàng)建的每個資源而 捕獲的并且可以在檢測到資源泄漏時被報告給系統(tǒng)管理員、程序員或者其他授權的人員、 比如可以通過錯誤日志等來完成:(1)用于分配資源的進程的進程標識符;(2)在分配資源 時的日期和/或時間;以及(3)與在以上(1)中的進程標識符互補的整個調用棧(這可以 例如在ASCII格式中被提供)。這一信息可以在通過行進樹結構、發(fā)現(xiàn)用于與檢測到的資源 泄漏關聯(lián)的資源的對應節(jié)點、取回在內核空間上下文數(shù)據結構的內核空間樹數(shù)據結構中的 與節(jié)點關聯(lián)的收集的取證數(shù)據并且在錯誤日志條目--該錯誤日志條目然后被輸出以供 授權的人員使用,由此標識資源泄漏的來源--中包括取證數(shù)據來檢測到資源泄漏時在錯 誤日志中被報告。
[0056] 在內核空間樹數(shù)據結構中,RDMA資源(例如dma_single (該dma_single映射單個 地址/長度緩沖器)、dma_page (該dma_page映射存儲器頁面)、dma_sg (該dma_sg是散射 收集資源))是RDMA控制結構(RCS)的子代和用戶空間上下文數(shù)據結構的同代(peer)(見 下文描述的圖4)。另外,與用戶空間樹數(shù)據結構一樣,QP是用于數(shù)據路徑蹤跡和調試操作 的子代。另外,在用戶空間樹數(shù)據結構和內核空間數(shù)據結構中,QP也是用于控制路徑優(yōu)先 失敗數(shù)據收集(FFDC)追蹤/調試操作的保護域(PD)的子代。因此,在示例實施例的用戶 空間和內核空間樹結構中,QP具有雙父代關系,一個具有用于數(shù)據路徑追蹤/調試的CQ而 一個具有用于控制路徑追蹤/調試的PD。另外,在用戶空間和內核空間樹結構二者中,所有 資源是對應ro的子代。這允許有關資源的前向/后向發(fā)現(xiàn)。此外,如果資源是用戶空間資 源,則用于資源的上下文數(shù)據結構用作樹結構中的祖代以便與架構模型、例如0FED?模型 相配。
[0057] 應當注意在0FED?模型架構中,無用于資源泄漏檢測、例如存儲器泄漏檢測的 RDM資源的形式跟蹤。作為結果,它被留給用戶空間應用以保證正確行為。然而這出于以 上先前討論的原因而易錯。示例實施例使用內核空間上下文數(shù)據結構和關聯(lián)內核空間樹數(shù) 據結構在內核級提供自動化的機制,該機制可以實施用于RDM資源跟蹤的例如紅黑樹機 制,從而檢測RDM資源泄漏。紅黑樹實現(xiàn)方式可以用來允許對存儲器區(qū)域(MR)的DM尋 址從而對數(shù)據路徑操作進行解碼。MR是指用戶空間應用分配的一類存儲器型資源。
[0058] MR資源、例如快速注冊存儲器區(qū)域(FRMR)、DMA存儲器區(qū)域(DMR)、用戶存儲器區(qū) 域(UMR)、地址操縱(AH)等被擴展為提供跟蹤型粒度,從而這些資源無需作為組被跟蹤、但 是可以被分離地跟蹤。盡管每個MR資源類型在技術上是MR,但是每個MR資源的使用可以 不同,并且示例實施例出于軟件可服務性的目的而提供粒度以有助于標識資源使用。因此, 軟件支持可以快速地檢測哪個MR類型被泄漏從而經由刪減問題空間改進根本原因確定。 例如如果設備正在被關閉,則關閉資源可能由于資源仍然在使用中而失敗。由于示例實施 例分離地跟蹤每個類型的存儲器區(qū)域,所以示例實施例可以立即標識哪個資源類型仍然在 使用中、哪個用戶空間應用分配資源,并且這一信息可以用來縮減哪個資源未被釋放。
[0059] 利用示例實施例,快速注冊頁面列表(FRPL)資源被進一步擴展為允許雙重跟蹤。 FRPL資源映射虛擬到總線地址頁面關聯(lián)。與關聯(lián)FRMW獨立地分配/取消分配這一資源。 在0FED?模型架構中,創(chuàng)建后連結操作用來關聯(lián)FRPL資源與FRMR。因此,動詞消費者有可 能分配FRPL、但是未關聯(lián)FRPL與FRMR、由此造成資源泄漏。也就是說,由于ULP分配資源并 且以后將它連結到FRMR,所以如果它的資源釋放被連結到FRMR取消分配邏輯,則未與FRMR 關聯(lián)的FRPL的泄漏是可能的。因此,對FRPL的跟蹤從(更早分配的)FRMR分離地被執(zhí)行。 然而由于FRPL貫穿FRMR的壽命而連結到FRMR,所以與FRMR關聯(lián)地跟蹤FRPL,從而示例實 施例可以防止在FRMR仍然活躍之時釋放FRPL。因此,F(xiàn)RPL資源被擴展用于關于FRPL資源 本身和關于FRMR二者的雙重跟蹤。
[0060] 示例實施例無論FRPL何時被關聯(lián)都通過植入在RCS級用于FRPL的跟蹤器以及在 FRMR中的跟蹤器在所有范圍實行資源泄漏檢測(見下文描述的圖4,其中示出指向FRPL428 的雙箭頭)。術語"跟蹤器"在本文中的意思是示例實施例的機制在分配動詞中設立的并 且在取消分配時實行的數(shù)據結構關系。例如在分配FRPL時,向FRPL的紅黑樹添加資源作 為RCS的子代。在FRPL被連結到FRMR時,F(xiàn)RPL被添加到FRPL的FRMR紅黑樹。FRMR本身 也被添加到上下文的FRMR紅黑樹中。在FRPL被釋放時,示例實施例的邏輯驗證FRPL不是 FRMR紅黑樹的一部分并且通過該校驗將從RCS的樹結構去除FRPL。在設備被關閉時,進行 的校驗之一是RCS的FRPL紅黑樹為空。數(shù)據結構連結的求和總計和校驗邏輯一起構成"跟 蹤器"。
[0061] 如果動詞消費者嘗試在FRPL之前取消分配FRMR,則FRMR可以實行失敗。也就是 說,示例實施例的每個資源取消分配邏輯實行資源無仍然分配的任何子資源這樣的要求。 如果子資源被這一資源取消分配邏輯發(fā)現(xiàn),則取消分配失敗并且用與失敗關聯(lián)的資源取證 信息登記失敗,該資源取證信息提供關于失敗的來源的信息。
[0062] 圖2是圖示用于上下文管理的示例實施例的機制的示例框圖。如圖2中所示,每 個用戶空間應用210具有一個或者多個關聯(lián)用戶空間上下文數(shù)據結構220。每個用戶空間 上下文數(shù)據結構代表與特定RDM設備、例如RDM網絡適配器關聯(lián)的地址空間。因此,單個 用戶空間應用可以具有多個用戶空間上下文數(shù)據結構(uctx) 220。每個uctx220包括用于 用戶空間應用的狀態(tài)信息222以及用戶空間樹數(shù)據結構224,該用戶空間樹數(shù)據結構代表 與對應于用戶空間應用的用戶空間地址空間關聯(lián)的資源的用戶空間視圖。用戶空間樹數(shù)據 結構224遵循以上先前提到的父子關系規(guī)則,從而用適當父子關系代表上下文數(shù)據結構、 保護域(PD)、完整隊列(CQ)、隊列對(QP)等以實行對于資源泄漏檢測和報告的創(chuàng)建/去除 要求。
[0063] 如圖2中進一步所示,示例實施例引入單個內核空間上下文數(shù)據結構(kctx) 230, 該內核空間上下文數(shù)據結構代表單個內核空間地址空間和跨越所有用戶空間應用的所有 用戶空間資源。kctx230包括用于各種內核空間資源的狀態(tài)信息232以及內核空間樹數(shù) 據結構234,該內核空間樹數(shù)據結構代表與各種用戶空間應用關聯(lián)的資源的內核空間視圖。 此外,代表數(shù)據處理系統(tǒng)的資源的內核空間樹數(shù)據結構234的節(jié)點具有在它們中或者與它 們關聯(lián)地存儲的關聯(lián)取證數(shù)據用于以后在資源泄漏檢測和報告中使用、比如經由錯誤日志 等。在創(chuàng)建資源、例如CQ、QP、向ro添加的設備等時捕獲這一信息。
[0064] 可以在一個示例實施例中實現(xiàn)在uctx220和kctx230中的樹數(shù)據結構為紅黑樹以 便跟蹤資源泄漏。然而應當人類史盡管這里描述紅黑樹實現(xiàn)作為示例實現(xiàn),但是示例實施 例不限于此。實際上,可以使用能夠代表在實體、比如資源、上下文等之間的分級關系的任 何鏈接列表、樹結構或者其它數(shù)據結構而未脫離示例實施例的精神實質和范圍。
[0065] 如圖2中進一步所示,用戶空間上下文數(shù)據結構220和內核空間上下文數(shù)據結構 230由RDMA控制結構(RCS) 240管理。RCS240是用于硬件特有層的根數(shù)據結構,該根數(shù)據結 構包含用于特有硬件設備、例如網絡適配器的RDM有關數(shù)據結構。有用于與主機系統(tǒng)關聯(lián) 的每個網絡適配器的RCS240,并且每個RCS240包含所有RDMA有關數(shù)據結構作為子代(或 者子代的子代等)。RCS240可以在硬件特有庫中被鏡像以允許校驗RCS240而未進入內核。
[0066] 邏輯--該邏輯可以是圖1中的OFEDTM核160、硬件特有設備驅動器195等的部 分--可以實施示例實施例的用于使用上下文數(shù)據結構220和230來跟蹤、檢測和報告資 源泄漏的資源管理邏輯。也就是說,示例實施例的例如在硬件特有設備驅動器195中實施 的邏輯可以使用這些上下文數(shù)據結構220和230的樹結構224和234以實行關于資源去除 的規(guī)則以便檢測和/或避免資源泄漏條件并且響應于檢測到資源泄漏從樹結構獲得對應 取證數(shù)據以在通知消息、錯誤日志等中標識資源泄漏的來源。下文將參照圖5和6的流程 圖提供參與執(zhí)行資源泄漏檢測和通知的過程的描述。
[0067] 圖3是根據一個示例實施例的示例用戶空間樹數(shù)據結構的示例框圖。如圖3中所 示,用戶空間樹數(shù)據結構300實質上是定義資源間關聯(lián)的"樹的樹"。用戶空間樹數(shù)據結構 300是"樹的樹"在于在樹的每級可以定義子樹,例如包括元素314、316、318、320和322的 第一個樹以及包括圖3的所有元素的更高級第二個樹。利用用戶空間樹數(shù)據結構,實行各 種規(guī)則以生成在資源之間的關聯(lián)并且由此使得有可能實行關于從樹結構去除節(jié)點的規(guī)則, 這些規(guī)則支持資源泄漏檢測。例如在用戶空間樹數(shù)據結構300中,向庫表示設備為實例, 從而表示設備、例如RDM網絡適配器為庫實例、例如圖3中所示類型"lidrdma"的每個節(jié) 點。在圖3中,表示設備為具有關聯(lián)完整隊列(CQ)312、保護域(PD)314、QP316和其它資源 318-320的一個或者多個用戶空間上下文310。每個這樣的設備可以與多個用戶空間上下 文310關聯(lián)或者包含多個用戶空間上下文310。用戶空間上下文310由RCS330管理,該RCS 可以例如是圖2中的RCS240。
[0068] 如圖3中所示,用于構建用戶空間樹數(shù)據結構的規(guī)則包括QP316是用于數(shù)據路徑 追蹤/調試目的的關聯(lián)CQ312的子代這樣的規(guī)則。此外,QP316是用于控制路徑優(yōu)先失敗數(shù) 據收集(FFDC)追蹤/調試目的的關聯(lián)TO314的子代。因此,QP316具有與QP316和TO314 的雙重父關系。所有資源節(jié)點、例如QP316和其它資源318-320是關聯(lián)TO314的子代。在 這一結構就位時,如果子節(jié)點存在則不能去除父節(jié)點這樣的規(guī)則可以被資源管理邏輯實行 以由此檢測和報告在數(shù)據處理系統(tǒng)中的資源泄漏。因此,如果過程嘗試從數(shù)據處理系統(tǒng)去 除資源、比如CQ312而未釋放與QP316關聯(lián)的子節(jié)點,則該過程可以返回錯誤,該錯誤指示 資源泄漏的潛在來源、例如釋放CQ312而未釋放它的關聯(lián)QP36從而產生代表資源泄漏的 QP316。
[0069] 此外,在檢測到資源泄漏的情況下,可以比如使用紅黑樹搜索算法來搜索樹結構 300以找到在樹結構300中的與檢測到的資源泄漏對應的節(jié)點,并且這可以與內核空間樹 數(shù)據結構一起進一步用來取回將在報告資源泄漏時使用的取證數(shù)據。也就是說,如果在樹 結構300中標識與資源泄漏對應的節(jié)點,則可以在內核空間樹數(shù)據結構中找到相同節(jié)點并 且可以取回和向錯誤日志數(shù)據結構條目中插入對應取證數(shù)據。因此,例如如果設備正在被 取消分配,則仍然分配保護域(PD)資源,則本發(fā)明的取消分配邏輯可以標識這一ro資源正 仍然在被分配、因此代表資源泄漏??梢詮膬群丝臻g樹數(shù)據結構取回用于ro資源的對應取 證數(shù)據,該取證數(shù)據比如指示設備驅動器由于ro的資源泄漏而不能被在特定時間分配ro 的特定代碼路徑上載。因此,檢測到資源泄漏不僅標識資源泄漏本身而且提供標識資源泄 漏來源的附加取證信息。
[0070] 圖4是根據一個示例實施例的示例內核空間樹數(shù)據結構的示例框圖。內核空間 樹數(shù)據結構400遵循與用戶空間樹數(shù)據結構相同的用于父子依賴性的規(guī)則以便使內核空 間樹數(shù)據結構400與用戶空間樹數(shù)據結構300 -致。另外,利用內核空間樹數(shù)據結構400, 圖1中的0FED?核160視為如同它是分離資源。因此,0FED?核160在內核空間樹數(shù)據結 構400中被表示為包括QP、PD、CQ和其它資源的多個資源。因此,如圖4中所示,0FED?核 由0FED?核上下文410或者內核上下文410表示,該上下文具有完整隊列(CQ) 412、保護域 (PD)414、QP416和其它資源418-434。此外,每個用戶空間資源也可以在內核空間樹數(shù)據 結構400內被表示為來自各種用戶空間上下文(未示出)的用戶空間樹數(shù)據結構的陰影副 本。與圖3中的用戶空間上下文310 -樣,內核空間上下文數(shù)據結構410由RCS330管理, 該RCS可以例如是圖2中的RCS240。因此,RCS330是用戶空間上下文310和內核空間上下 文410二者的父代。
[0071] 如圖4中所示,與用戶空間樹數(shù)據結構300-樣,用于構建用戶空間樹數(shù)據結構的 規(guī)則包括QP416是用于數(shù)據路徑追蹤/調試目的的關聯(lián)CQ412的子代這樣的規(guī)則。此外, QP416是用于控制路徑首次失敗數(shù)據收集(FFDC)追蹤/調試目的的關聯(lián)TO414的子代。因 此,QP416具有與QP416和TO414的雙重父關系。所有資源節(jié)點、例如QP416和其它資源 418-428是關聯(lián)TO414的子代。RDMA資源節(jié)點430-434是RCS330的子代和上下文節(jié)點410 的同代。
[0072] 此外,應當注意每個資源節(jié)點在它被創(chuàng)建時具有關于資源收集的并且在內核空間 樹數(shù)據結構中與資源節(jié)點關聯(lián)地存儲的對應取證數(shù)據。這一取證數(shù)據包括分配資源的過程 的過程標識符、分配資源的日期和/或時間以及與進程標識符互補的整個調用棧。因此,在 與特定資源關聯(lián)地檢測到資源泄漏時,可以從在內核空間樹數(shù)據結構中的對應節(jié)點取回這 一信息以由此標識資源泄漏的來源。可以在向授權的用戶發(fā)送的通知消息中包括、在錯誤 日志中存儲或者以別的方式向授權的人員傳達這一信息用于錯誤跟蹤和化解。
[0073] 在這一結構就位時,與用戶空間樹數(shù)據結構一樣,如果子節(jié)點存在則不能去除父 節(jié)點這樣的規(guī)則可以被資源管理邏輯實行以由此檢測和報告在數(shù)據處理系統(tǒng)中的資源泄 漏。
[0074] 圖5是概述根據一個示例實施例的用于分配資源的示例操作的流程圖。如圖5中 所示,該操作始于用戶空間應用調用用于分配資源、例如QP、H)等的例程(步驟510)。內核 更高層協(xié)議(ULP)分配資源(步驟520),并且收集用于分配資源的取證數(shù)據(步驟530)。根 據以上描述的分級規(guī)則生成在用戶空間和內核空間樹數(shù)據結構中的對應節(jié)點(步驟540)。 因此,根據正在分配的資源類型,基于指定的分級規(guī)則在樹數(shù)據結構中產生不同父子關聯(lián), 例如QP是CQ和二者的子代、FRPL是RCS和FRMR二者的子代等。在內核空間樹數(shù)據結 構中,擴展用于分配的資源的節(jié)點以存儲收集的取證數(shù)據(步驟550)。該操作然后對于這 一資源分配終止、但是可以對于每個后續(xù)資源分配來重復。
[0075] 圖6是概述根據一個示例實施例的用于執(zhí)行資源泄漏檢測和報告的示例操作的 流程圖。如圖6中所示,該操作通過讓用戶空間應用調用用于關閉設備的例程(步驟610) 來開始。遍歷用戶空間樹數(shù)據結構以確定與設備關聯(lián)的上下文是否具有仍然分配的任何子 節(jié)點(步驟620)。關于上下文是否具有仍然分配的任何子節(jié)點進行確定(步驟630)。如果 不是,則可以取消分配任何剩余RDM資源以及設備的關聯(lián)用戶空間和內核空間上下文(步 驟 640)。
[0076] 如果有子節(jié)點,則這些代表資源泄漏。作為結果,不允許設備關閉(步驟650)并 且可以生成指示不能執(zhí)行關閉操作和原因、即資源泄漏的錯誤日志條目(步驟660)。此外, 執(zhí)行在內核空間樹數(shù)據結構中的子節(jié)點的查找以發(fā)現(xiàn)在內核空間樹數(shù)據結構中的對應節(jié) 點并且取回在這些節(jié)點中或者與這些節(jié)點關聯(lián)地存儲的取證數(shù)據(步驟670)。取證數(shù)據存 儲于錯誤日志條目中用于以后使用、比如經由客戶端計算設備向系統(tǒng)管理員或者其他授權 的用戶輸出、由用于執(zhí)行錯誤糾正或者報告的自動化的機制處理等(步驟680)。該操作然 后終止。
[0077] 為了進一步舉例說明示例實施例的機制的操作,再次參照圖4,以下系列事件可以 在實現(xiàn)示例實施例的機制的系統(tǒng)上按順序出現(xiàn)。當然,與描述的流程無關的其它事件可以 出現(xiàn)或者可以未出現(xiàn)于這些列舉的事件中的任何事件之間:
[0078] a.內核 ULP 分配 CQ。
[0079] i.硬件特有庫或者硬件特有驅動器(根據具體實現(xiàn)方式;下文稱為"HW")記錄關 于分配功能的信息,該信息包括分配資源的時間戳和棧路徑(在412中)。
[0080] ii.關聯(lián)CQ與內核級上下文的子代(410)。
[0081] b.內核 ULP 分配 ro。
[0082] i. HW記錄用于ro (414)結構的關于分配功能的信息(如它對于CQ完成的那樣)。
[0083] ii.關聯(lián)ro與內核級上下文的子代(410)。
[0084] c.內核 ULP 分配 QP。
[0085] i. HW記錄用于QP (416)結構的關于分配功能的信息(如它對于CQ完成的那樣)。
[0086] ii.關聯(lián)QP與用戶標識的ro(414)的子代以及CQ(412)的數(shù)據結構的子代。 [0087] d.用戶嘗試卸載設備驅動器。
[0088] i.在這一點,hw層將中斷連接從而向所有資源的所有者通知它們需要釋放分配 的資源。
[0089] ii. HW在卸載設備驅動器之前等待釋放資源。HW等待釋放內核上下文的跟蹤的資 源。
[0090] e.用戶想要發(fā)現(xiàn)設備驅動器的卸載為什么被延遲并且發(fā)布用于轉儲關于未盡資 源的信息的命令。在調用該命令時,用戶能夠在CQ和QP被分配時標識它們仍然正在被分 配并且標識個別棧蹤跡,這些棧蹤跡標識誰分配它們從而允許調試問題。
[0091] 在另一示例中,參照圖3的數(shù)據結構,以下系列事件可以按照描述的順序出現(xiàn)。當 然,與描述的流程無關的其它事件可以出現(xiàn)或者可以未出現(xiàn)于這些列舉的事件中的任何事 件之間:
[0092] a.應用ULP分配上下文(310)。
[0093] i. HW記錄關于分配功能的信息,該信息包括分配用戶級上下文資源的時間戳和棧 路徑(在310中)。
[0094] ii.關聯(lián)上下文與RCS的子代(330)。
[0095] b.應用 ULP 分配 CQ。
[0096] i. HW記錄用于CQ(312)結構的關于分配功能的信息(如它對于上下文完成的那 樣)。
[0097] ii.關聯(lián)CQ與用戶標識的用戶級上下文的子代(310)。
[0098] c.應用 ULP 分配 PD。
[0099] i. HW記錄用于Η)(314)結構的關于分配功能的信息(如它對于上下文完成的那 樣)。
[0100] ii.關聯(lián)ro與用戶標識的用戶級上下文的子代(310)。
[0101] d 應用 ULP 分配 QP。
[0102] i. HW記錄用于QP(316)結構的關于分配功能的信息(如它對于上下文完成的那 樣)。
[0103] ii.關聯(lián)QP與用戶標識的Η)(314)的子代和用戶標識的CQ(312)的子代。
[0104] e.時間過去并且用戶嘗試取消分配CQ。
[0105] i. HW將在CQ具有存在的子代時使命令失?。ㄡ槍ψ缘腝P校驗)。
[0106] 1.它可以用相關調試信息記錄事件,該調試信息標識分配的CQ、分配的QP和嘗試 取消分配CQ的路徑。這將允許對錯誤應用的快速化解。
[0107] 因此,示例實施例提供用于RDM資源的資源泄漏檢測的嚴格確定性實行的機制。 示例實施例檢測和在第一次出現(xiàn)、即FFDC時報告資源泄漏而充分取證信息指示負責資源 泄漏的進程/應用。示例實施例借助在根本原因確定時刪減錯誤空間來進一步改進軟件支 持進程。也就是說,通過將資源泄漏的報告連結到具體資源類型,示例實施例已經有效地刪 減超出涉及到的ULP之外、但是也對于ULP正在使用的具體資源的問題。這允許ULP縮減 對于資源泄露來源的搜索,該搜索不是對所有RDM資源使用或者甚至所有存儲器區(qū)域的 校驗,而是對具體類型的RDM資源或者存儲器區(qū)域。
[0108] 鑒于上文,可見可以在其中未提供RDMA資源泄漏檢測機制的許多不同類型的數(shù) 據處理環(huán)境中利用和實現(xiàn)示例實施例。例如可以在實現(xiàn)結構交換網絡、比如InfiniBand?、 0FED?等的許多不同類型的計算環(huán)境中使用和實現(xiàn)示例實施例。另外,一般而言,在數(shù)據 處理系統(tǒng)上執(zhí)行的軟件的內核級提供的資源管理邏輯中實現(xiàn)示例實施例。示例實施例操 作用于通過使用與本發(fā)明引入的附加資源管理邏輯以及先前描述的鏈接列表和樹數(shù)據結 構--該資源管理邏輯在用戶空間上下文數(shù)據結構和內核空間數(shù)據結構內對這樣的鏈接 列表和樹數(shù)據結構操作--在內核級標識和報告資源泄漏。
[0109] 下文提供圖7作為其中可以實現(xiàn)示例實施例的方面的示例數(shù)據處理系統(tǒng)環(huán)境或 者計算設備。應當認識圖7僅為示例而未旨在于斷定或者暗示關于可以在其中實現(xiàn)本發(fā)明 的方面或者實施例的環(huán)境的任何限制??梢赃M行對描繪的環(huán)境的許多修改而未脫離本發(fā)明 的精神實質和范圍。
[0110] 圖7是其中可以實現(xiàn)示例實施例的方面的示例數(shù)據處理系統(tǒng)或者計算設備的框 圖。數(shù)據處理系統(tǒng)700是實現(xiàn)用于本發(fā)明的示例實施例的過程的計算機可用代碼或者指令 可以位于其中的、可以實現(xiàn)為客戶端計算設備、服務器計算設備、單獨計算設備等的計算設 備。
[0111] 在描繪的示例中,數(shù)據處理系統(tǒng)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可以例如是快閃 基本輸入/輸出系統(tǒng)(BIOS)。
[0113] HDD726 和 CD-ROM 驅動 730 通過總線 740 連接到 SB/ICH704。HDD726 和 CD-ROM 驅 動730可以例如使用集成驅動電子裝置(IDE)或者串行高級技術附件(SATA)接口。超級 I/0(SI0)設備736可以連接到SB/ICH704。
[0114] 操作系統(tǒng)在處理單元706上運行。操作系統(tǒng)協(xié)調在圖7中的數(shù)據處理系統(tǒng)700內 的各種部件并且提供這些部件的控制。作為客戶端,操作系統(tǒng)可以是商業(yè)上可用的操作系 統(tǒng)、比如Windows 7'面向對象編程語言、比如Java?編程系統(tǒng)可以結合 操作系統(tǒng)運行并且提供從在數(shù)據處理系統(tǒng)700上執(zhí)行的Java?程序或者應用對操作系統(tǒng)的 調用。
[0115] 作為服務器,數(shù)據處理系統(tǒng)700可以例如是運行高級交互管理(AIX? )操作系 統(tǒng)或者LINUX?操作系統(tǒng)的IBM? eServer? Systemp?·計算機系統(tǒng)。數(shù)據處理系統(tǒng) 700可以是包括處理單元706中的多個處理器的對稱多處理器(SMP)系統(tǒng)。備選地,可以運 用單處理器系統(tǒng)。
[0116] 用于操作系統(tǒng)、面向對象的編程系統(tǒng)和應用或者程序的指令位于存儲設備、比如 HDD726上并且可以被加載到主存儲器708中用于由處理單元706執(zhí)行。用于本發(fā)明的示例 實施例的過程可以例如使用可以位于存儲器、如比如主存儲器708、R0M724中或者一個或 者多個外圍設備726和730中的計算機可用程序代碼由處理單元706執(zhí)行。
[0117] 總線系統(tǒng)、比如如圖7中所示總線738或者總線740可以由一個或者多個總線組 成。當然,總線系統(tǒng)可以使用任何類型的通信結構或者架構來實現(xiàn),該通信結構或者架構提 供在附著到結構或者架構的不同部件或者設備之間的數(shù)據傳送。通信單元、比如圖7的調 制解調器722或者網絡適配器712可以包括用來發(fā)送和接收數(shù)據的一個或者多個設備。存 儲器可以例如是主存儲器708、R0M724或者比如在圖7中的NB/MCH702中發(fā)現(xiàn)的高速緩存。
[0118] 本領域普通技術人員將認識到圖7中的硬件可以根據實現(xiàn)方式而變化。除了在圖 7中描繪的硬件之外或者取代該硬件還可以使用其它內部硬件或者外圍設備、比如閃存、等 效非易失性存儲器或者光盤等。示例實施例的過程也可以應用于除了先前提到的SMP系統(tǒng) 之外的多處理器數(shù)據處理系統(tǒng)而未脫離本發(fā)明的精神實質和范圍。
[0119] 另外,數(shù)據處理系統(tǒng)700可以采用包括客戶端計算設備、服務器計算設備、平板計 算機、膝上型計算機、電話或者其它通信設備、個人數(shù)字助理(PDA)等的多個不同數(shù)據處理 系統(tǒng)中的任何數(shù)據處理系統(tǒng)的形式。在一些示例中,數(shù)據處理系統(tǒng)700可以例如是配置有 閃存以提供用于存儲操作系統(tǒng)文件和/或用戶生成的數(shù)據的非易失性存儲器的便攜計算 設備。實質上,數(shù)據處理系統(tǒng)700可以是無架構限制的任何已知或者以后開發(fā)的數(shù)據處理 系統(tǒng)。
[0120] 如以上指出的那樣,應當認識示例實施例可以采用全硬件實施例、全軟件實施例 或者包含硬件與軟件單元二者的實施例這樣的形式。在一個示例實施例中,在包括但不限 于固件、常駐軟件、微代碼等的軟件或者程序代碼中實施示例實施例的機制。
[0121] 本發(fā)明的描述已經出于示例和描述的目的而加以呈現(xiàn)并且未旨在于窮舉本發(fā)明 或者使本發(fā)明限于公開的形式。許多修改和變化將為本領域普通技術人員所清楚。選擇和 描述實施例以便最佳地說明本發(fā)明的原理、實際應用并且使本領域其他普通技術人員能夠 針對具有如與設想的特定使用相適合的各種修改的各種實施例來理解本發(fā)明。
【權利要求】
1. 一種在數(shù)據處理系統(tǒng)中的用于遠程直接存儲器訪問(RDMA)資源泄漏檢測的方法, 所述數(shù)據處理系統(tǒng)包括處理器和存儲器,所述方法包括: 由所述數(shù)據處理系統(tǒng)在所述數(shù)據處理系統(tǒng)的用戶空間中生成包括用戶空間畑MA資源 分級數(shù)據結構的用戶空間上下文; 由所述數(shù)據處理系統(tǒng)在所述數(shù)據處理系統(tǒng)的內核空間中生成包括內核畑MA資源分級 數(shù)據結構的內核上下文,其中所述內核RDMA資源分級數(shù)據結構包括所述用戶空間RDMA資 源分級數(shù)據結構的節(jié)點; 由所述數(shù)據處理系統(tǒng)接收對于關閉RDMA資源的請求; 由所述數(shù)據處理系統(tǒng)遍歷所述用戶空間RDMA資源分級數(shù)據結構,W確定所述RDMA資 源是否具有在所述用戶空間RDMA資源分級數(shù)據結構中分配的子RDMA資源; 由所述數(shù)據處理系統(tǒng)響應于基于所述用戶空間RDMA資源分級數(shù)據結構或者所述內核 RDMA資源分級數(shù)據結構中的至少一個確定所述RDMA資源具有在所述用戶空間RDMA資源分 級數(shù)據結構中分配的子RDMA資源來檢測資源泄漏;W及 由所述數(shù)據處理系統(tǒng)報告所述資源泄漏。
2. 根據權利要求1所述的方法,其中所述用戶空間RDMA資源分級數(shù)據結構或者所述內 核RDMA資源分級數(shù)據結構中的至少一個包括紅黑樹數(shù)據結構。
3. 根據權利要求1所述的方法,還包括: 實行有序取消分配策略,所述有序取消分配策略指定在所述用戶空間RDMA資源分級 數(shù)據結構或者內核RDMA資源分級數(shù)據結構中的父資源不能在所述父資源的子資源被取消 分配之前被取消分配,其中檢測資源泄漏包括檢測對于違反所述有序取消分配策略的嘗 試。
4. 根據權利要求1所述的方法,其中所述內核RDM資源分級數(shù)據結構是所述用戶空 間RDMA資源分級數(shù)據結構的超集,并且包括代表在所述用戶空間RDMA資源分級數(shù)據結構 中代表的RDMA資源并且代表內核空間RDMA資源的數(shù)據。
5. 根據權利要求4所述的方法,其中所述內核RDMA資源分級數(shù)據結構的與用戶空間 RDMA資源或者內核空間RDMA資源對應的節(jié)點還包括從所述用戶空間RDMA資源或者內核空 間RDMA資源收集的關聯(lián)取證數(shù)據,其中與所述內核RDMA資源分級數(shù)據結構的節(jié)點關聯(lián)的 所述取證數(shù)據提供標識與所述節(jié)點關聯(lián)的資源泄漏的來源的信息。
6. 根據權利要求5所述的方法,其中所述取證數(shù)據包括用于分配了與所述節(jié)點關聯(lián)的 RDM資源的進程的進程標識符、與所述節(jié)點關聯(lián)的所述RDM資源何時被分配的指示符、或 者分配了與所述節(jié)點關聯(lián)的所述RDMA資源的進程的整個調用找中的至少一項。
7. 根據權利要求5所述的方法,其中報告所述資源泄漏還包括: 使所述子RDMA資源與在所述內核RDMA資源分級數(shù)據結構中的對應節(jié)點相關; 從與所述子RDMA資源對應的所述節(jié)點取回取證數(shù)據;W及 生成包括所述取證數(shù)據的資源泄漏通知。
8. 根據權利要求1所述的方法,其中所述用戶空間RDMA分級數(shù)據結構和內核RDMA分 級數(shù)據結構使用實行如下規(guī)則的邏輯來生成,所述規(guī)則為隊列對(QP)RDMA資源是對應保 護域(PD) RDMA資源和對應完成隊列(C曲RDMA資源的子代。
9. 根據權利要求1所述的方法,其中所述用戶空間RDMA分級數(shù)據結構和內核RDMA 分級數(shù)據結構使用實行如下規(guī)則的邏輯來生成,所述規(guī)則為所有RDMA資源是對應保護域 (PD) RDM資源的子代。
10. 根據權利要求1所述的方法,其中所述用戶空間RDMA分級數(shù)據結構和內核RDMA 分級數(shù)據結構使用實行如下規(guī)則的邏輯來生成,所述規(guī)則為快速注冊頁面列表(FRPL) RDMA 資源是RDMA控制結構(RC巧和對應快速注冊存儲器區(qū)域(FRMR) RDMA資源的子代。
11. 一種包括計算機可讀存儲介質的計算機程序產品,所述計算機可讀介質具有存儲 于其中的計算機可讀程序,其中所述計算機可讀程序在數(shù)據處理系統(tǒng)上被執(zhí)行時使所述數(shù) 據處理系統(tǒng): 在所述數(shù)據處理系統(tǒng)的用戶空間中生成包括用戶空間RDMA資源分級數(shù)據結構的用戶 空間上下文; 在所述數(shù)據處理系統(tǒng)的內核空間中生成包括內核畑MA資源分級數(shù)據結構的內核上下 文,其中所述內核RDMA資源分級數(shù)據結構包括所述用戶空間RDMA資源分級數(shù)據結構的節(jié) 占. ;、、、? 接收對于關閉RDMA資源的請求; 遍歷所述用戶空間RDMA資源分級數(shù)據結構W確定所述RDMA資源是否具有在所述用戶 空間RDMA資源分級數(shù)據結構中分配的子RDMA資源; 響應于基于所述用戶空間RDMA資源分級數(shù)據結構或者所述內核RDMA資源分級數(shù)據結 構中的至少一個確定所述RDMA資源具有在所述用戶空間RDMA資源分級數(shù)據結構中分配的 子RDMA資源來檢測資源泄漏;W及 報告所述資源泄漏。
12. -種裝置,包括: 處理器;W及 禪合到所述處理器的存儲器,其中所述存儲器包括指令,所述指令在被所述處理器執(zhí) 行時使所述處理器: 在所述數(shù)據處理系統(tǒng)的用戶空間中生成包括用戶空間RDMA資源分級數(shù)據結構的用戶 空間上下文; 在所述數(shù)據處理系統(tǒng)的內核空間中生成包括內核畑MA資源分級數(shù)據結構的內核上下 文,其中所述內核RDMA資源分級數(shù)據結構包括所述用戶空間RDMA資源分級數(shù)據結構的節(jié) 占. ;、、、? 接收對于關閉RDMA資源的請求; 遍歷所述用戶空間RDMA資源分級數(shù)據結構W確定所述RDMA資源是否具有在所述用戶 空間RDMA資源分級數(shù)據結構中分配的子RDMA資源; 響應于基于所述用戶空間RDMA資源分級數(shù)據結構或者所述內核RDMA資源分級數(shù)據結 構中的至少一個確定所述RDMA資源具有在所述用戶空間RDMA資源分級數(shù)據結構中分配的 子RDMA資源來檢測資源泄漏;W及 報告所述資源泄漏。
【文檔編號】G06F12/02GK104461912SQ201410461344
【公開日】2015年3月25日 申請日期:2014年9月11日 優(yōu)先權日:2013年9月24日
【發(fā)明者】O·卡多納, J·P·梅辛, C·L·所托岡扎爾茲, P·V·托里斯 申請人:國際商業(yè)機器公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
新绛县| 定兴县| 年辖:市辖区| 兖州市| 崇义县| 辽宁省| 界首市| 富锦市| 黎平县| 墨玉县| 高青县| 永福县| 绥江县| 新安县| 朝阳市| 当雄县| 宁国市| 南涧| 沁阳市| 五指山市| 家居| 迭部县| 云林县| 武城县| 崇阳县| 道孚县| 东丽区| 五原县| 阜康市| 重庆市| 平泉县| 黄骅市| 大冶市| 政和县| 津南区| 西藏| 长寿区| 政和县| 孟连| 广安市| 平原县|