亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種低延遲高IOPS的數(shù)據(jù)訪問方法與流程

文檔序號:11589874閱讀:402來源:國知局

本發(fā)明涉及存儲系統(tǒng)軟件架構(gòu),尤其涉及一種存儲系統(tǒng)中的數(shù)據(jù)訪問方法及設(shè)備。



背景技術(shù):

傳統(tǒng)io軟件中通常使用聚合的方式提供高吞吐量。這種設(shè)計中,多個io請求被聚合在一起并批量處理。io處理路徑通??梢郧蟹殖上鄬Κ毩⒌牟糠郑鐗嚎s、去重等,每一部分作為一個子任務(wù)可以用流水線的方式處理。其中每個子任務(wù)處理時都可以用聚合的手段來提升吞吐量。傳統(tǒng)上,對于網(wǎng)絡(luò)和磁盤等來說,聚合也有利于提升他們的效率。

使用調(diào)度器和預(yù)讀策略可以認(rèn)為是一種聚合方式。



技術(shù)實現(xiàn)要素:

聚合的方式盡管可以達(dá)到高帶寬,卻無法達(dá)到低延遲和低隊列深度下的高iops(input/outputoperationpersecond,每秒讀/寫操作的次數(shù))。對于被聚合的多個io中的一個單獨的io來說,必須等到同批次的io都完成之后才向上層報告自身完成的消息。這就導(dǎo)致了延遲的大大提升。同時,存儲系統(tǒng)中多任務(wù)競爭cpu引入的任務(wù)切換會進(jìn)一步引入不可預(yù)測的延遲。對于新型的高速存儲介質(zhì),例如ssd,特別對于讀請求來說,隨機(jī)讀可以達(dá)到很高的帶寬和iops。這種情形下,現(xiàn)有的聚合方法提供高吞吐量的優(yōu)勢將不存在。同時網(wǎng)絡(luò)的性能也在飛速發(fā)展,提供高帶寬的同時也能提供很高的iops的低延遲。現(xiàn)有聚合的io模式將成為提升iops和降低延遲過程中的障礙。

本發(fā)明希望克服現(xiàn)有技術(shù)在新型高速存儲介質(zhì)上,無法達(dá)到高iops和低延遲的缺點,最終達(dá)到平衡高iops、低延遲和高帶寬三個指標(biāo)的結(jié)果。

根據(jù)本發(fā)明的一個方面,提供了一種存儲系統(tǒng)中的數(shù)據(jù)訪問方法,其中所述存儲系統(tǒng)中包括第一組cpu核與第二組cpu核,其中第一 組cpu核的每個專用于運行多個第一線程之一,第二組cpu核用于運行多個第二線程,所述方法包括:通過所述多個第一線程之一獲取寫請求并將數(shù)據(jù)寫到緩沖區(qū);通過所述第二線程將所述緩沖區(qū)中的數(shù)據(jù)寫到非易失存儲設(shè)備。

根據(jù)本發(fā)明的一個實施方式,進(jìn)一步包括:通過所述第一線程將寫請求的完成信息發(fā)送給寫請求發(fā)出方。

根據(jù)本發(fā)明的一個實施方式,其中,通過第二線程將所述緩沖區(qū)中的數(shù)據(jù)聚合后寫到存儲設(shè)備。

根據(jù)本發(fā)明的一個實施方式,其中,所述第一線程每次獲取寫請求的數(shù)量是接近于1的較小整數(shù)。

根據(jù)本發(fā)明的一個實施方式,其中,多個第二線程的一些專用于將數(shù)據(jù)寫入到第一存儲設(shè)備,而多個第二線程的另一些專用于將數(shù)據(jù)寫入到第二存儲設(shè)備。

根據(jù)本發(fā)明的一個實施方式,其中,所述第二線程將所述緩沖區(qū)中的數(shù)據(jù)壓縮后寫到存儲設(shè)備。

根據(jù)本發(fā)明的一個實施方式,其中,使用cgroup將cpu核劃為第一組cpu核與第二組cpu核。

根據(jù)本發(fā)明的一個實施方式,其中,使用taskset為每個第一線程分配為其所獨占的cpu核。

根據(jù)本發(fā)明的一個實施方式,其中,使用輪詢和中斷來獲取寫請求。

根據(jù)本發(fā)明的一個實施方式,其中,所述寫請求發(fā)出方是網(wǎng)卡。

