[0034] 圖4B是概括依據(jù)一個說明性實施例的用于針對共享存儲器狀態(tài)數(shù)據(jù)結(jié)構(gòu)執(zhí)行跨 存儲器寫入操作的示例操作的流程圖;
[0035]圖4C是概括依據(jù)一個說明性實施例的用于處理共享存儲器狀態(tài)數(shù)據(jù)結(jié)構(gòu)中所識 別的錯誤狀態(tài)的示例操作的流程圖;
[0036]圖5是說明性實施例的各方面可以被實施在其中的分布式數(shù)據(jù)處理系統(tǒng)的示例 圖;以及
[0037]圖6是說明性實施例的各方面可以被實施在其中的計算設(shè)備的示例方框圖。
【具體實施方式】
[0038] 諸如一這兩個應(yīng)用都能夠從 紐約阿芒克的國際商業(yè)機器公司獲得一的高性能遠程直接存儲器訪問(RDMA)應(yīng)用使用用 戶空間(即,系統(tǒng)存儲器中被分配用于應(yīng)用的執(zhí)行和存儲應(yīng)用數(shù)據(jù)的部分,其與作為系統(tǒng)存 儲器中為了操作系統(tǒng)內(nèi)核的執(zhí)行和存儲內(nèi)核相關(guān)數(shù)據(jù)所分配的部分的內(nèi)核空間相對)中的 數(shù)以千計的連接。正常情況下,如果這些連接是套接字,其中該連接的狀態(tài)和上下文(表示 用于通信的資源的控制結(jié)構(gòu))是由操作系統(tǒng)內(nèi)核進行中介的,則諸如輸入/輸出(10)適配器 或接口錯誤之類的運行中斷在可能的最低層級(通常是在操作系統(tǒng)互連(〇SI)L2(數(shù)據(jù)鏈路 層)的域處)得到妥善處理?,F(xiàn)有的用于將錯誤包含在可能的最低層級的機制包括鏈路匯總 控制協(xié)議(LACP)或者鏈路/接口匯總的其它組合形式。
[0039] 所出現(xiàn)的問題在于,高性能RDMA應(yīng)用由于這些應(yīng)用因為它們使用繞過內(nèi)核的10架 構(gòu)的事實而被暴露于〇SI L1-L4錯誤而需要快速且有效的錯誤/終止特征,上述繞過內(nèi)核的 10架構(gòu)諸如RDMA和狀態(tài)卸載10技術(shù)。這些高性能RDMA應(yīng)用使用RDMA來實現(xiàn)來自10連接的最 高性能和響應(yīng),但是轉(zhuǎn)而將它們自身暴露于這樣的0SIL1-L4錯誤。
[0040]然而,RDMA以及其與狀態(tài)卸載10技術(shù)的組合并不與標準0SIL2匯總模型進行交互 操作。利用狀態(tài)卸載10和RDMA,操作系統(tǒng)向10適配器提供連接狀態(tài)信息并且將通過這些連 接進行的數(shù)據(jù)通信移交給10適配器自身,例如TCP/IP協(xié)議棧處理等。這些10適配器將標準 OSI網(wǎng)絡(luò)和傳輸層(層級3和4)包含在物理適配器領(lǐng)域內(nèi),即10適配器是套接字上下文和連 接狀態(tài)的等同形式的容器。這不同于傳統(tǒng)的由內(nèi)核中介的復(fù)用通信,在復(fù)用通信中OSI層級 2-n駐留于操作系統(tǒng)內(nèi)。作為10適配器硬件包含OSI網(wǎng)絡(luò)和傳輸層的結(jié)果,諸如增強型錯誤 處理(EEH)事件(即,外圍組件互連(PCI)錯誤)之類的錯誤導(dǎo)致所有相關(guān)聯(lián)連接的立即終 止。
[0041] 如以上所提到的,RDMA應(yīng)用可以使用數(shù)以千計的連接,并且因此使用數(shù)以千計的 連接資源。例如,在InfiniBand?和OFED?架構(gòu)中,每個連接可以包括隊列配對(QP)、完成隊 列(CQ)、保護域(PD)、上下文(CTX)數(shù)據(jù)結(jié)構(gòu)等。因此,對于具有數(shù)千連接的RDMA應(yīng)用而言, 可能有數(shù)千個這些QP、CQ、ro、CTS等,它們中的每一個在這里被稱作"資源"。每個唯一的資 源必須響應(yīng)于所檢測到的連接錯誤被廢除或銷毀。用于銷毀這些資源的終止過程是以已知 技術(shù)(例如在OFDM?架構(gòu)中)進行的順序控制通道過程。這導(dǎo)致了很高的軟件執(zhí)行時間成本, 該成本隨著資源數(shù)量的增加而增加。因此,終止時間也有所增長并且變得可被終端用戶注 意到。資源的這種順序廢除或破壞在這里被稱作資源的"慢速通道"終止或破壞。
[0042] 該說明性實施例提供了一種模型以允許進行錯誤條件的快速通道應(yīng)用通知,而使 得諸如DB2_PurescaleH和WebSphere-Extreme Scale之類的大規(guī)模并行應(yīng)用能夠在檢測到 錯誤時對所有用戶空間資源執(zhí)行同時終止。也就是說,該說明性實施例提供了一種用于通 過現(xiàn)有架構(gòu)終止機制一例如,經(jīng)由文件描述符關(guān)閉的OFDM?動詞一對即將發(fā)生的串行化正 式終止(慢速通道終止)進行早期警告的模型。由于這種早期警告,資源可以在執(zhí)行正式的 串行化終止過程之前或者在該串行化終止過程到達特定資源之前被廢除或銷毀,由此減少 了該串行化終止過程的執(zhí)行時間。
[0043] 例如,使用0FDM?作為示例架構(gòu),現(xiàn)有技術(shù)的用于執(zhí)行錯誤通知的機制的當前狀態(tài) 是諸如通過利用針對設(shè)置有IB_EVENT_DEVI CE_FATAL標志集的操作系統(tǒng)內(nèi)核空間的0FDM? 核心的ib_diSpatch_event〇調(diào)用,純基于內(nèi)核空間10適配器設(shè)備驅(qū)動器執(zhí)行對操作系統(tǒng) 內(nèi)核一例如,0FDM?核心內(nèi)核部件一的調(diào)用。這轉(zhuǎn)而使得該0FDM?核心邏輯對打開文件描述 符(文件的摘要指示符,其可以用作針對包含打開文件的細節(jié)的內(nèi)核陣列數(shù)據(jù)結(jié)構(gòu)的索引) 的列表進行遍歷并且針對每個應(yīng)用實例執(zhí)行關(guān)閉操作。對于對文件描述符關(guān)閉操作敏感的 應(yīng)用(即在它們接收到關(guān)閉操作時執(zhí)行附加動作(而不僅是釋放資源)的應(yīng)用)而言,這是一 種粗糙的解決方案。
[0044]隨著資源數(shù)量的增加,用于關(guān)閉每個文件描述符并且釋放與每個和各個RDMA資 源一例如,QP、CQ、PD、CTX等一相關(guān)聯(lián)的存儲器的調(diào)用序列非常寬泛且耗時。作為示例,重度 使用的具有64KQP、128K CQ、16K PD的10適配器可能會潛在地延長執(zhí)行EEH恢復(fù)的時間,并 且表現(xiàn)出針對用戶接口完成i fconf i g分離命令(用戶用來斷開RDMA接口連接的命令)的明 顯時間差異,并且使得這些進程能夠被用戶或其它進程清楚地看到,而且在級聯(lián)錯誤綜合 癥(cascading error syndrome)中引入潛在變量。例如,被配置為通過執(zhí)行ifconfig分離 操作而回收接口、但是有邏輯在已經(jīng)過去一分鐘還沒有成功之后出現(xiàn)超時錯誤的腳本就受 到這種完成ifconfig分離操作的時間延長的影響。在這種情況下,適配器上的錯誤已經(jīng)導(dǎo) 致延長的ifconfig分離周期,這轉(zhuǎn)而導(dǎo)致被錯誤診斷的懸掛條件,即層級錯誤。
[0045]為了解決當前錯誤通知和資源釋放操作的缺陷,說明性實施例提供了用于快速通 道用戶空間遠程直接存儲器訪問(RDMA)資源錯誤檢測和早期資源終止的機制。在以下對說 明性實施例的描述中,將使用地址空間、共享存儲器狀態(tài)、上下文和資源的影子副本等概念 來解釋說明性實施例的機制以及它們的操作。因此,接下來是對這些概念的簡要的初步探 討,以幫助理解隨后對說明性實施例的描述。
[0046]地址空間和跨存儲器服務(wù):
[0047] 現(xiàn)代計算系統(tǒng)將系統(tǒng)存儲器劃分為向用戶空間應(yīng)用分配并且可由用戶空間應(yīng)用 訪問的用戶存儲器空間以及向操作系統(tǒng)內(nèi)核所分配并且可由操作系統(tǒng)內(nèi)核訪問的內(nèi)核存 儲器空間。該說明性實施例在內(nèi)核空間中進行操作的同時利用跨存儲器服務(wù)(這里被稱作 "XMAP")來訪問(讀取和寫入)共享存儲器結(jié)構(gòu)。利用這些跨存儲器服務(wù)是因為內(nèi)核并不與 用戶進程分享相同的地址空間。同樣,每個用戶進程(用戶應(yīng)用)具有獨立的用戶地址空間。 簡單而言,說明性實施例在信息在內(nèi)核和用戶地址空間之間進行傳遞的情形中使用跨存儲 器服務(wù)。
[0048] 存在兩種主要的跨存儲器服務(wù)角色:(1)設(shè)置并廢除針對共享存儲器區(qū)域的訪問; 和(2)(從內(nèi)核一側(cè))對共享存儲器區(qū)域進行訪問。設(shè)置和廢除對共享存儲器區(qū)域的訪問涉 及到引用(存儲器地址)存儲器中所要"共享"(在以下部分進行解釋)的區(qū)域和句柄以及要 被共享的區(qū)域的長度來對內(nèi)核服務(wù)進行調(diào)用。除其它之外,該服務(wù)使用該句柄來存儲有關(guān) 該地址空間的信息。要求如此而使得在需要從內(nèi)核訪問共享存儲器時,能夠?qū)⒉煌牡刂?空間進行關(guān)聯(lián)。因此,這隱含了當在內(nèi)核中進行操作時,在訪問存儲器的共享區(qū)域時需要跨 存儲器服務(wù)。一旦設(shè)置完成,駐于存儲器的共享區(qū)域之內(nèi)的數(shù)據(jù)就能夠?qū)τ脩艨臻g和內(nèi)核 空間邏輯二者"可見"。在行業(yè)內(nèi),存在指代設(shè)置存儲器的共享區(qū)域的動作的不同方式,包括 "映射"、"接合"等。例如,在AIX操作系統(tǒng)中,針對作為"xmattach"服務(wù)和"xmdetach"服務(wù)的 設(shè)置和廢除存儲器的共享區(qū)域,隨內(nèi)核服務(wù)使用術(shù)語"接合"和"分離"。
[0049] 關(guān)于從內(nèi)核一側(cè)訪問存儲器的共享區(qū)域,這涉及到針對存儲器的共享區(qū)域進行讀 取和寫入。由于不同地址空間,內(nèi)核無法簡單地針對存儲器的共享區(qū)域直接進行讀取/寫 入。相反,內(nèi)核使用輸入/輸出跨存儲器例程,其提供在設(shè)置期間連同用戶和內(nèi)核地址一起 填充的句柄從而執(zhí)行尋址。從用戶空間一側(cè),數(shù)據(jù)如常進行讀取/寫入。共享存儲器狀態(tài):
[0050] 進一步對以上地址空間和跨存儲器服務(wù)的探討進行解釋,說明性實施例的一個方 面是利用"共享存儲器狀態(tài)結(jié)構(gòu)"對每個用戶空間的根控制結(jié)構(gòu)進行擴展。該"共享存儲器 狀態(tài)"能夠被細分為兩個部分。詞語"狀態(tài)"是指10適配器資源的條件。在一個說明性實施 中,該狀態(tài)是二進制的:錯誤或無錯誤。"共享存儲器"部分是指使用跨存儲器服務(wù)來訪問被 用戶空間所擁有并且駐于其中的存儲器。內(nèi)核同樣將該數(shù)據(jù)保存在其影子副本中。因此,就 其并非是完全相同的存儲器、而是通過以上所提到的跨存儲器服務(wù)進行共享的假象的意義 而言,詞語"共享"可以被認為稍有用詞不當。
[0051 ] 上下文:
[0052] 除非另外有所指出,否則上下文是根控制結(jié)構(gòu),其是包含與通信資源有關(guān)并引用 其的信息的管理結(jié)構(gòu)。在編程術(shù)語中,上下文是其引用(數(shù)據(jù)結(jié)構(gòu)的存儲器地址)被用來訪 問特定于用戶的資源數(shù)據(jù)的大數(shù)據(jù)結(jié)構(gòu)。使用RDMA的用戶應(yīng)用與上下文相關(guān)聯(lián)。
[0053] 影子副本
[0054] 出于對說明性實施例進行描述的目的,影子副本是整個數(shù)據(jù)結(jié)構(gòu)或者數(shù)據(jù)結(jié)構(gòu)的 特定成員(或要素)為了保持對駐于不同地址空間中的數(shù)據(jù)進行追蹤而處于內(nèi)核處的副本。 并非有關(guān)I/O的每條信息都駐于數(shù)據(jù)結(jié)構(gòu)的原有副本和影子副本二者之中(并非每個緩沖 器都被復(fù)制,因為這破壞了RDMA中零復(fù)制的目的)。影子副本以逆向查找的方式提供了對數(shù) 據(jù)進行關(guān)聯(lián)的手段。例如,(在內(nèi)核空間中被處理)的來自10適配器的事件需要被呈現(xiàn)給用 戶,并且用來提供這樣的呈現(xiàn)的信息在資源的數(shù)據(jù)結(jié)構(gòu)的影子副本中提供。對該說明性實 施例特別重要的是,上下文的影子副本是共享存儲器所駐留的位置。
[0055] 如以上所提到的,說明性實施例利用共享存儲器狀態(tài)結(jié)構(gòu)對每個用戶空間的根控 制結(jié)構(gòu)(即,CTX/上下文)進行擴展。該共享存儲器狀態(tài)結(jié)構(gòu)被跨存儲器映射,即能夠被用戶 空間應(yīng)用和內(nèi)核二者經(jīng)由內(nèi)核空間中所提供的跨存儲器映射進行訪問。如果發(fā)生了錯誤事 件,諸如FATAL錯誤事件類型,并且其被內(nèi)核空間10適配器設(shè)備驅(qū)動器所檢測到,則內(nèi)核空 間IP適配器設(shè)備驅(qū)動器對用戶空間根層面的影子上下文的預(yù)先存在的列表進行遍歷并且 執(zhí)行來自內(nèi)核空間的狀態(tài)一例如,指示錯誤或非錯誤狀態(tài)的適配器狀態(tài)一針對與處于錯誤 狀態(tài)的RDMA資源相關(guān)聯(lián)的每個和各個用戶空間上下文結(jié)構(gòu)的跨存儲器寫入。這是從內(nèi)核空 間10適配器設(shè)備驅(qū)動器到每個上下文的非常低成本的異步存儲器寫入操作(低成本是就處 理器周期以及必須采用正式串行化過程的方面而言)。
[0056]用戶空間根控制結(jié)構(gòu)的用戶空間共享存儲器狀態(tài)結(jié)構(gòu)在每個進入資源的RDMA入 口點進行驗證,上述每個入口點即對應(yīng)于作為應(yīng)用操作目的地的RDMA資源的每個存儲器地 址。因此,例如在訪問該RDMA資源一例如,QP、CQ、PD、CTX等一的任意應(yīng)用操作上檢測到例如 錯誤狀態(tài)的無效狀態(tài),并且指示該錯誤狀態(tài)的空值或錯誤結(jié)果值