国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      快速通道用戶空間rdma資源錯(cuò)誤檢測(cè)的制作方法_4

      文檔序號(hào):9816372閱讀:來(lái)源:國(guó)知局
      0被路由至0FED?核心 160和內(nèi)核空間170中特定于硬件的設(shè)備驅(qū)動(dòng)器190。
      [0077] 使用該架構(gòu),上層協(xié)議(ULP)在10適配器180上執(zhí)行資源創(chuàng)建。應(yīng)當(dāng)意識(shí)到的是, ULP涉及到在例如0SI模型的協(xié)議模型中的協(xié)議棧中更高的應(yīng)用或其它代碼。例如,直接使 用0FED?動(dòng)詞的代碼可以是應(yīng)用層的應(yīng)用,但是也可以是用戶直接訪問(wèn)編程庫(kù)(uDAPL),即 應(yīng)用空間用戶,其進(jìn)而能夠由中間件層所使用,后者自身由例如DB2的應(yīng)用所使用。術(shù)語(yǔ)ULP 在這種情況下是指代碼的直接用戶(即0FED動(dòng)詞的直接用戶),而并不將ULP限制為可能去 除了許多層級(jí)的應(yīng)用。
      [0078] ULP執(zhí)行明確調(diào)用以便為例如10適配器180的設(shè)備上的直接存儲(chǔ)器訪問(wèn)(DMA)分配 并映射資源。因此,RDMA驅(qū)動(dòng)器有效地作為資源分配器并且與傳統(tǒng)的NIC/FC驅(qū)動(dòng)器相比更 類似于虛擬機(jī)管理器(VMM),其中差別在于該設(shè)備驅(qū)動(dòng)器是動(dòng)態(tài)的而VMM對(duì)于相關(guān)聯(lián)虛擬機(jī) (VM)的生命周期而言是持久的,上述RDMA驅(qū)動(dòng)器即用于例如10適配器180的特定設(shè)備的設(shè) 備驅(qū)動(dòng)器實(shí)例,其由特定于硬件的驅(qū)動(dòng)器190隨0FED核心160以每個(gè)設(shè)備一個(gè)實(shí)例的方式進(jìn) 行注冊(cè),例如網(wǎng)絡(luò)適配器。該設(shè)備驅(qū)動(dòng)器實(shí)例由ULP通過(guò)0FED庫(kù)130的動(dòng)詞和/或0FED核心 160進(jìn)行訪問(wèn)以在具體設(shè)備/設(shè)備驅(qū)動(dòng)器配對(duì)一例如,網(wǎng)絡(luò)適配器/適配器驅(qū)動(dòng)器配對(duì)一上 分配資源。
      [0079]當(dāng)用戶空間應(yīng)用請(qǐng)求在用戶空間應(yīng)用和諸如10適配器的設(shè)備之間創(chuàng)建RDMA通信 路徑從而執(zhí)行RDMA操作時(shí),該用戶空間應(yīng)用創(chuàng)建諸如QP、CQ、PD、CTX等的用戶空間資源,并 且針對(duì)操作系統(tǒng)內(nèi)核執(zhí)行系統(tǒng)調(diào)用,后者可以執(zhí)行操作以向該設(shè)備注冊(cè)這些資源,上述設(shè) 備隨后被稱作10適配器。該操作系統(tǒng)內(nèi)核實(shí)質(zhì)上將用于與用戶空間應(yīng)用的通信連接的資源 的虛擬地址、長(zhǎng)度和其它屬性傳輸至10適配器,并且隨后將針對(duì)用戶空間應(yīng)用和10適配器 之間的數(shù)據(jù)通信的責(zé)任移交給該10適配器,從而促成RDMA操作。隨后,用戶空間應(yīng)用和10適 配器經(jīng)由該資源互相通信而不必針對(duì)內(nèi)核空間執(zhí)行數(shù)據(jù)的復(fù)制操作并且將操作系統(tǒng)包含 于這樣的數(shù)據(jù)通信之中??刂仆ㄐ趴梢匀匀槐凰椭敛僮飨到y(tǒng)內(nèi)核,諸如事件通信等,但是數(shù) 據(jù)通信則經(jīng)由10適配器和用戶空間應(yīng)用之間所進(jìn)行的RDMA操作使用所注冊(cè)的例如QP、CQ等 的資源來(lái)進(jìn)行處理。
      [0080]除了創(chuàng)建例如QP、CQ、PD、CTX等的用戶空間資源之外,操作系統(tǒng)內(nèi)核進(jìn)一步創(chuàng)建在 內(nèi)核空間中創(chuàng)建該用戶空間上下文的上下文影子副本。該用戶空間上下文以及據(jù)此的該上 下文的內(nèi)核空間影子副本具有相關(guān)聯(lián)的屬性,諸如存儲(chǔ)器地址和長(zhǎng)度屬性。該屬性信息向 內(nèi)核進(jìn)行注冊(cè)并且被存儲(chǔ)在內(nèi)核空間中的映射數(shù)據(jù)結(jié)構(gòu)中,并且可以被用來(lái)執(zhí)行查找操作 并識(shí)別該上下文在系統(tǒng)存儲(chǔ)器的用戶空間和內(nèi)核空間中的位置。例如,當(dāng)發(fā)生錯(cuò)誤時(shí),來(lái)自 10適配器的錯(cuò)誤通知可以指定錯(cuò)誤事件的具體類型以及對(duì)應(yīng)于該錯(cuò)誤事件的資源標(biāo)識(shí)符。 該資源標(biāo)識(shí)符例如可以被內(nèi)核空間適配器驅(qū)動(dòng)器用來(lái)執(zhí)行資源標(biāo)識(shí)符的查找操作從而獲 取與該資源標(biāo)識(shí)符相關(guān)聯(lián)的上下文的內(nèi)核影子副本的地址。
      [0081 ] 此外,該內(nèi)核空間在注冊(cè)該10適配器時(shí)進(jìn)一步創(chuàng)建事件隊(duì)列(EQ),該10適配器可 以通過(guò)其向內(nèi)核通知關(guān)于10適配器和用戶空間應(yīng)用的RDMA連接所發(fā)生的事件,例如可以將 錯(cuò)誤事件報(bào)告發(fā)布給該EQ。
      [0082] 依據(jù)該說(shuō)明性實(shí)施例,特定于硬件(HW)的庫(kù)140和特定于HW的設(shè)備驅(qū)動(dòng)器190-其 在這里也可以被稱作內(nèi)核空間10適配器設(shè)備驅(qū)動(dòng)器一執(zhí)行操作以分配具有相對(duì)應(yīng)的共享 存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu)的上下文數(shù)據(jù)結(jié)構(gòu)以便在提供與應(yīng)用110和10適配器180之間的RDMA連接 相關(guān)聯(lián)的資源的錯(cuò)誤狀態(tài)的早期警告時(shí)使用。也就是說(shuō),應(yīng)用110在創(chuàng)建其自身與10適配器 180之間的RDMA連接時(shí)可以執(zhí)行上下文分配操作,作為示例,諸如通過(guò)針對(duì)特定于硬件的庫(kù) 140執(zhí)行ibv_alloc_context()調(diào)用,其使得特定于硬件的庫(kù)140分配CTX數(shù)據(jù)結(jié)構(gòu)和相對(duì)應(yīng) 的隱含共享存儲(chǔ)器狀態(tài)子結(jié)構(gòu),后者包含該RDMA連接的狀態(tài)變量。特定于硬件的庫(kù)140隨后 可以調(diào)用0FED核心160,作為示例,諸如經(jīng)由ibv_cmd_alloc_context()調(diào)用,從而使得0FED 核心160生成對(duì)應(yīng)于該用戶空間CTX數(shù)據(jù)結(jié)構(gòu)和共享存儲(chǔ)器狀態(tài)子結(jié)構(gòu)的內(nèi)核空間影子副 本數(shù)據(jù)結(jié)構(gòu)。因此,用戶空間120和內(nèi)核空間170都包含用于存儲(chǔ)應(yīng)用110和10適配器180之 間的RDMA連接的狀態(tài)變量的共享存儲(chǔ)器狀態(tài)子結(jié)構(gòu)。
      [0083] 特定于硬件的設(shè)備驅(qū)動(dòng)器190隨后可以被0FED核心160所調(diào)用以執(zhí)行用戶空間和 內(nèi)核空間的共享存儲(chǔ)器狀態(tài)子結(jié)構(gòu)的跨存儲(chǔ)器映射。以這種方式,使得該共享存儲(chǔ)器狀態(tài) 子結(jié)構(gòu)的要素能夠被用戶空間過(guò)程和內(nèi)核空間過(guò)程所看到。特定于硬件的設(shè)備驅(qū)動(dòng)器190 隨后可以基于特定實(shí)現(xiàn)方式來(lái)完成創(chuàng)建內(nèi)核空間CTX影子數(shù)據(jù)結(jié)構(gòu)所可能需要的其它操 作。一旦被創(chuàng)建,用戶空間中的CTX數(shù)據(jù)結(jié)構(gòu)以及內(nèi)核空間中的影子CTX數(shù)據(jù)結(jié)構(gòu)的這些共 享存儲(chǔ)器狀態(tài)子結(jié)構(gòu)就可以被用來(lái)在資源處于錯(cuò)誤狀態(tài)時(shí)經(jīng)由設(shè)置該共享存儲(chǔ)器狀態(tài)子 結(jié)構(gòu)中的狀態(tài)變量η而以信號(hào)進(jìn)行通知。例如,這些狀態(tài)變量可以響應(yīng)于特定于硬件的設(shè)備 驅(qū)動(dòng)器190接收到錯(cuò)誤事件通知而被寫入。以上所提到的跨存儲(chǔ)器映射服務(wù)可以被用來(lái)促 成如下文所描述的狀態(tài)變量的這種寫入。
      [0084] 圖2是圖示基于0FED?的架構(gòu)中的部件有關(guān)從10適配器發(fā)送至主機(jī)系統(tǒng)的錯(cuò)誤事 件通知的操作的示例框圖。如圖2中所示,例如QP 212或CQ214的用戶空間210的資源進(jìn)行操 作,事件/終端經(jīng)由事件隊(duì)列(EQ)222發(fā)生。該事件是工作完成的通知或者異步錯(cuò)誤通知。工 作完成事件通知從物理硬件層級(jí)230中的10適配器232發(fā)送至內(nèi)核空間220中的EQ 222。特 定于硬件的設(shè)備驅(qū)動(dòng)器(DD)229-例如,與10適配器相關(guān)聯(lián)的內(nèi)核空間10適配器設(shè)備一從 EQ222讀取EQ條目(EQE)并且調(diào)用0FDM?核心224的邏輯,使用0FDM?核心224的服務(wù)并且調(diào) 用0FDM?庫(kù)130來(lái)對(duì)該事件進(jìn)行處理。例如,如果該事件通知是工作完成事件,則0FDM?核心 224服務(wù)可以調(diào)用0FED庫(kù)130以執(zhí)行向完成隊(duì)列214發(fā)布完成隊(duì)列條目的操作,其指示QP 212的發(fā)送或接收工作隊(duì)列中的工作隊(duì)列條目完成。作為結(jié)果,相對(duì)應(yīng)的QP 212條目被更新 以指示該工作請(qǐng)求完成。
      [0085] 如果該事件通知是錯(cuò)誤事件,則該事件通知同樣被發(fā)布至EQ 222并且被特定于硬 件的設(shè)備驅(qū)動(dòng)器229進(jìn)行讀取,隨后調(diào)用0FDM?核心224的邏輯。然而,依據(jù)該說(shuō)明性實(shí)施例, 特定于硬件的設(shè)備驅(qū)動(dòng)器229被擴(kuò)充以包括用于處理錯(cuò)誤事件通知的邏輯,而使得錯(cuò)誤狀 態(tài)被寫入到CTX數(shù)據(jù)結(jié)構(gòu)的共享存儲(chǔ)器狀態(tài)子結(jié)構(gòu)的狀態(tài)變量,以及對(duì)應(yīng)于應(yīng)用和10適配 器232之間的RDMA連接的影子CTX數(shù)據(jù)結(jié)構(gòu)。以這種方式,與資源相關(guān)聯(lián)的上下文(CTX)被更 新以反映 RDMA連接的錯(cuò)誤狀態(tài),從而為應(yīng)用提供即將到來(lái)的有關(guān)該應(yīng)用的資源的慢速通道 終止操作的早期警告。
      [0086] 圖3是依據(jù)一個(gè)說(shuō)明性實(shí)施例的部件以及它們?cè)谔幚礤e(cuò)誤通知時(shí)的操作的示例框 圖。如圖3所示,除了以上關(guān)于圖2以及針對(duì)工作請(qǐng)求完成的事件通知的處理所描述的部件, 該說(shuō)明性實(shí)施例進(jìn)一步提供了內(nèi)核空間中用于對(duì)來(lái)自10適配器360的錯(cuò)誤通知進(jìn)行處理的 邏輯,上述錯(cuò)誤通知指示發(fā)生了有關(guān)用戶空間應(yīng)用370和10適配器360之間的RDMA連接的錯(cuò) 誤事件。在該示例實(shí)施例中,在內(nèi)核空間10適配器設(shè)備驅(qū)動(dòng)器(DD)340中提供附加的邏輯, 其利用與0FDM?核心324相關(guān)聯(lián)的資源映射數(shù)據(jù)結(jié)構(gòu)342和跨存儲(chǔ)器(xmap)服務(wù)350進(jìn)行操 作以促成將錯(cuò)誤狀態(tài)值寫入到共享存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)(shmem)318和329中的錯(cuò)誤狀態(tài)變 量。雖然該示例實(shí)施例圖示了在內(nèi)核10適配器設(shè)備驅(qū)動(dòng)器340中提供的邏輯,但是應(yīng)當(dāng)意識(shí) 到的這僅是一個(gè)示例,并且該邏輯可以以許多不同方式來(lái)實(shí)現(xiàn),包括作為0FDM?核心324的 一部分,作為內(nèi)核空間210內(nèi)同在一起的單獨(dú)邏輯部分,等等。
      [0087] 參考圖3,假設(shè)之前關(guān)于針對(duì)RDMA連接的資源創(chuàng)建上下文(CTX)數(shù)據(jù)結(jié)構(gòu)所描述的 過(guò)程已經(jīng)被執(zhí)行,包括在內(nèi)核空間中創(chuàng)建CTX數(shù)據(jù)結(jié)構(gòu)的共享存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)以及CTX 數(shù)據(jù)結(jié)構(gòu)和共享存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)相對(duì)應(yīng)的影子副本。因此,在系統(tǒng)的正常操作期間,用 戶空間應(yīng)用370如本領(lǐng)域普遍所知的那樣使用RDMA資源312、314以在其自身和10適配器360 之間執(zhí)行RDMA操作。由于已經(jīng)針對(duì)資源312、314、316進(jìn)行了改變,所以這些改變有必要被復(fù) 制到影子副本324、326、328。
      [0088] 當(dāng)發(fā)生關(guān)聯(lián)于應(yīng)用370和10適配器232之間的RDMA連接的事件時(shí),10適配器360針 對(duì)事件隊(duì)列(EQ)322執(zhí)行DMA寫入操作或錯(cuò)誤通知,這導(dǎo)致中斷被發(fā)送至主機(jī)系統(tǒng)。該事件 通知包含具體事件信息以及與該錯(cuò)誤事件相關(guān)聯(lián)的資源的資源標(biāo)識(shí)。該資源標(biāo)識(shí)可以包括 對(duì)應(yīng)于該資源的列舉值,例如QP編號(hào)、CQ編號(hào)等,其在資源創(chuàng)建時(shí)被指定給該資源并且連同 其它資源配置信息一起保存在內(nèi)核空間320中,諸如保存在資源映射數(shù)據(jù)結(jié)構(gòu)342中。
      [0089] 內(nèi)核空間10適配器設(shè)備驅(qū)動(dòng)器340讀取EQ 322中的條目并且確定EQ 322中的條目 是否對(duì)應(yīng)于錯(cuò)誤事件通知或者是一些其它類型的事件通知。如果該事件通知并不是錯(cuò)誤事 件通知,則該事件被送至0FED核心324以便在用戶空間310中進(jìn)行相對(duì)應(yīng)RDMA資源的處理和 更新。
      [0090] 如果該事件通知是錯(cuò)誤事件通知,例如來(lái)自10適配器360的災(zāi)難性錯(cuò)誤通知,相關(guān) 聯(lián)10適配器360接口的ifconfig分離等,則內(nèi)核空間10適配器設(shè)備驅(qū)動(dòng)器340(此后簡(jiǎn)稱為 "設(shè)備驅(qū)動(dòng)器"340)在資源標(biāo)識(shí)符的資源映射數(shù)據(jù)結(jié)構(gòu)342中執(zhí)行查找操作以獲取相對(duì)應(yīng)的 條目,該條目識(shí)別與該錯(cuò)誤事件通知相關(guān)聯(lián)的資源的內(nèi)核空間影子副本324、326的地址以 及與資源標(biāo)識(shí)符所識(shí)別的資源相關(guān)聯(lián)的(多個(gè))影子上下文(CTX)數(shù)據(jù)結(jié)構(gòu)328。
      [0091] 該資源的影子副本的地址可以與該資源的資源標(biāo)識(shí)符連同用戶空間資源的地址 和長(zhǎng)度信息以及資源映射數(shù)據(jù)結(jié)構(gòu)342中的該用戶空間資源的其它配置信息相關(guān)聯(lián)。因此, 查找向EQ 322所發(fā)布的錯(cuò)誤事件通知中所指定的資源標(biāo)識(shí)符提供了用戶空間資源的影子 副本的相對(duì)應(yīng)地址。
      [0092] -旦通過(guò)查找操作獲得了用戶空間資源的影子副本324、326及其相對(duì)應(yīng)的(多個(gè)) 上下文(CTX)數(shù)據(jù)結(jié)構(gòu)328,設(shè)備驅(qū)動(dòng)器340就訪問(wèn)跨存儲(chǔ)器映射(xmap)服務(wù)350以獲得自該 資源被創(chuàng)建起的xmap信息從而由設(shè)備驅(qū)動(dòng)器340經(jīng)由xmap服務(wù)350在用戶空間共享存儲(chǔ)器 狀態(tài)結(jié)構(gòu)(shmem)318上執(zhí)行跨存儲(chǔ)器寫入操作。該跨存儲(chǔ)器映射服務(wù)350是促成用戶空間 應(yīng)用和操作系統(tǒng)內(nèi)核在相同的存儲(chǔ)器部分上執(zhí)行的訪問(wèn)操作的服務(wù),用戶空間應(yīng)用在正常 情況下無(wú)法訪問(wèn)內(nèi)核空間存儲(chǔ)器,反之亦然。
      [0093] 該跨存儲(chǔ)器寫入操作將錯(cuò)誤值寫入到共享存儲(chǔ)器狀態(tài)數(shù)據(jù)結(jié)構(gòu)318的狀態(tài)變量以 指示RDMA資源處于錯(cuò)誤狀態(tài)。也就是說(shuō),即使設(shè)備驅(qū)動(dòng)器340所讀取的EQ 322中的事件
      當(dāng)前第4頁(yè)1 2 3 4 5 6 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1