根據(jù)本發(fā)明的第二方面,還提供了一種存儲系統(tǒng)中的數(shù)據(jù)訪問設(shè)備,其中所述存儲系統(tǒng)中包括第一組cpu核與第二組cpu核,其中第一組cpu核的每個專用于運行多個第一線程之一,第二組cpu核用于運行多個第二線程,所述設(shè)備包括:用于通過所述多個第一線程之一獲取寫請求并將數(shù)據(jù)寫到緩沖區(qū)的裝置;用于通過所述第二線程將所述緩沖區(qū)中的數(shù)據(jù)寫到非易失存儲設(shè)備的裝置。

根據(jù)本發(fā)明的第三方面,還提供了一種存儲系統(tǒng)中的數(shù)據(jù)訪問方 法,其中所述存儲系統(tǒng)中包括第一組cpu核與第二組cpu核,其中第一組cpu核的每個專用于運行多個第一線程之一,第二組cpu核用于運行多個第二線程,所述方法包括:通過所述多個第一線程之一獲取讀請求并將讀請求發(fā)送給存儲設(shè)備;響應(yīng)于所述存儲設(shè)備完成讀請求,通過所述多個第一線程之一將從所述存儲設(shè)備讀出的數(shù)據(jù)返回給讀請求發(fā)出方。

根據(jù)本發(fā)明的第三方面的一個實施方式,其中,所述多個第一線程之一每次獲取讀請求的數(shù)量是接近于1的較小整數(shù)。

根據(jù)本發(fā)明的第三方面的一個實施方式,其中,所述多個第一線程之一每次從所述存儲設(shè)備讀出的數(shù)據(jù)對應(yīng)的讀請求數(shù)量是接近于1的較小整數(shù)。

根據(jù)本發(fā)明的第三方面的一個實施方式,其中,所述多個第一線程之一每次從所述存儲設(shè)備讀出的數(shù)據(jù)對應(yīng)的讀請求數(shù)量是接近于1的較小整數(shù)。

根據(jù)本發(fā)明的第三方面的一個實施方式,其中,所述讀請求發(fā)出方是網(wǎng)卡。

根據(jù)本發(fā)明的第三方面的一個實施方式,其中,使用cgroup將cpu核劃為第一組cpu核與第二組cpu核。

根據(jù)本發(fā)明的第三方面的一個實施方式,其中,使用taskset為每個第一線程分配為其所獨占的cpu核。

根據(jù)本發(fā)明的第三方面的一個實施方式,其中,通過輪詢和中斷來獲取讀請求。

根據(jù)本發(fā)明的第四方面,還提供了一種存儲系統(tǒng)中的數(shù)據(jù)訪問設(shè)備,其中所述存儲系統(tǒng)中包括第一組cpu核與第二組cpu核,其中第一組cpu核的每個專用于運行多個第一線程之一,第二組cpu核用于運行多個第二線程,所述設(shè)備包括:用于通過所述多個第一線程之一獲取讀請求并將讀請求發(fā)送給存儲設(shè)備的裝置;用于響應(yīng)于所述存儲設(shè)備完成讀請求,通過所述多個第一線程之一將從所述存儲設(shè)備讀出的數(shù)據(jù)返回給讀請求發(fā)出方的裝置。

根據(jù)本發(fā)明的第五方面,還提供了一種存儲系統(tǒng)中的數(shù)據(jù)訪問方法,其中所述存儲系統(tǒng)中包括第一組cpu核與第二組cpu核,其中第一組cpu的每個專用于運行多個第一線程之一;第二組cpu核用于運行多個第二線程,所述方法包括:通過所述多個第一線程之一獲取寫請求并將數(shù)據(jù)寫到緩沖區(qū);通過所述多個第二線程之一將所述緩沖區(qū)中的數(shù)據(jù)寫到非易失存儲設(shè)備;通過所述多個第一線程之一獲取讀請求并將讀請求發(fā)送給存儲設(shè)備;響應(yīng)于所述存儲設(shè)備完成讀請求,通過所述多個第一線程之一將從所述存儲設(shè)備讀出的數(shù)據(jù)返回給讀請求發(fā)出方。

