快速通道用戶空間rdma資源錯(cuò)誤檢測(cè)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本申請(qǐng)總體上涉及一種改進(jìn)的數(shù)據(jù)處理裝置和方法,并且更具體地涉及用于執(zhí)行 快速通道用戶空間遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)(RDMA)資源錯(cuò)誤檢測(cè)的機(jī)制。
【背景技術(shù)】
[0002] 遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)(RDMA)是允許從一臺(tái)計(jì)算機(jī)的存儲(chǔ)器到另一臺(tái)計(jì)算機(jī)的存 儲(chǔ)器進(jìn)行直接存儲(chǔ)器訪問(wèn)而不涉及任一計(jì)算機(jī)的操作系統(tǒng)的功能。RDMA促成了高吞吐量、 低延時(shí)的聯(lián)網(wǎng),這在大規(guī)模并行計(jì)算機(jī)集群中是特別有用的。
[0003] RDMA通過(guò)使得計(jì)算機(jī)的網(wǎng)絡(luò)適配器能夠往來(lái)于應(yīng)用存儲(chǔ)器直接傳輸數(shù)據(jù)而支持 零復(fù)制聯(lián)網(wǎng),從而省卻了在操作系統(tǒng)中的數(shù)據(jù)緩沖器和應(yīng)用存儲(chǔ)器之間復(fù)制數(shù)據(jù)的需求。 這樣的直接數(shù)據(jù)傳輸并不要求處理器、高速緩存存儲(chǔ)器等完成任何工作,而且并不要求上 下文切換。這樣的直接傳輸可以與計(jì)算機(jī)正在執(zhí)行的其它系統(tǒng)操作并行執(zhí)行。例如,在應(yīng)用 執(zhí)行RDMA讀或?qū)懻?qǐng)求時(shí),應(yīng)用數(shù)據(jù)經(jīng)由支持RDMA的網(wǎng)絡(luò)適配器直接遞送至網(wǎng)絡(luò),這減少了 傳輸?shù)难訒r(shí)。
[0004] 許多現(xiàn)代架構(gòu)和規(guī)范是考慮到RDMA和支持RDMA的網(wǎng)絡(luò)適配器來(lái)設(shè)計(jì)的。例如,由 InfiniBand?貿(mào)易聯(lián)盟(IBTA)所維護(hù)并推行的InfiniBand?規(guī)范,以及由紐約阿芒克的國(guó) 際商業(yè)機(jī)器公司所研發(fā)的Inf in iBand?架構(gòu),為要經(jīng)由Inf in iBand?結(jié)構(gòu)執(zhí)行的RDMA操作 提供了支持。類似地,由開(kāi)放結(jié)構(gòu)聯(lián)盟(0FA)所維護(hù)并推行并且構(gòu)建于InfiniBand?規(guī)范之 上的開(kāi)放結(jié)構(gòu)企業(yè)分布(0FED?)規(guī)范和架構(gòu)同樣為RDMA操作提供了支持。針對(duì)有關(guān) InfiniBand?和0FED?的更多信息,可以從IBTA和0FA組織和相對(duì)應(yīng)的網(wǎng)站獲得附加信息。
【發(fā)明內(nèi)容】
[0005] 在一個(gè)說(shuō)明性實(shí)施例中,提供了一種在包括處理器和存儲(chǔ)器的數(shù)據(jù)處理系統(tǒng)中用 于向用戶空間應(yīng)用提供遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)(RDMA)的錯(cuò)誤狀態(tài)的早期警告的方法。該方法 包括由該數(shù)據(jù)處理系統(tǒng)的內(nèi)核空間邏輯檢測(cè)已經(jīng)發(fā)生了錯(cuò)誤事件。該方法進(jìn)一步包括由該 內(nèi)核空間邏輯執(zhí)行寫操作以將錯(cuò)誤狀態(tài)值寫入到用戶空間共享的存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)中, 該錯(cuò)誤狀態(tài)值指示RDMA資源要處于錯(cuò)誤狀態(tài)。該方法還包括由該數(shù)據(jù)處理系統(tǒng)的用戶空間 邏輯通過(guò)響應(yīng)于該用戶空間應(yīng)用嘗試使用該RDMA資源執(zhí)行RDMA操作而從該用戶空間共享 存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)讀取該錯(cuò)誤狀態(tài)值而檢測(cè)RDMA資源正處于錯(cuò)誤狀態(tài)。此外,該方法包 括由該用戶空間應(yīng)用響應(yīng)于檢測(cè)到RDMA資源正處于錯(cuò)誤狀態(tài)而發(fā)起操作以廢除該RDMA資 源。
[0006] 在其他說(shuō)明性實(shí)施例中,提供一種計(jì)算機(jī)程序產(chǎn)品,其包括具有計(jì)算機(jī)可讀程序 的計(jì)算機(jī)可用或可讀介質(zhì)。計(jì)算機(jī)可讀程序當(dāng)在計(jì)算設(shè)備上運(yùn)行時(shí)使計(jì)算設(shè)備執(zhí)行以上關(guān) 于方法說(shuō)明性實(shí)施例概述的操作中的各個(gè)操作及其組合。
[0007] 在又一說(shuō)明性實(shí)施例中,提供一種系統(tǒng)/裝置。該系統(tǒng)/裝置可以包括一個(gè)或多個(gè) 處理器和耦合到一個(gè)或多個(gè)處理器的存儲(chǔ)器。存儲(chǔ)器可以包括指令,當(dāng)指令由一個(gè)或多個(gè) 處理器運(yùn)行時(shí)使一個(gè)或多個(gè)處理器執(zhí)行以上關(guān)于方法說(shuō)明性實(shí)施例概述的操作中的各個(gè) 操作及其組合。
[0008] 本發(fā)明的這些和其他特征和優(yōu)點(diǎn)將在本發(fā)明的示例實(shí)施例的下面的具體實(shí)施方 式中進(jìn)行描述,或者鑒于在本發(fā)明的示例實(shí)施例的下面的【具體實(shí)施方式】對(duì)本領(lǐng)域普通技術(shù) 人員將變得顯而易見(jiàn)。
[0009] 從第一實(shí)施例考慮,一種在包括處理器和存儲(chǔ)器的數(shù)據(jù)處理系統(tǒng)中用于向用戶空 間應(yīng)用提供遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)(RDMA)的錯(cuò)誤狀態(tài)的早期警告的方法,該方法包括:由駐 于該數(shù)據(jù)處理系統(tǒng)的內(nèi)核空間中的內(nèi)核空間邏輯檢測(cè)已經(jīng)發(fā)生了錯(cuò)誤事件;由該內(nèi)核空間 邏輯執(zhí)行寫操作以將錯(cuò)誤狀態(tài)值寫入到用戶空間共享的存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)中,該錯(cuò)誤狀 態(tài)值指示RDMA資源要處于錯(cuò)誤狀態(tài);由該數(shù)據(jù)處理系統(tǒng)的用戶空間邏輯通過(guò)響應(yīng)于該用戶 空間應(yīng)用嘗試使用該RDMA資源執(zhí)行RDMA操作而從該用戶空間共享存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)讀 取該錯(cuò)誤狀態(tài)值而檢測(cè)到RDMA資源正處于錯(cuò)誤狀態(tài);并且由該用戶空間邏輯響應(yīng)于檢測(cè)到 RDMA資源正處于錯(cuò)誤狀態(tài)而發(fā)起操作以廢除該RDMA資源。
[0010] 優(yōu)選地,本發(fā)明包括一種方法,其中該用戶空間共享存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)是用戶 空間上下文數(shù)據(jù)結(jié)構(gòu)的延伸,并且被跨存儲(chǔ)器映射以便能夠由用戶空間應(yīng)用和內(nèi)核空間邏 輯二者經(jīng)由在該內(nèi)核空間中所提供的跨存儲(chǔ)器映射進(jìn)行訪問(wèn)。
[0011]優(yōu)選地,本發(fā)明包括一種方法,其中該用戶空間共享存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)能夠由 該內(nèi)核空間邏輯在該內(nèi)核空間中經(jīng)由用戶空間上下文數(shù)據(jù)結(jié)構(gòu)和相對(duì)應(yīng)的用戶空間共享 存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)的影子副本而進(jìn)行訪問(wèn)。
[0012] 優(yōu)選地,本發(fā)明包括一種方法,包括:由內(nèi)核空間10適配器設(shè)備驅(qū)動(dòng)器檢測(cè)RDMA資 源正處于錯(cuò)誤狀態(tài);以及響應(yīng)于該內(nèi)核空間10適配器設(shè)備驅(qū)動(dòng)器檢測(cè)到RDMA資源正處于錯(cuò) 誤狀態(tài):遍歷用戶空間上下文數(shù)據(jù)結(jié)構(gòu)的影子副本的列表;以及針對(duì)與關(guān)聯(lián)于該RDMA資源 的用戶空間上下文數(shù)據(jù)結(jié)構(gòu)的影子副本相對(duì)應(yīng)的每個(gè)用戶空間上下文數(shù)據(jù)結(jié)構(gòu)執(zhí)行該 RDMA資源的狀態(tài)信息的跨存儲(chǔ)器寫入。
[0013]優(yōu)選地,本發(fā)明包括一種方法,其中該用戶空間邏輯通過(guò)在進(jìn)入該RDMA資源的每 個(gè)RDMA進(jìn)入點(diǎn)讀取該用戶空間共享存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)而對(duì)該RMDA資源的狀態(tài)進(jìn)行檢查。
[0014] 優(yōu)選地,本發(fā)明包括一種方法,進(jìn)一步包括在與正在被執(zhí)行的檢測(cè)操作基本上相 同的時(shí)間向該數(shù)據(jù)處理系統(tǒng)的事件隊(duì)列發(fā)布錯(cuò)誤通知,從而發(fā)起包括文件描述符關(guān)閉操作 的慢速通道RDMA資源終止操作。
[0015] 優(yōu)選地,本發(fā)明包括一種方法,其中作為該慢速通道RDMA資源終止操作的一部分, 響應(yīng)于遇到已經(jīng)被用戶空間邏輯響應(yīng)于檢測(cè)到RDMA資源正處于錯(cuò)誤狀態(tài)而終止的相關(guān) RDMA資源,該慢速通道RDMA資源終止操作在該慢速通道RDMA資源終止操作的執(zhí)行期間跳過(guò) 該相關(guān)RDMA資源。
[0016] 優(yōu)選地,本發(fā)明包括一種方法,其中檢測(cè)錯(cuò)誤事件包括接收錯(cuò)誤事件通知,并且其 中該錯(cuò)誤事件通知是來(lái)自輸入/輸出(I/O)適配器的錯(cuò)誤通知、ifconfig分離事件或增強(qiáng)型 錯(cuò)誤處理(EH1)事件之一。
[0017] 優(yōu)選地,本發(fā)明包括一種方法,其中該內(nèi)核空間邏輯包括特定于硬件的設(shè)備驅(qū)動(dòng) 器。
[0018] 優(yōu)選地,本發(fā)明包括一種方法,其中該特定于硬件的設(shè)備驅(qū)動(dòng)器是輸入/輸出(1/ 0)適配器設(shè)備驅(qū)動(dòng)器,并且其中該用戶空間邏輯是與RDM資源相關(guān)聯(lián)的用戶空間應(yīng)用。
[0019] 從第二方面考慮,本發(fā)明包括一種計(jì)算機(jī)程序產(chǎn)品,其包括具有存儲(chǔ)于其中的計(jì) 算機(jī)可讀程序的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中該計(jì)算機(jī)可讀程序在數(shù)據(jù)處理系統(tǒng)上執(zhí)行時(shí)使 得該數(shù)據(jù)處理系統(tǒng):由駐于該數(shù)據(jù)處理系統(tǒng)的內(nèi)核空間中的內(nèi)核空間邏輯檢測(cè)已經(jīng)發(fā)生了 錯(cuò)誤事件;由該內(nèi)核空間邏輯執(zhí)行寫操作以將錯(cuò)誤狀態(tài)值寫入到用戶空間共享的存儲(chǔ)器狀 態(tài)數(shù)據(jù)結(jié)構(gòu)中,其指示RDMA資源要處于錯(cuò)誤狀態(tài);由該數(shù)據(jù)處理系統(tǒng)的用戶空間邏輯通過(guò) 響應(yīng)于該用戶空間應(yīng)用嘗試使用該RDMA資源執(zhí)行RDMA操作而從該用戶空間共享存儲(chǔ)器狀 態(tài)數(shù)據(jù)結(jié)構(gòu)讀取該錯(cuò)誤狀態(tài)值而檢測(cè)RDMA資源正處于錯(cuò)誤狀態(tài);以及由該用戶空間邏輯響 應(yīng)于檢測(cè)到RDMA資源正處于錯(cuò)誤狀態(tài)而發(fā)起操作以廢除該RDMA資源。
[0020] 優(yōu)選地,本發(fā)明包括一種計(jì)算機(jī)程序產(chǎn)品,其中該用戶空間共享存儲(chǔ)器狀態(tài)數(shù)據(jù) 結(jié)構(gòu)是用戶空間上下文數(shù)據(jù)結(jié)構(gòu)的延伸,并且被跨存儲(chǔ)器地映射以能夠由用戶空間應(yīng)用和 內(nèi)核空間邏輯二者經(jīng)由在該內(nèi)核空間中所提供的跨存儲(chǔ)器映射進(jìn)行訪問(wèn)。
[0021] 優(yōu)選地,本發(fā)明包括一種計(jì)算機(jī)程序產(chǎn)品,其中該用戶空間共享存儲(chǔ)器裝數(shù)據(jù)結(jié) 構(gòu)能夠由該內(nèi)核空間邏輯在內(nèi)核空間中經(jīng)由用戶空間上下文數(shù)據(jù)結(jié)構(gòu)和相對(duì)應(yīng)的用戶空 間共享存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)的影子副本而進(jìn)行訪問(wèn)。
[0022] 優(yōu)選地,本發(fā)明包括一種計(jì)算機(jī)程序產(chǎn)品,其中該計(jì)算機(jī)可讀程序進(jìn)一步使得該 數(shù)據(jù)處理系統(tǒng):由內(nèi)核空間10適配器設(shè)備驅(qū)動(dòng)器檢測(cè)RDMA資源正處于錯(cuò)誤狀態(tài);以及響應(yīng) 于該內(nèi)核空間10適配器設(shè)備驅(qū)動(dòng)器檢測(cè)到RDMA資源正處于錯(cuò)誤狀態(tài):遍歷用戶空間上下文 數(shù)據(jù)結(jié)構(gòu)的影子副本的列表;以及針對(duì)與關(guān)聯(lián)于該RDMA資源的用戶空間上下文數(shù)據(jù)結(jié)構(gòu)的 影子副本相對(duì)應(yīng)的每個(gè)用戶空間上下文數(shù)據(jù)結(jié)構(gòu)執(zhí)行該RDMA資源的狀態(tài)信息的跨存儲(chǔ)器 寫入。
[0023]優(yōu)選地,本發(fā)明包括一種計(jì)算機(jī)程序產(chǎn)品,其中該用戶空間邏輯通過(guò)在進(jìn)入該 RDMA資源的每個(gè)RDMA進(jìn)入點(diǎn)讀取該用戶空間共享存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)而對(duì)該RMDA資源的 狀態(tài)進(jìn)行檢查。
[0024]優(yōu)選地,本發(fā)明包括一種計(jì)算機(jī)程序產(chǎn)品,其中該計(jì)算機(jī)可讀程序進(jìn)一步使得該 數(shù)據(jù)處理系統(tǒng)在與正在執(zhí)行檢測(cè)操作基本上相同的時(shí)間向該數(shù)據(jù)處理系統(tǒng)的事件隊(duì)列發(fā) 布錯(cuò)誤通知,從而發(fā)起包括文件描述符關(guān)閉操作的慢速通道RDMA資源終止操作。
[0025]優(yōu)選地,本發(fā)明包括一種計(jì)算機(jī)程序產(chǎn)品,其中作為該慢速通道RDMA資源終止操 作的一部分,響應(yīng)于遇到已經(jīng)被用戶空間邏輯響應(yīng)于檢測(cè)到RDMA資源正處于錯(cuò)誤狀態(tài)而終 止的相關(guān)RDMA資源,該慢速通道RDMA資源終止操作在該慢速通道RDMA資源終止操作的執(zhí)行 期間跳過(guò)該相關(guān)RDMA資源。
[0026] 優(yōu)選地,本發(fā)明包括一種計(jì)算機(jī)程序產(chǎn)品,其中檢測(cè)錯(cuò)誤事件包括接收錯(cuò)誤事件 通知,并且其中該錯(cuò)誤事件通知是來(lái)自輸入/輸出(I/O)適配器的錯(cuò)誤通知、if config分離 事件或增強(qiáng)型錯(cuò)誤處理(ΕΗ0事件之一。
[0027] 優(yōu)選地,本發(fā)明包括一種計(jì)算機(jī)程序產(chǎn)品,其中該內(nèi)核空間邏輯包括輸入/輸出 (I/O)適配器設(shè)備驅(qū)動(dòng)器,并且其中該用戶空間邏輯是與RDMA資源相關(guān)聯(lián)的用戶空間應(yīng)用。 [0028]從第三方面考慮,本發(fā)明提供了一種裝置,包括:處理器;和耦合至該一個(gè)或多個(gè) 處理器的存儲(chǔ)器,其中該存儲(chǔ)器包括指令,該指令在由處理器所執(zhí)行時(shí)使得該處理器:由駐 于該數(shù)據(jù)處理系統(tǒng)的內(nèi)核空間中的內(nèi)核空間邏輯檢測(cè)已經(jīng)發(fā)生了錯(cuò)誤事件;由該內(nèi)核空間 邏輯執(zhí)行寫操作以將錯(cuò)誤狀態(tài)值寫入到用戶空間共享的存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)中,其指示 RDMA資源要處于錯(cuò)誤狀態(tài);由該數(shù)據(jù)處理系統(tǒng)的用戶空間邏輯通過(guò)響應(yīng)于該用戶空間應(yīng)用 嘗試使用該RDMA資源執(zhí)行RDMA操作而從該用戶空間共享存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)讀取該錯(cuò)誤 狀態(tài)值而檢測(cè)到RDMA資源正處于錯(cuò)誤狀態(tài);以及由該用戶空間邏輯響應(yīng)于檢測(cè)到RDMA資源 正處于錯(cuò)誤狀態(tài)而發(fā)起操作以廢除該RDMA資源。
【附圖說(shuō)明】
[0029]現(xiàn)在將參考附圖僅通過(guò)示例對(duì)本發(fā)明的實(shí)施例進(jìn)行描述,其中:
[0030] 圖1是依據(jù)一個(gè)說(shuō)明性實(shí)施例的采用開(kāi)放結(jié)構(gòu)企業(yè)分布(0FED?)核心的RDMA模型 的示例;
[0031] 圖2是圖示基于0FED?的架構(gòu)中的部件有關(guān)正從10適配器發(fā)送至主機(jī)系統(tǒng)的錯(cuò)誤 事件通知的操作的示例框圖;
[0032] 圖3是依據(jù)一個(gè)說(shuō)明性實(shí)施例的部件的示例框圖以及它們?cè)谔幚礤e(cuò)誤通知時(shí)的操 作;
[0033] 圖4A是概括依據(jù)一個(gè)說(shuō)明性實(shí)施例的用于創(chuàng)建共享存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)的示例 操作的流程圖;