I/o請求的處理方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明實施例涉及通信技術(shù),尤其涉及一種輸入/輸出(Input/Output,簡稱I/O)請求的處理方法和裝置。
【背景技術(shù)】
[0002]全閃存陣列要求在一定的I/O壓力下,提供穩(wěn)定的時延,除了傳統(tǒng)的基于并發(fā)的資源預(yù)留和流控策略,系統(tǒng)在設(shè)計上也要求規(guī)避各類干擾源引入的時延抖動,以改善時延的穩(wěn)定性。
[0003]現(xiàn)有技術(shù)中,所有中斷分配在各個中央處理單元(Central Processing Unit,簡稱CPU)核上執(zhí)行,會由于中斷I/O的隨機性和突發(fā)性而打斷正在當(dāng)前核上處理的業(yè)務(wù)I/O的執(zhí)行,造成業(yè)務(wù)I/O瞬時時延變大,影響業(yè)務(wù)I/O的時延穩(wěn)定性能。當(dāng)各個核上的I/O對同一個共享資源進(jìn)行訪問時,會產(chǎn)生訪問沖突,其他CPU核需要等待在前的CPU核訪問完成才能進(jìn)行訪問,導(dǎo)致業(yè)務(wù)I/o的時延增大,CPU緩存命中率也會降低。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實施例提供一種I/O請求的處理方法和裝置,減少各個CPU核上的I/0對同一個邏輯單元號(Logical Unit Number,簡稱LUN)上的共享資源爭用時的沖突,提升CPU緩存命中率和系統(tǒng)整體性能。
[0005]本發(fā)明第一方面提供一種1/0請求的處理方法,該1/0請求的處理方法包括:首先對系統(tǒng)中的N個CPU核進(jìn)行劃分,將M個CPU核劃分到中斷處理組,將N-M個CPU核劃分到業(yè)務(wù)處理組,中斷處理組中的CPU核用于處理中斷1/0,業(yè)務(wù)處理組中的CPU核用于處理業(yè)務(wù)1/0,通過讓中斷固化在部分CPU核上處理,與處理業(yè)務(wù)1/0的CPU核分開,可以避免由于中斷的突然到來導(dǎo)致業(yè)務(wù)I/o瞬時時延突然變大的問題,提升了系統(tǒng)的時延穩(wěn)定性。進(jìn)一步的根據(jù)系統(tǒng)中的LUN個數(shù)和業(yè)務(wù)處理組中的CPU核的個數(shù),對業(yè)務(wù)處理組中的CPU核進(jìn)行分組,分組后每個CPU分組包含至少一個CPU核,并建立LUN與CPU分組的映射關(guān)系。后續(xù)當(dāng)接收到應(yīng)用發(fā)送的業(yè)務(wù)I/0請求時,根據(jù)業(yè)務(wù)I/0請求中包括的訪問地址確定業(yè)務(wù)I/0請求要訪問的目標(biāo)LUN,根據(jù)目標(biāo)LUN以及LUN與CPU分組的映射關(guān)系,確定執(zhí)行業(yè)務(wù)1/0請求的目標(biāo)CPU分組,將業(yè)務(wù)1/0請求發(fā)送給目標(biāo)CHJ分組執(zhí)行。通過對業(yè)務(wù)處理組中的CPU核進(jìn)行分組,使得每個CPU組處理固定的LUN上的I /0請求,減少各個CPU核上的I /0對同一個LUN上的共享資源爭用時的沖突,提升CHJ緩存命中率和系統(tǒng)整體性能。
[0006]在本發(fā)明第一方面的一種可能的實現(xiàn)方式,通過如下方式對業(yè)務(wù)處理組中的CPU核進(jìn)行分組:首先確定CPU分組個數(shù),為所述業(yè)務(wù)處理組中的CPU分組分配分組標(biāo)識,然后將所述業(yè)務(wù)處理組中的CPU核分配給所述業(yè)務(wù)處理組中的CPU分組,將所述系統(tǒng)中的LUN平均分配給所述業(yè)務(wù)處理組中的每個CPU分組。其中,在確定CPU分組個數(shù)時,通過比較系統(tǒng)中的LUN個數(shù)和業(yè)務(wù)處理組中的CPU核的個數(shù),當(dāng)所述系統(tǒng)中的LUN個數(shù)小于所述業(yè)務(wù)處理組中的CPU核的個數(shù)時,確定CPU分組個數(shù)為所述系統(tǒng)中的LUN個數(shù)。相應(yīng)的,記錄所述業(yè)務(wù)處理組中的每個CPU分組的分組標(biāo)識和LUN的標(biāo)識的對應(yīng)關(guān)系。
[0007]在本發(fā)明第一方面的另一種可能的實現(xiàn)方式,通過如下方式對業(yè)務(wù)處理組中的CPU核進(jìn)行分組:首先確定CPU分組個數(shù),為所述業(yè)務(wù)處理組中的CPU分組分配分組標(biāo)識,然后,將所述業(yè)務(wù)處理組中的CPU核平均分配給所述業(yè)務(wù)處理組中的每個CPU分組,將所述系統(tǒng)中的LUN分配給所述業(yè)務(wù)處理組中的每個CPU分組。其中,在確定CPU分組個數(shù)時,通過比較系統(tǒng)中的LUN個數(shù)和業(yè)務(wù)處理組中的CPU核的個數(shù),當(dāng)所述系統(tǒng)中的LUN個數(shù)大于所述業(yè)務(wù)處理組中的CPU核的個數(shù)時,確定CPU分組個數(shù)為所述業(yè)務(wù)處理組中的CPU核的個數(shù)。相應(yīng)的,記錄所述業(yè)務(wù)處理組中的每個CPU分組的分組標(biāo)識和LUN的標(biāo)識的對應(yīng)關(guān)系。
[0008]在本發(fā)明第一方面的一種可能的實現(xiàn)方式,所述方法還包括:根據(jù)中斷的屬性對所述中斷處理組中的CHJ核進(jìn)行分組,所述中斷處理組中的每個CPU分組用于對一種中斷進(jìn)行處理。
[0009]在本發(fā)明第一方面的一種可能的實現(xiàn)方式,還可以對所述系統(tǒng)中的CPU分組包括的CPU核個數(shù)進(jìn)行調(diào)整,具體的:統(tǒng)計所述業(yè)務(wù)處理組中的每個CPU分組的CPU利用率以及所述中斷處理組中的每個CPU分組的CPU利用率,然后根據(jù)所述系統(tǒng)中的CPU分組的CPU利用率,對所述系統(tǒng)中的CHJ分組包括的CPU核個數(shù)進(jìn)行調(diào)整,所述系統(tǒng)中的CPU分組包括所述業(yè)務(wù)處理組中的CPU分組和所述中斷處理組中的CPU分組,相應(yīng)的更新所述LUN與CPU分組的映射關(guān)系。
[0010]在本發(fā)明第一方面的一種可能的實現(xiàn)方式,可通過如下方式對CPU分組包括的CPU核個數(shù)進(jìn)行調(diào)整:首先判斷所述系統(tǒng)中的CHJ分組的CPU利用率是否滿足條件一和條件一中的任意一個,其中,所述條件一為:所述系統(tǒng)中的每個CPU分組的CPU利用率均大于第一閾值,所述條件二為:所述系統(tǒng)中的每個(PU分組的CPU利用率均小于第二閾值,所述第二閾值小于所述第一閾值。
[0011]如果所述系統(tǒng)中的CPU分組的CPU利用率滿足所述條件一和所述條件二中的任意一個,則不對所述系統(tǒng)中的CPU分組包括的CPU核個數(shù)進(jìn)行調(diào)整,如果所述系統(tǒng)中的CPU分組的CPU利用率不滿足所述條件一和所述條件二中的任意一個,則進(jìn)一步判斷所述系統(tǒng)的CPU分組中CPU利用率最大的CPU分組和CPU利用率最小的CPU分組的CPU利用率的差值是否大于第三閾值。如果所述CPU利用率的差值大于所述第三閾值,則確定對所述業(yè)務(wù)處理組中的CPU分組包括的CPU核個數(shù)進(jìn)行調(diào)整,將所述CPU利用率最小的CPU分組中的一個CPU核分配給所述(PU利用率最大的CPU分組,如果所述CPU利用率的差值不大于所述第三閾值,則確定不對所述業(yè)務(wù)處理組中的CPU分組包括的CPU核個數(shù)進(jìn)行調(diào)整。其中,所述第三閾值大于所述第二閾值,且小于所述第一閾值。
[0012]在本發(fā)明第一方面的一種可能的實現(xiàn)方式,所述更新所述LUN與CPU分組的映射關(guān)系,具體為:判斷所述CR]利用率最小的CPU分組中CPU核的個數(shù)是否為零,如果所述CPU利用率最小的CPU分組中CPU核的個數(shù)為零,則刪除所述CPU利用率最小的CPU分組,并更新所述CPU利用率最大的CPU分組和LUN的對應(yīng)關(guān)系,如果所述CPU利用率最小的CPU分組中CPU核的個數(shù)不為零,則分別更新所述CPU利用率最大的CPU分組和LUN的對應(yīng)關(guān)系,以及所述CPU利用率最小的CPU分組和LUN的對應(yīng)關(guān)系。
[0013]本發(fā)明第二方面提供一種I/O請求的處理裝置,所述I/O請求的處理裝置包括:第一分組模塊、第二分組模塊、建立模塊、第一確定模塊、第二確定模塊和發(fā)送模塊。第一分組模塊用于對系統(tǒng)中的N個CPU核進(jìn)行劃分,將M個CPU核劃分到中斷處理組,將N-M個CPU核劃分到業(yè)務(wù)處理組,所述中斷處理組中的CPU核用于處理中斷I /0,所述業(yè)務(wù)處理組中的CPU核用于處理業(yè)務(wù)I/O,其中,M和N均為大于正整數(shù),且M小于N;第二分組模塊用于根據(jù)所述系統(tǒng)中的LUN個數(shù)和所述業(yè)務(wù)處理組中的CPU核的個數(shù),對所述業(yè)務(wù)處理組中的CPU核進(jìn)行分組,每個CPU分組包含至少一個CPU核;建立模塊用于建立LUN與CPU分組的映射關(guān)系;第一確定模塊用于當(dāng)接收到應(yīng)用發(fā)送的業(yè)務(wù)I/O請求時,根據(jù)所述業(yè)務(wù)I/O請求中包括的訪問地址確定所述業(yè)務(wù)I/O請求要訪問的目標(biāo)LUN;第二確定模塊用于根據(jù)所述目標(biāo)LUN以及LUN與CPU分組的映射關(guān)系,確定執(zhí)行所述業(yè)務(wù)I/O請求的目標(biāo)CPU分組;發(fā)送模塊用于將所述業(yè)務(wù)I/O請求發(fā)送給所述目標(biāo)CPU分組執(zhí)行。
[0014]在本發(fā)明第二方面的一種可能的實現(xiàn)方式,所述第二分組模塊具體用于:當(dāng)所述系統(tǒng)中的LUN個數(shù)小于所述業(yè)務(wù)處理組中的CPU核的個數(shù)時,確定CPU分組個數(shù)為所述系統(tǒng)中的LUN個數(shù),為所述業(yè)務(wù)處理組中的CPU分組分配分組標(biāo)識,然后將所述業(yè)務(wù)處理組中的CPU核分配給所述業(yè)務(wù)處理組中的CPU分組,將所述系統(tǒng)中的LUN平均分配給所述業(yè)務(wù)處理組中的每個CPU分組。所述建立模塊具體用于:記錄所述業(yè)務(wù)處理組中的每個CPU分組的分組標(biāo)識和LUN的標(biāo)識的對應(yīng)關(guān)系。
[0015]在本發(fā)明第二方面的另一種可能的實現(xiàn)方式,所述第二分組模塊具體用于:當(dāng)所述系統(tǒng)中的LUN個數(shù)大于所述業(yè)務(wù)處理組中的CPU核的個數(shù)時,確定CPU分組個數(shù)為所述業(yè)務(wù)處理組中的CPU核的個數(shù),為所述業(yè)務(wù)處理組中的CPU分組分配分組標(biāo)識,然后將所述業(yè)務(wù)處理組中的CPU核平均分配給所述業(yè)務(wù)處理組中的每個CPU分組,將所述系統(tǒng)中的LUN分配給所述業(yè)務(wù)處理組中的每個(PU分組。所述建立模塊具體用于:記錄所述業(yè)務(wù)處理組中的每個CPU分組的分組標(biāo)識和LUN的標(biāo)識的對應(yīng)關(guān)系。
[0016]在本發(fā)明第二方面的一種可能的實現(xiàn)方式,所述I/O請求的處理裝置還包括:第三分組模塊,第三分組模塊用于根據(jù)中斷的屬性對所述中斷處理組中的CPU核進(jìn)行分組,所述中斷處理組中的每個CPU分組用于對一種中斷進(jìn)行處理。
[0017]在本發(fā)明第二方面的一種可能的實現(xiàn)方式,所述I/O請求的處理裝置還包括:統(tǒng)計模塊、調(diào)整模