根據(jù)本發(fā)明的第五方面,還提供了一種存儲系統(tǒng)中的數(shù)據(jù)訪問設(shè)備,其中所述存儲系統(tǒng)中包括第一組cpu核與第二組cpu核,其中第一組cpu的每個專用于運行多個第一線程之一;第二組cpu核用于運行多個第二線程,所述設(shè)備包括:用于通過所述多個第一線程之一獲取寫請求并將數(shù)據(jù)寫到緩沖區(qū)的裝置;用于通過所述多個第二線程之一將所述緩沖區(qū)中的數(shù)據(jù)寫到非易失存儲設(shè)備的裝置;用于通過所述多個第一線程之一獲取讀請求并將讀請求發(fā)送給存儲設(shè)備的裝置;用于響應(yīng)于所述存儲設(shè)備完成讀請求,通過所述多個第一線程之一將從所述存儲設(shè)備讀出的數(shù)據(jù)返回給讀請求發(fā)出方的裝置。

根據(jù)本發(fā)明的第六方面,提供一種包含計算機(jī)程序代碼的計算機(jī)程序,當(dāng)被載入計算機(jī)系統(tǒng)并在計算機(jī)系統(tǒng)上執(zhí)行時,所述計算機(jī)程序代碼使所述計算機(jī)系統(tǒng)執(zhí)行根據(jù)本發(fā)明一方面提供的存儲系統(tǒng)中的數(shù)據(jù)訪問方法或者根據(jù)本發(fā)明第三方面提供的存儲系統(tǒng)中的數(shù)據(jù)訪問方法或者本發(fā)明第五方面提供的存儲系統(tǒng)中的數(shù)據(jù)訪問方法。

根據(jù)本發(fā)明的第七方面,提供一種包括程序代碼的程序,當(dāng)被載入存儲設(shè)備并在存儲設(shè)備上執(zhí)行時,所述計程序代碼使所述存儲設(shè)備執(zhí)行根據(jù)本發(fā)明一方面提供的存儲系統(tǒng)中的數(shù)據(jù)訪問方法或者根據(jù)本發(fā)明第三方面提供的存儲系統(tǒng)中的數(shù)據(jù)訪問方法或者本發(fā)明第五方面提供的存儲系統(tǒng)中的數(shù)據(jù)訪問方法。

本發(fā)明能夠兼顧存儲系統(tǒng)的延遲,iops和帶寬,特別是對于新型的 基于閃存的存儲系統(tǒng),本發(fā)明提出的架構(gòu)相對傳統(tǒng)聚合方案在延遲和iops上有明顯的優(yōu)勢。而且本發(fā)明不僅適用于基于閃存的存儲系統(tǒng),同樣適用于采用磁盤、xpoint、pcram、mram、rram、feram等存儲介質(zhì)的存儲系統(tǒng)。

附圖說明

通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。其中在附圖中,參考數(shù)字之后的字母標(biāo)記指示多個相同的部件,當(dāng)泛指這些部件時,將省略其最后的字母標(biāo)記。在附圖中:

圖1示出了根據(jù)本發(fā)明的一個實施方式的cpu核和線程設(shè)定的結(jié)構(gòu)示意圖;

圖2a示出了根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)中的數(shù)據(jù)訪問方法的流程圖;

圖2b示出了根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)中的數(shù)據(jù)訪問方法的流程圖;

圖3示出了根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)中的數(shù)據(jù)訪問方法的示意圖;

圖4示出了根據(jù)本發(fā)明的另一個方面的存儲系統(tǒng)中的數(shù)據(jù)訪問裝置的結(jié)構(gòu)示意圖;

圖5示出了根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)中的數(shù)據(jù)訪問方法的流程圖;

圖6示出了根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)中的數(shù)據(jù)訪問方法的示意圖;

圖7示出了根據(jù)本發(fā)明的另一個方面的存儲系統(tǒng)中的數(shù)據(jù)訪問裝置的結(jié)構(gòu)示意圖;

圖8示出了根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)中的數(shù)據(jù)訪問方法的流程圖;

圖9示出了根據(jù)本發(fā)明的另一個方面的存儲系統(tǒng)中的數(shù)據(jù)訪問裝置的結(jié)構(gòu)示意圖。

在附圖中,使用相同或類似的標(biāo)號來指代相同或類似的元素。

具體實施方式

下面結(jié)合附圖和具體的實施方式對本發(fā)明作進(jìn)一步的描述。

