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