利用分段隊(duì)列遠(yuǎn)程存儲(chǔ)訪(fǎng)問(wèn)的低延遲裝置互聯(lián)的制作方法
【專(zhuān)利說(shuō)明】利用分段隊(duì)列遠(yuǎn)程存儲(chǔ)訪(fǎng)問(wèn)的低延遲裝置互聯(lián)
優(yōu)先權(quán)聲明
[0001]本申請(qǐng)要求于2013年6月13日提交的US61/834,615的優(yōu)先權(quán),通過(guò)引用全部并入本文。
技術(shù)領(lǐng)域
[0002]本說(shuō)明書(shū)一般涉及計(jì)算裝置之間的通信,并且更具體地,涉及利用遠(yuǎn)程存儲(chǔ)訪(fǎng)問(wèn)的數(shù)據(jù)通信。
【背景技術(shù)】
[0003]社交越來(lái)越多依賴(lài)計(jì)算裝置以及網(wǎng)絡(luò)來(lái)交互和處理業(yè)務(wù)。為了達(dá)到在關(guān)鍵系統(tǒng)中要求的高水平可用性,應(yīng)該降低由軟件和硬件缺陷導(dǎo)致的意外停機(jī)時(shí)間。
[0004]數(shù)個(gè)現(xiàn)代應(yīng)用程序需要分布式、協(xié)作系統(tǒng),其中計(jì)算裝置能夠迅速互相通信,通常被稱(chēng)為集群計(jì)算、網(wǎng)格計(jì)算或高性能計(jì)算。配置典型地由數(shù)個(gè)松散親合(loosely-coupled)或緊密親合(tightly-coupled)的計(jì)算裝置構(gòu)成,其以格外高的吞吐量和/或低延遲交換數(shù)據(jù),來(lái)協(xié)作執(zhí)行任務(wù),其是被分配到多個(gè)集群中的被分為工作的更小的、通常并行的單元。這些應(yīng)用程序一般呈現(xiàn)下列特征:(1)復(fù)雜高速、低延遲數(shù)據(jù)處理;(2)可靠地、高容量、低延遲數(shù)據(jù)交換;以及(3)高水平可用性,即在大體不間斷基礎(chǔ)上提供終端用戶(hù)服務(wù)的能力。然而,當(dāng)被實(shí)現(xiàn)時(shí),既然由于他們?cè)谙到y(tǒng)行為上的矛盾影響,現(xiàn)有的應(yīng)用程序趨于在這些性能要求之間權(quán)衡,典型設(shè)計(jì)趨向具有同時(shí)滿(mǎn)足所有三個(gè)特征的困境,如以下更細(xì)節(jié)的概述。
[0005]金融服務(wù)工業(yè)是需要高可用性的系統(tǒng)工業(yè)的一個(gè)示例。其他工業(yè)包括庫(kù)存管理(訂單處理)系統(tǒng)、在線(xiàn)游戲、以及諸如用于氣象預(yù)測(cè)的仿真模擬。的確,大量數(shù)據(jù)處理行為由使用可靠的高速集群通信的計(jì)算系統(tǒng)支持。
[0006]復(fù)雜高速、低延遲數(shù)據(jù)處理指的是,及時(shí)地,執(zhí)行大量計(jì)算、數(shù)據(jù)庫(kù)檢索/更新等的能力,以及可靠地在盡可能短的時(shí)間間隔內(nèi)產(chǎn)生結(jié)果的能力。這個(gè)可以通過(guò)并行處理被實(shí)現(xiàn),其中,工作的多個(gè)單元同時(shí)在相同的物理機(jī)器或在利用高速通信鏈路的分布式集群上執(zhí)行。在一些系統(tǒng)中,每個(gè)交互的結(jié)果依賴(lài)先前完成交互的結(jié)果。因此,消息被傳送和接收的命令應(yīng)該被保持。利用多鏈路連接計(jì)算裝置的并行部分,大體上來(lái)說(shuō),是不確定的。例如,不確定性可以由競(jìng)爭(zhēng)條件、操作系統(tǒng)的任務(wù)調(diào)度或變化的網(wǎng)絡(luò)延遲造成。例如,跨每個(gè)鏈路傳送消息的時(shí)間,至少部分由于延遲問(wèn)題,未必是完全一致的。
[0007]可靠地、高容量、低延遲數(shù)據(jù)交換指的是遵守確保消息有序傳遞的要求、在網(wǎng)絡(luò)集群中協(xié)作的計(jì)算裝置之間移動(dòng)數(shù)據(jù)的能力。TCP/IP通常用于這個(gè)目的。這是廣泛使用的網(wǎng)絡(luò)協(xié)議,提供有序傳遞的保證,并且利用最近的技術(shù)優(yōu)勢(shì),在更高網(wǎng)絡(luò)時(shí)鐘頻率中變得可用,導(dǎo)致低延遲傳輸能力。然而,TCP/IP是復(fù)雜精密的協(xié)議,其設(shè)計(jì)用于互聯(lián)網(wǎng)和廣域公共網(wǎng)絡(luò)應(yīng)用程序,并且照這樣,具有相當(dāng)多數(shù)量的網(wǎng)絡(luò)路由、擁塞避免、帶寬優(yōu)化等特性,需要附加的處理開(kāi)銷(xiāo)一一使其對(duì)于要求專(zhuān)用低延遲鏈路的應(yīng)用程序而言,是不太合適的選擇。
[0008]高可用系統(tǒng)企圖保證所給計(jì)算系統(tǒng)的可用百分比盡可能接近100%的預(yù)期時(shí)間。這樣的可用性可以通過(guò)冗余的軟件和/或硬件來(lái)實(shí)現(xiàn),其接管功能性以防組件故障被檢測(cè)。為了順利完成,故障轉(zhuǎn)移需要使用可以保證所復(fù)制數(shù)據(jù)消息的序列化傳遞的可靠的通信鏈路復(fù)制每個(gè)計(jì)算裝置上的數(shù)據(jù)。如本領(lǐng)域技術(shù)人員將領(lǐng)會(huì),狀態(tài)復(fù)制在不確定系統(tǒng)中可以是尤其具有挑戰(zhàn)性的。此外,為了滿(mǎn)足高速和高可靠性的期望,必須盡可能可靠地執(zhí)行狀態(tài)復(fù)制,并且結(jié)果必須以某種方式保證。TCP/IP也通常用于這個(gè)目的,但由于與其精密網(wǎng)絡(luò)特性相關(guān)的大量處理導(dǎo)致的更高延遲,它的性能是次優(yōu)的。低延遲數(shù)據(jù)鏈路技術(shù)趨向提供更適合他們主要預(yù)期應(yīng)用程序的更小組的特性,來(lái)專(zhuān)用點(diǎn)對(duì)點(diǎn)連接。低延遲數(shù)據(jù)鏈路技術(shù)的示例是超傳輸技術(shù)(Hypertransport)、QP1、NUMA鏈路,無(wú)線(xiàn)寬帶技術(shù)(Infiniband)、高速10以及PCI傳輸(PCIe)。不同低延遲數(shù)據(jù)鏈路技術(shù)在靈活性和可擴(kuò)展性以及延遲和通信開(kāi)銷(xiāo)之間權(quán)衡的設(shè)計(jì)中變化。諸如超傳輸技術(shù)(Hypertransport)和QPI的一些低延遲數(shù)據(jù)鏈路技術(shù),并不支持計(jì)算裝置互聯(lián),并且僅被設(shè)計(jì)用于通用電路板上的處理器互聯(lián)。關(guān)于設(shè)計(jì)用于裝置互聯(lián)的數(shù)據(jù)鏈路技術(shù),其中一些具有犧牲的最低可能延遲來(lái)提供更好的可擴(kuò)展性和網(wǎng)絡(luò)特性,以及其中一些要求昂貴的專(zhuān)有硬件實(shí)現(xiàn)。越來(lái)越多的現(xiàn)代應(yīng)用程序要求大量計(jì)算裝置之間的高可用性和低延遲裝置互聯(lián),但不要求精密網(wǎng)絡(luò)能力。然而,對(duì)于這些要有效執(zhí)行的應(yīng)用程序,他們確實(shí)需要裝置互聯(lián)來(lái)提供消息交換的最低可能延遲,以及來(lái)在性?xún)r(jià)比基礎(chǔ)上達(dá)到這個(gè)最低可能延遲。為了達(dá)到最低可能延遲,裝置互聯(lián)需要放棄不被集群應(yīng)用程序要求的特性,并且需要最小化實(shí)現(xiàn)數(shù)據(jù)傳輸必要的處理步驟的數(shù)量。
[0009]遠(yuǎn)程存儲(chǔ)訪(fǎng)問(wèn)是實(shí)現(xiàn)高效數(shù)據(jù)傳輸?shù)囊粋€(gè)方式。消息數(shù)據(jù)是從發(fā)送應(yīng)用程序的存儲(chǔ)器直接傳輸?shù)浇邮諔?yīng)用程序的存儲(chǔ)器的,并未從計(jì)算機(jī)操作系統(tǒng)復(fù)制數(shù)據(jù)或復(fù)制數(shù)據(jù)到計(jì)算機(jī)操作系統(tǒng),也并未不需要網(wǎng)絡(luò)路由協(xié)議的中介層處理那個(gè)增加的延遲。遠(yuǎn)程存儲(chǔ)訪(fǎng)問(wèn)的兩個(gè)通常使用的例子是遠(yuǎn)程直接存儲(chǔ)訪(fǎng)問(wèn)(Remote Direct Memory Access,RDMA)和程序控制輸入/輸出(Programmed Input/Output,ΡΙ0)。無(wú)線(xiàn)寬帶技術(shù)和PCIe是支持遠(yuǎn)程存儲(chǔ)訪(fǎng)問(wèn)的兩個(gè)裝置互聯(lián)技術(shù)。無(wú)線(xiàn)寬帶技術(shù)是廣泛使用的集群互聯(lián),其包括網(wǎng)絡(luò)層并添加路由信息到允許更大網(wǎng)絡(luò)集群支持的數(shù)據(jù)包。然而,無(wú)線(xiàn)寬帶技術(shù)并非本機(jī)地實(shí)現(xiàn)在與通常使用的處理器相同的硅上,需要在每個(gè)計(jì)算裝置終端的無(wú)線(xiàn)寬帶技術(shù)和PCIe之間的附加轉(zhuǎn)換步驟,導(dǎo)致附加的延遲和降低的吞吐量。僅要求計(jì)算裝置的小的集群的應(yīng)用程序并不要求復(fù)雜網(wǎng)絡(luò)路由能力,并且網(wǎng)絡(luò)路由層的開(kāi)銷(xiāo)增加不必要的延遲。PCIe是高速串行計(jì)算機(jī)擴(kuò)展總線(xiàn)標(biāo)準(zhǔn),其主要通過(guò)計(jì)算機(jī)母板上的處理器、作為印刷電路板層互聯(lián)到接口擴(kuò)展卡而被開(kāi)發(fā)。PCIe開(kāi)始在許多類(lèi)別的計(jì)算裝置中變得普遍存在,并且現(xiàn)在是本地地實(shí)現(xiàn)在處理器硅上,進(jìn)一步降低它的延遲。PCIe在外部電纜上的使用僅僅是最近被開(kāi)發(fā)的,并且它作為集群互聯(lián)的使用并不普遍,然而,隨著最近版本的PCIe標(biāo)準(zhǔn)的性能增加,廉價(jià)的PCIe網(wǎng)絡(luò)裝置的可用性和由PCIe技術(shù)提供的格外低的延遲使它作為用于要求有性?xún)r(jià)比的低延遲裝置互聯(lián)的小的應(yīng)用程序集群的低延遲裝置互聯(lián),變得更加引人注意。
[0010]盡管遠(yuǎn)程存儲(chǔ)訪(fǎng)問(wèn)可以實(shí)現(xiàn)極其低的延遲數(shù)據(jù)傳輸,它也有一些缺陷。由于消息數(shù)據(jù)直接傳送到應(yīng)用程序存儲(chǔ)器,其對(duì)接收應(yīng)用程序而言,沒(méi)有數(shù)據(jù)已經(jīng)達(dá)到的通知機(jī)制。另一個(gè)缺陷是,其對(duì)消息在應(yīng)用層的編組和解組并不提供協(xié)議。要滿(mǎn)足這個(gè)需要的應(yīng)用層的傳統(tǒng)隊(duì)列機(jī)制規(guī)定貢獻(xiàn)大量額外處理和用于隊(duì)列管理控制信息的交換的網(wǎng)絡(luò)傳輸操作,使實(shí)現(xiàn)消息傳輸?shù)淖畹涂赡苎舆t的目標(biāo)失敗。需要的是用于實(shí)現(xiàn)有性?xún)r(jià)比的、低延遲、序列化的、保證計(jì)算裝置之間的信息傳輸?shù)南到y(tǒng)和方法。
【發(fā)明內(nèi)容】
[0011]依照本發(fā)明的一個(gè)方面,用于低延遲數(shù)據(jù)通信的方法包括,在第一計(jì)算裝置寫(xiě)入消息到如推進(jìn)尾指針?biāo)甘镜沫h(huán)形消息隊(duì)列中的消息緩存。環(huán)形消息隊(duì)列利用遠(yuǎn)程對(duì)等數(shù)據(jù)鏈路映射到在第二計(jì)算裝置中的遠(yuǎn)程存儲(chǔ)器。消息緩存被劃分成至少兩個(gè)分段隊(duì)列,每個(gè)分段隊(duì)列具有兩個(gè)或更多消息緩存。推進(jìn)頭指針指示一個(gè)分段隊(duì)列的消息緩存。方法還包括,在第二計(jì)算裝置從如推進(jìn)頭指針?biāo)甘镜沫h(huán)形消息隊(duì)列的消息緩存讀取消息,包括從頭指針最終指示下一消息緩存之后,當(dāng)確定下一消息緩存被新寫(xiě)入時(shí),從下一消息緩存讀取消息。方法還包括在寫(xiě)入消息到一個(gè)消息緩存后,在第一計(jì)算裝置中從一個(gè)消息緩存推進(jìn)尾指針到同一分段隊(duì)列的另一消息緩存,以及當(dāng)確定頭指針并不指示下一分段隊(duì)列的任何消息緩存時(shí),在第一計(jì)算裝置從當(dāng)前分段隊(duì)列的消息緩存推進(jìn)尾指針到下一分段隊(duì)列的消息緩存中。
[0012]依照本發(fā)明的另一個(gè)方面,計(jì)算機(jī)系統(tǒng)包括第一計(jì)算裝置,配置成,寫(xiě)入消息到如推進(jìn)尾指針?biāo)甘镜沫h(huán)形消息隊(duì)列中的消息緩存,環(huán)形消息隊(duì)列映射到在第二計(jì)算裝置中的遠(yuǎn)程存儲(chǔ)器。消息緩存被劃分成至少兩個(gè)分段隊(duì)列,每個(gè)分段隊(duì)列具有兩個(gè)或更多消息緩存。系統(tǒng)還包括第二計(jì)算裝置,配置成從如指示一個(gè)分段隊(duì)列的消息緩存的推進(jìn)頭指針?biāo)甘镜沫h(huán)形消息隊(duì)列的消息緩存讀取消息。第二計(jì)算裝置配置成從頭指針最終指示下一消息緩存之后,當(dāng)確定下一消息緩存被新寫(xiě)入時(shí),從下一消息緩存讀取消息。系統(tǒng)還包括連接第二計(jì)算裝置和第一計(jì)算裝置的對(duì)等數(shù)據(jù)鏈路。第一計(jì)算裝置配置成在寫(xiě)入消息到一個(gè)消息緩存后,從一個(gè)消息緩存推進(jìn)尾指針到同一分段隊(duì)列的另一消息緩存。第一計(jì)算裝置還配置成當(dāng)確定頭指針并不指示下一分段隊(duì)列的任何消息緩存時(shí),從當(dāng)前分段隊(duì)列的消息緩存推進(jìn)尾指針到下一分段隊(duì)列的消息緩存中。
[0013]依照本發(fā)明的另一個(gè)方面,計(jì)算裝置包括存儲(chǔ)器,配置成儲(chǔ)存被劃分為至少兩個(gè)分段隊(duì)列的消息緩存的環(huán)形消息隊(duì)列。每個(gè)分段隊(duì)列具有兩個(gè)或更多消息緩存。計(jì)算裝置還包括高速串行擴(kuò)展總線(xiàn)適配卡以及連接到存儲(chǔ)器和高速串行擴(kuò)展總線(xiàn)適配卡的處理器。處理器配置成寫(xiě)入消息到如推進(jìn)尾指針?biāo)甘镜沫h(huán)形消息隊(duì)列的消息緩存。處理器還配置成通過(guò)高速串行擴(kuò)展總線(xiàn)適配卡將環(huán)形消息隊(duì)列復(fù)制到在遠(yuǎn)程計(jì)算裝置處的遠(yuǎn)程存儲(chǔ)器。處理器還配置成寫(xiě)入消息到一個(gè)消息緩存后,在從一個(gè)消息緩存推進(jìn)尾指針到同一分段隊(duì)列的另一消息緩存。處理器還配置成當(dāng)確定用于在遠(yuǎn)程計(jì)算裝置讀取消息的頭指針并不指示下一分段隊(duì)列的任何消息緩存時(shí),從當(dāng)前分段隊(duì)列的消息緩存推進(jìn)尾指針到下一分段隊(duì)列的消息緩存中。
[0014]依照本發(fā)明的另一個(gè)方面,計(jì)算裝置包括存儲(chǔ)器,配置成儲(chǔ)存被劃分為至少兩個(gè)分段隊(duì)列的消息緩存的環(huán)形消息隊(duì)列。每個(gè)分段隊(duì)列具有兩個(gè)或更多消息緩存。計(jì)算裝置還包括高速串行擴(kuò)展總線(xiàn)適配卡以及連接到存儲(chǔ)器和高速串行擴(kuò)展總線(xiàn)適配卡的處理器。所述處理器還配置成在所述存儲(chǔ)器中復(fù)制通過(guò)所述高速串行擴(kuò)展總線(xiàn)適配卡從遠(yuǎn)程計(jì)算裝置接收的所述環(huán)形消息隊(duì)列。處理器還配置成從如指示分段隊(duì)列中一個(gè)的消息緩存的推進(jìn)頭指針?biāo)甘镜沫h(huán)形消息隊(duì)列的消息緩存中讀取消息。處理器還配置成從頭指針最終指示下一消息緩存之后,當(dāng)確定下一消息緩存被新寫(xiě)入時(shí),從下一消息緩存讀取消息。處理器還配置成控制分段隊(duì)列的防護(hù)標(biāo)記,每個(gè)防護(hù)標(biāo)記向遠(yuǎn)程計(jì)算裝置指示,寫(xiě)入各自的分段隊(duì)列是否被允許。
【附圖說(shuō)明】
[0015]通