對存儲系統(tǒng)中的cpu資源進(jìn)行重新劃分和隔離,并對存儲系統(tǒng)中io處理流程拆分為幾個階段,不同階段可以分別由不同線程執(zhí)行。對存儲系統(tǒng)中的io處理流程區(qū)分出同步階段和異步階段,同時對工作線程劃分為第一線程和第二線程。

圖1示出了根據(jù)本發(fā)明的一個實施方式的cpu核和線程設(shè)定的結(jié)構(gòu)示意圖。

如圖1所示,在存儲系統(tǒng)中的非聚合線程組包括多個第一線程,其中每個第一線程綁定一個獨立的cpu核。第一線程執(zhí)行io處理的同步階段,例如寫請求前端的處理和讀請求的處理。聚合線程組包括表多個第二線程,其中第二線程共享一組cpu核。第二線程和第一線程所使用的cpu核不重合。第二線程執(zhí)行io處理的異步階段,例如寫請求后端的處理。優(yōu)選地,為每個第一線程綁定一個獨立的cpu核,使得第一線程的任務(wù)執(zhí)行完成前,不會被搶占,從而減少因線程切換引入的開銷,并確保第一線程所執(zhí)行的io處理階段被快速完成。而第二線程在執(zhí)行過程中可被調(diào)度或搶占,從而提升第二線程所執(zhí)行的io處理階段被高效地完成,減少處理器等資源的浪費。

根據(jù)本發(fā)明的一個實施方式,對cpu核和線程設(shè)定的具體實現(xiàn)包括且不限于使用cgroup和/或taskset。使用cgroup將cpu核劃為第一組cpu核與第二組cpu核,其中第一組cpu核的每個專用于運行多個第一線程之一,第二組cpu核用于運行多個第二線程。第一組cpu核數(shù)與第一線程的線程數(shù)一致。第二線程的線程數(shù)通常大于第二組cpu核數(shù),第二線程之間允許被調(diào)度。

使用taskset為每個第一線程分配為其所獨占的cpu核,taskset可以細(xì)粒度的設(shè)置某個第一線程只能運行某一個cpu核上。一般的, 對cpu核和線程的設(shè)定通常在存儲系統(tǒng)初始化時實施,并且在運行過程中根據(jù)需求也可以動態(tài)的調(diào)整。

圖2a示出了根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)中的數(shù)據(jù)訪問方法的流程圖。

圖3示出了根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)中的數(shù)據(jù)訪問方法的示意圖。

如圖2a所示,存儲系統(tǒng)中的數(shù)據(jù)訪問方法包括:步驟s210:通過多個第一線程之一獲取寫請求并將數(shù)據(jù)寫到緩沖區(qū);步驟s220:通過第二線程將緩沖區(qū)中的數(shù)據(jù)寫到非易失存儲設(shè)備。

也參看圖3,在步驟s210中,從寫請求發(fā)出方獲取寫請求,寫請求發(fā)出方可以為網(wǎng)卡、fc(光纖通道)適配器、infiniband卡等。在圖3的實施例中寫請求發(fā)出方為網(wǎng)卡。獲取寫請求的方式包括且不限于使用輪詢和中斷。作為舉例,第一線程每次獲取1個寫請求。在另一個例子中第一線程獲取寫請求時,已經(jīng)存在若干個(例如2個或3個)寫請求,第一線程也一并獲取并處理這些寫請求??蛇x地,第一線程每次獲取并處理的寫請求數(shù)量是一個接近1的較小整數(shù)(例如2個、3個等),但第一線程的目標(biāo)是加快寫請求的處理速度,因而不希望為了一次處理多個寫請求而等待寫請求的到來。每個第一線程通過其獨占的cpu核運行,從而保證這些線程將不會因為被調(diào)度而影響延遲,使得運行效率得到提高。

繼續(xù)參看圖2a與圖3,在步驟s220中,第二線程執(zhí)行“將緩沖區(qū)中的數(shù)據(jù)寫入到非易失存儲設(shè)備”的操作。在圖3的實施例中,非易失存儲設(shè)備為盤設(shè)備,由第二線程將緩沖區(qū)中的數(shù)據(jù)寫到盤設(shè)備中。該操作包括且不局限于使用以下兩種方法:每個盤設(shè)備對應(yīng)一個第二線程,每個第二線程處理訪問相對應(yīng)的盤設(shè)備的寫請求,將數(shù)據(jù)寫到對應(yīng)的盤設(shè)備;若干個第二線程處理訪問任意盤設(shè)備的寫請求,將數(shù)據(jù)寫到這些盤設(shè)備中。盤設(shè)備包括且不局限于硬盤、固態(tài)硬盤(ssd)等。在進(jìn)一步的實施例中,第二線程將緩沖區(qū)中來自多個寫請求的數(shù)據(jù)聚合后,再寫入盤設(shè)備。在依然進(jìn)一步的實施例 中,將數(shù)據(jù)聚合后寫入磁盤之前可以對數(shù)據(jù)進(jìn)行額外的操作,包括且不局限于去重、壓縮等。

圖2b示出了根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)中的數(shù)據(jù)訪問方法的流程圖。

如圖2b所示,存儲系統(tǒng)中的數(shù)據(jù)訪問方法包括:步驟s210:通過多個第一線程之一獲取寫請求并將數(shù)據(jù)寫到緩沖區(qū);步驟s212:通過第一線程將寫請求的完成信息發(fā)送給寫請求發(fā)出方;步驟s220:通過第二線程將緩沖區(qū)中的數(shù)據(jù)寫到非易失存儲設(shè)備。

也參看圖3,在第一線程將寫請求的數(shù)據(jù)寫入到緩沖區(qū)后,將寫請求處理完成的消息發(fā)送給寫請求發(fā)出方(步驟s212)。寫請求發(fā)出方包括但不局限于網(wǎng)卡,例如還可以為fc(光纖通道)適配器、infiniband卡等。

所屬領(lǐng)域技術(shù)人員將意識到的,由第一線程執(zhí)行的步驟s212與由第二線程執(zhí)行的步驟s220之間沒有依賴性,可以同時發(fā)生。雖然在圖2b中,步驟s212發(fā)生在步驟s220之前,在多種實施方式中,步驟s220也可發(fā)生在步驟s212之前。

根據(jù)本發(fā)明的一個實施方式,實施過程中需要注意緩沖區(qū)的配置。選擇緩沖區(qū)的大小,使得磁盤寫帶寬波動時不影響用戶的寫iops。對于數(shù)據(jù)可靠性要求高的場景,需要保證緩沖區(qū)在斷電后能夠正?;謴?fù)。為實現(xiàn)這個目標(biāo)可以將緩沖區(qū)放在非易失介質(zhì)上,包括但不限于nvdimm(non-volatiledualin-linememorymodule)、nvram(non-volatileram)等。也可以由dram提供緩沖區(qū)。

繼續(xù)參看圖3,圖3中用數(shù)字展示了根據(jù)本發(fā)明實施例的寫請求處理的流程的各個階段。(1)網(wǎng)卡接收來自用戶或服務(wù)器的寫請求;(2)第一線程之一將網(wǎng)卡接收的寫請求寫入緩沖區(qū);(3)第一線程之一將寫請求完成的消息返回給網(wǎng)卡;(4)網(wǎng)卡將寫請求完成的消息返回給用戶或服務(wù)器。其中處理流程(2)階段與(3)階段的第一線程可以是相同的線程,也可以是不同的第一線程。由第二線程將緩沖區(qū)的數(shù)據(jù)寫入盤設(shè)備。(5)第二線程從緩沖區(qū)中取出數(shù)據(jù),并寫入 盤設(shè)備。對于同一個寫請求,其處理流程(5)階段與(3)可以同時進(jìn)行。而存儲系統(tǒng)中,第一線程將寫請求寫入緩沖區(qū)的操作與第二線程從緩沖區(qū)中取出數(shù)據(jù)并寫入盤設(shè)備的操作可以同時發(fā)生。在根據(jù)本發(fā)明的實施例中,多個第一線程并行地執(zhí)行寫請求處理流程的(2)階段與(3)階段,以及多個第二線程并行地執(zhí)行寫請求處理流程的(5)階段。

根據(jù)本發(fā)明的另一個方面,本發(fā)明還提供一種存儲系統(tǒng)中的數(shù)據(jù)訪問設(shè)備,其中存儲系統(tǒng)中包括第一組cpu核與第二組cpu核,其中第一組cpu核的每個專用于運行多個第一線程之一,第二組cpu核用于運行多個第二線程,如圖4所示,該設(shè)備包括:用于通過多個第一線程之一獲取寫請求并將數(shù)據(jù)寫到緩沖區(qū)的裝置410;用于通過第二線程將緩沖區(qū)中的數(shù)據(jù)寫到非易失存儲設(shè)備的裝置420。

圖5示出了根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)中的數(shù)據(jù)訪問方法的流程圖。

圖6示出了根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)中的數(shù)據(jù)訪問方法的示意圖。

如圖5所示,存儲系統(tǒng)中的數(shù)據(jù)訪問方法包括:步驟s510:通過多個第一線程之一獲取讀請求并將讀請求發(fā)送給存儲設(shè)備;步驟s520:響應(yīng)于存儲設(shè)備完成讀請求,通過多個第一線程之一將從存儲設(shè)備讀出的數(shù)據(jù)返回給讀請求發(fā)出方。

結(jié)合圖6,在步驟s510中,第一線程執(zhí)行從讀請求發(fā)出方獲取讀請求,并將讀請求發(fā)送給存儲設(shè)備的操作。讀請求發(fā)出方可以為網(wǎng)卡、fc(光纖通道)適配器、infiniband卡等,在圖6的實施例中,讀請求發(fā)出方為網(wǎng)卡。在圖6的實施例中,存儲設(shè)備為盤設(shè)備。盤設(shè)備包括且不局限于硬盤、固態(tài)硬盤(ssd)等。獲取讀請求的方法包括且不限于使用輪詢和中斷。第一線程每次獲取讀請求的數(shù)量可以是1,也可以是一個接近1的較小整數(shù)(例如2個、3個等)。需要理解的是,第一線程的目標(biāo)是加快讀請求的處理速度,因而不希望為了一次處理多個讀請求而等待讀請求的到來。

對盤設(shè)備的操作是異步的,第一線程之一先向盤設(shè)備發(fā)送讀請求,盤設(shè)備操作完成后第一線程之一會接收到通知。將讀請求發(fā)送給盤設(shè)備的操作由第一線程之一執(zhí)行。而從盤設(shè)備接收讀請求處理完成的通知以及獲取讀請求的處理結(jié)果,則為步驟s520,也由第一線程之一執(zhí)行。進(jìn)一步的實施例中,獲取讀請求,并將讀請求發(fā)送給盤設(shè)備的操作中可以附加額外的處理邏輯,包含且不局限于處理諸如讀請求命中緩存的情形。

結(jié)合圖6,在步驟s520中,第一線程執(zhí)行將從盤設(shè)備獲取到的數(shù)據(jù)返回給讀請求發(fā)出方的操作。讀請求發(fā)出方包括但不局限于網(wǎng)卡,例如還可以為fc(光纖通道)適配器、infiniband卡等。進(jìn)一步的實施例中,該操作中可以對數(shù)據(jù)進(jìn)行額外的處理,包括但不局限于解壓縮、解密等。該操作返回的數(shù)據(jù)量可以對應(yīng)一次讀請求,也可以對應(yīng)較小數(shù)量的多次讀請求。從盤設(shè)備獲取數(shù)據(jù)的機(jī)制包括且不限于中斷和輪詢。在步驟s520中獲取數(shù)據(jù)的線程和在步驟s510中發(fā)送讀請求線程可以相同,也可以不同。當(dāng)獲取數(shù)據(jù)的第一線程與發(fā)送讀請求的第一線程是同一線程時,在等待盤設(shè)備返回讀取結(jié)果期間可暫時使該第一線程讓出cpu核。

繼續(xù)參看圖6,圖6中用數(shù)字展示了根據(jù)本發(fā)明實施例的讀請求處理的流程的各個階段。(1)網(wǎng)卡接收來自用戶或服務(wù)器的讀請求;(2)第一線程之一基于網(wǎng)卡接收的讀請求向盤設(shè)備發(fā)送讀請求;(3)第一線程之一收到盤設(shè)備返回的讀請求處理結(jié)果并發(fā)送給網(wǎng)卡;(4)網(wǎng)卡將讀請求處理結(jié)果返回給用戶或服務(wù)器。其中處理流程(2)階段與(3)階段的第一線程可以是相同的線程,也可以是不同的第一線程。在根據(jù)本發(fā)明的實施例中,多個第一線程并行地執(zhí)行讀請求處理流程的(2)階段與(3)階段。

根據(jù)本發(fā)明的另一個方面,本發(fā)明還提供一種存儲系統(tǒng)中的數(shù)據(jù)訪問設(shè)備,其中存儲系統(tǒng)中包括第一組cpu核與第二組cpu核,其中第一組cpu核的每個專用于運行多個第一線程之一,第二組cpu核用于運行多個第二線程,如圖7所示,該設(shè)備包括:用于通過多 個第一線程之一獲取讀請求并將讀請求發(fā)送給存儲設(shè)備的裝置710;用于響應(yīng)于存儲設(shè)備完成讀請求,通過多個第一線程之一將從存儲設(shè)備讀出的數(shù)據(jù)返回給讀請求發(fā)出方的裝置720。

圖8示出了根據(jù)本發(fā)明的一個實施方式的存儲系統(tǒng)中的數(shù)據(jù)訪問方法的流程圖。

如圖8所示,存儲系統(tǒng)中的數(shù)據(jù)訪問方法包括以下步驟:步驟s810:通過多個第一線程之一獲取寫請求并將數(shù)據(jù)寫到緩沖區(qū);步驟s820:通過多個第二線程之一將緩沖區(qū)中的數(shù)據(jù)寫到非易失存儲設(shè)備;步驟s830:通過多個第一線程之一獲取讀請求并將讀請求發(fā)送給存儲設(shè)備;步驟s840:響應(yīng)于存儲設(shè)備完成讀請求,通過多個第一線程之一將從存儲設(shè)備讀出的數(shù)據(jù)返回給讀請求發(fā)出方。

根據(jù)本發(fā)明的另一個方面,本發(fā)明還提供一種存儲系統(tǒng)中的數(shù)據(jù)訪問設(shè)備,其中存儲系統(tǒng)中包括第一組cpu核與第二組cpu核,其中第一組cpu的每個專用于運行多個第一線程之一;第二組cpu核用于運行多個第二線程,如圖9所示,該設(shè)備包括:用于通過多個第一線程之一獲取寫請求并將數(shù)據(jù)寫到緩沖區(qū)的裝置910;用于通過多個第二線程之一將緩沖區(qū)中的數(shù)據(jù)寫到非易失存儲設(shè)備的裝置920;用于通過多個第一線程之一獲取讀請求并將讀請求發(fā)送給存儲設(shè)備的裝置930;用于響應(yīng)于存儲設(shè)備完成讀請求,通過多個第一線程之一將從存儲設(shè)備讀出的數(shù)據(jù)返回給讀請求發(fā)出方的裝置940。

根據(jù)本發(fā)明的另一個方面,本發(fā)明還提供一種包含計算機(jī)程序代碼的計算機(jī)程序,當(dāng)被載入計算機(jī)系統(tǒng)并在計算機(jī)系統(tǒng)上執(zhí)行時,所述計算機(jī)程序代碼使所述計算機(jī)系統(tǒng)執(zhí)行上面所述的方法。

根據(jù)本發(fā)明的另一個方面,還提供一種包括程序代碼的程序,當(dāng)被載入存儲設(shè)備并在存儲設(shè)備上執(zhí)行時,所述計程序代碼使所述存儲設(shè)備執(zhí)行上面所述的方法。

本發(fā)明能夠兼顧存儲系統(tǒng)的延遲,iops和帶寬,特別是對于新型的基于閃存的存儲系統(tǒng),本發(fā)明提出的架構(gòu)相對傳統(tǒng)io聚合方案在延遲和iops上有明顯的優(yōu)勢。本發(fā)明不僅適用于基于閃存的存儲系統(tǒng),同 樣適用于采用磁盤、xpoint、pcram、mram、rram、feram等存儲介質(zhì)的存儲系統(tǒng)。

應(yīng)該理解,框圖和流程圖的每個框以及框圖和流程圖的框的組合可以分別由包括計算機(jī)程序指令的各種裝置來實施。這些計算機(jī)程序指令可以加載到通用計算機(jī)、專用計算機(jī)或其他可編程數(shù)據(jù)控制設(shè)備上以產(chǎn)生機(jī)器,從而在計算機(jī)或其他可編程數(shù)據(jù)控制設(shè)備上執(zhí)行的指令創(chuàng)建了用于實現(xiàn)一個或多個流程圖框中指定的功能的裝置。

這些計算機(jī)程序指令還可以存儲在可以引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)控制設(shè)備的計算機(jī)可讀存儲器中從而以特定方式起作用,從而能夠利用存儲在計算機(jī)可讀存儲器中的指令來制造包括用于實現(xiàn)一個或多個流程圖框中所指定功能的計算機(jī)可讀指令的制品。計算機(jī)程序指令還可以加載到計算機(jī)或其他可編程數(shù)據(jù)控制設(shè)備上以使得在計算機(jī)或其他可編程數(shù)據(jù)控制設(shè)備上執(zhí)行一系列的操作步驟,從而產(chǎn)生計算機(jī)實現(xiàn)的過程,進(jìn)而在計算機(jī)或其他可編程數(shù)據(jù)控制設(shè)備上執(zhí)行的指令提供了用于實現(xiàn)一個或多個流程圖框中所指定功能的步驟。

因而,框圖和流程圖的框支持用于執(zhí)行指定功能的裝置的組合、用于執(zhí)行指定功能的步驟的組合和用于執(zhí)行指定功能的程序指令裝置的組合。還應(yīng)該理解,框圖和流程圖的每個框以及框圖和流程圖的框的組合可以由執(zhí)行指定功能或步驟的、基于硬件的專用計算機(jī)系統(tǒng)實現(xiàn),或由專用硬件和計算機(jī)指令的組合實現(xiàn)。

上述的不同塊、操作以及技術(shù)的至少一部分可以被執(zhí)行,通過使用硬件,控制設(shè)備執(zhí)行固件指令,控制設(shè)備執(zhí)行軟件指令,或者及其任意組合。當(dāng)采用執(zhí)行固件以及軟件指令的控制設(shè)備執(zhí)行時,軟件或固件指令可以被存儲在任意計算機(jī)可讀存儲介質(zhì)中,例如磁盤,光盤或者其他存儲介質(zhì),在ram或者rom或者flash存儲器,控制設(shè)備,硬盤,光盤,磁盤等等。同樣地,軟件和固件指令可以被傳輸?shù)接脩艋蛘呦到y(tǒng),通過任意已知的或者期望的傳輸方式包括,例如,在計算機(jī)可讀盤或者其他便攜式計算機(jī)存儲機(jī)制或者通過通信媒介。通信媒介典型地具體化計算機(jī)可讀指令,數(shù)據(jù)結(jié)構(gòu),序模塊或者在已調(diào)制數(shù)據(jù)信號中的其它數(shù)據(jù)例 如載波或者其他傳輸機(jī)制。通過示例,并非限制,通信介質(zhì)包括有線介質(zhì)例如有線網(wǎng)絡(luò)或者單線連接,以及無線媒介,例如聲、無線頻率,紅外以及其它無線介質(zhì)。從而,軟件和固件指令可以被傳輸給用戶或者系統(tǒng),通過通信信道,例如電話線,dsl線,電纜電視線,光纖線纜,無線信道,因特網(wǎng),等等(通過便攜式存儲介質(zhì)提供這樣的軟件,其被看作是相同的或者可互換的)。軟件或者固件指令可以包括機(jī)器可讀指令,這些可讀指令在由控制設(shè)備執(zhí)行時,導(dǎo)致控制設(shè)備執(zhí)行不同動作。

當(dāng)在硬件中執(zhí)行時,硬件可以包括一個或多個離散組件,集成電路,應(yīng)用的集成電路(asic),等等。

需要理解的是,本發(fā)明可以以純軟件、純硬件、固件以及上述的各種組合來實現(xiàn)。硬件例如可以是控制設(shè)備、專用集成電路、大規(guī)模集成電路等等。

雖然當(dāng)前發(fā)明參考的示例被描述,其只是為了解釋的目的而不是對本發(fā)明的限制,對實施方式的改變,增加和/或刪除可以被做出而不脫離本發(fā)明的范圍。

這些實施方式所涉及的、從上面描述和相關(guān)聯(lián)的附圖中呈現(xiàn)的教導(dǎo)獲益的領(lǐng)域中的技術(shù)人員將認(rèn)識到這里記載的本發(fā)明的很多修改和其他實施方式。因此,應(yīng)該理解,本發(fā)明不限于公開的具體實施方式,旨在將修改和其他實施方式包括在所附權(quán)利要求書的范圍內(nèi)。盡管在這里采用了特定的術(shù)語,但是僅在一般意義和描述意義上使用它們并且不是為了限制的目的而使用。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1