基于系統(tǒng)資源的i/o請求合并調(diào)度系統(tǒng)與方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機系統(tǒng)及存儲技術(shù),具體涉及一種基于系統(tǒng)資源的i/o請求合并調(diào)度系統(tǒng)與方法。
【背景技術(shù)】
[0002]在三網(wǎng)融合、云計算和物聯(lián)網(wǎng)等新興概念迅猛發(fā)展的背景下,隨著市場需求的不斷拉動,各種高速率、低延遲的網(wǎng)絡(luò)數(shù)據(jù)應(yīng)用持續(xù)增長。這些高速網(wǎng)絡(luò)數(shù)據(jù)應(yīng)用對存儲系統(tǒng)的性能提出了更高的要求,同時也為主機的系統(tǒng)資源管理帶來了更大的挑戰(zhàn)。
[0003]當前業(yè)界普遍采用Linux內(nèi)核自帶的1 Scheduler對I/O請求隊列進行調(diào)度。1Scheduler主要包括合并和排序兩方面功能。合并是指將兩個或多個LBA地址相同或相鄰扇區(qū)請求結(jié)合成一個新的請求,這樣只需要一次尋道即可,這顯然減少了系統(tǒng)開銷和磁盤尋址次數(shù);排序是指把I/O請求按照LBA地址增長的方向排列,從而減少磁盤機械臂的轉(zhuǎn)動,縮短請求的實際尋道時間。為了權(quán)衡I/O性能和公平性,在Linux2.6內(nèi)核中,實現(xiàn)了四種I/O調(diào)度方式:NOOP、Deadline、Anticipatory和CFQ。每種方式的側(cè)重點和實現(xiàn)方式不同,但在基本的合并操作方面,這四種調(diào)度方式基本相同。
[0004]上述現(xiàn)有技術(shù)的四種調(diào)度方式中的合并操作沒有對LBA地址不連續(xù)的請求進行合并,同時也沒有兼顧系統(tǒng)的資源利用情況。這會影響存儲I/o性能的進一步提升。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于克服現(xiàn)有技術(shù)中的I/O請求調(diào)度方式中的合并操作無法對LBA地址不連續(xù)的請求進行合并的缺陷,從而提供一種既能對地址連續(xù)的I/O請求進行合并調(diào)度,又能對地址非連續(xù)的I/o請求進行合并調(diào)度的系統(tǒng)與方法。
[0006]為了實現(xiàn)上述目的,本發(fā)明提供了一種基于系統(tǒng)資源的I/O請求合并調(diào)度系統(tǒng),位于文件系統(tǒng)101與存儲設(shè)備106之間,包括系統(tǒng)監(jiān)控模塊103、調(diào)度管理模塊104和請求調(diào)度模塊105 ;其中,所述系統(tǒng)監(jiān)控模塊103實時地收集計算機的系統(tǒng)參數(shù),并將所收集到的系統(tǒng)參數(shù)發(fā)送調(diào)度管理模塊104 ;所述調(diào)度管理模塊104根據(jù)所述系統(tǒng)參數(shù)評估計算機的資源利用情況,根據(jù)評估結(jié)果設(shè)置合并距離和最大合并數(shù);所述請求調(diào)度模塊105根據(jù)所述合并距離和最大合并數(shù)對I/O請求進行合并調(diào)度,以及拆分所述存儲系統(tǒng)對合并后I/O請求的響應(yīng),所述I/O請求包括LBA地址不連續(xù)I/O請求與LBA地址連續(xù)I/O請求。
[0007]上述技術(shù)方案中,所述系統(tǒng)監(jiān)控模塊103實時采集的系統(tǒng)參數(shù)包括CPU利用率、內(nèi)存占用率、I/O吞吐率、請求的訪問時間。
[0008]上述技術(shù)方案中,所述調(diào)度管理模塊104在評估計算機的資源利用情況時,將系統(tǒng)監(jiān)控模塊103所采集的系統(tǒng)參數(shù)與計算機所配置的資源情況進行比較,由此得到當前的計算機資源利用情況;當計算機系統(tǒng)資源充足時,所述調(diào)度管理模塊104在設(shè)置合并距離與最大合并數(shù)時相應(yīng)地增大合并距離和最大合并數(shù),當計算機系統(tǒng)資源緊張時,所述調(diào)度管理模塊104在設(shè)置合并距離與最大合并數(shù)時相應(yīng)地減小合并距離和最大合并數(shù)。
[0009]上述技術(shù)方案中,所述請求調(diào)度模塊105在處理LBA地址不連續(xù)I/O請求時,可先計算這些請求間的LBA地址間隔,對LBA地址間隔小于合并距離、數(shù)目不超過最大合并數(shù)的若干LBA地址不連續(xù)I/O請求進行合并調(diào)度;對實現(xiàn)了合并調(diào)度的LBA地址不連續(xù)I/O請求加以記錄,當存儲系統(tǒng)對這些合并后的I/O請求予以響應(yīng)時,請求調(diào)度模塊105可根據(jù)記錄中的信息對響應(yīng)進行拆分處理。
[0010]本發(fā)明還提供了基于所述的基于系統(tǒng)資源的I/O請求合并調(diào)度系統(tǒng)所實現(xiàn)的合并調(diào)度方法,包括:
[0011]步驟I)、初始化階段;用戶對系統(tǒng)監(jiān)控模塊103、調(diào)度管理模塊104和請求調(diào)度模塊105進行一系列的參數(shù)配置,包括系統(tǒng)監(jiān)控周期、I/O響應(yīng)時間上限、默認合并距離和合并數(shù)目;
[0012]步驟2)、系統(tǒng)監(jiān)控模塊103實時采集計算機的系統(tǒng)參數(shù),所述系統(tǒng)參數(shù)包括CPU利用率、內(nèi)存占用率、I/o吞吐率、請求的訪問時間;
[0013]步驟3)、調(diào)度管理模塊104根據(jù)系統(tǒng)監(jiān)控模塊103實時收集到的系統(tǒng)參數(shù)評估計算機系統(tǒng)當前的資源利用情況,并根據(jù)評估結(jié)果設(shè)置合并距離和最大合并數(shù);
[0014]步驟4)、當上層文件系統(tǒng)的I/O請求隊列中存在I/O請求時,請求調(diào)度模塊105根據(jù)合并距離和最大合并數(shù)對I/O請求進行合并調(diào)度;
[0015]步驟5)、當處理完I/O請求隊列中一定數(shù)目的請求后,回到步驟2),重新評估系統(tǒng)資源利用情況,并設(shè)置新的合并距離和最大合并數(shù),繼續(xù)調(diào)度I/o請求。
[0016]上述技術(shù)方案中,所述的步驟4)包括:
[0017]步驟4-1)、請求調(diào)度模塊105檢查上層的文件系統(tǒng)的I/O請求隊列中是否存在I/O請求,若存在,執(zhí)行下一步,否則重新執(zhí)行步驟2);
[0018]步驟4-2)、請求調(diào)度模塊105根據(jù)所述I/O請求隊列中位置相鄰I/O請求的LBA地址和請求長度,計算隊列中所有相鄰請求之間的間隔距離;
[0019]步驟4-3)、判斷步驟4-2)中計算得到的位置相鄰I/O請求間的間隔距離是否小于步驟3)中所設(shè)置的合并距離,若小于,執(zhí)行下一步,否則,重新執(zhí)行步驟4-1);
[0020]步驟4-4)、合并間隔距離小于合并距離的I/O請求,并將原請求從請求隊列中刪除;
[0021]步驟4-5)、檢查當前合并的I/O請求的數(shù)目是否超過步驟3)中所設(shè)置的最大合并數(shù),若是,執(zhí)行下一步,否則,執(zhí)行步驟4-7);
[0022]步驟4-6)、只合并最大合并數(shù)的I/O請求,然后執(zhí)行下一步;
[0023]步驟4-7)、將合并后的I/O請求發(fā)送到下層的存儲系統(tǒng);
[0024]步驟4-8)、記錄進行合并的I/O請求;
[0025]步驟4-9)、判斷請求調(diào)度模塊105是否收到了存儲設(shè)備所返回的響應(yīng),若收到,執(zhí)行下一步,否則,重新執(zhí)行步驟2);
[0026]步驟4-10)、請求調(diào)度模塊105將存儲設(shè)備所返回的響應(yīng)與步驟4-8)所得到的記錄進行比較,如果該響應(yīng)所對應(yīng)的請求是合并后I/o請求,執(zhí)行下一步,否則,執(zhí)行步驟4-12);
[0027]步驟4-11)、請求調(diào)度模塊105根據(jù)記錄中的信息對響應(yīng)進行拆分處理;
[0028]步驟4-12)、將響應(yīng)提交給上層的文件系統(tǒng)。
[0029]本發(fā)明的優(yōu)點在于:
[0030]本發(fā)明通過評估系統(tǒng)資源利用情況,對若干連續(xù)或不連續(xù)的I/O請求進行動態(tài)地合并調(diào)度,提高了存儲的I/o性能,優(yōu)化利用了系統(tǒng)資源。
【附圖說明】
[0031]圖1是本發(fā)明的I/O請求合并調(diào)度系統(tǒng)的結(jié)構(gòu)示意圖;
[0032]圖2是本發(fā)明的I/O請求合并調(diào)度方法的流程圖。
[0033]圖面說明
[0034]101文件系統(tǒng)102 I/O請求合并調(diào)度系統(tǒng)
[0035]103系統(tǒng)監(jiān)控模塊 104調(diào)度管理模塊
[0036]105請求調(diào)度模塊 106存儲設(shè)備
【具體實施方式】
[0037]現(xiàn)結(jié)合附圖對本發(fā)明作進一步的描述。
[0038]圖1為本發(fā)明的I/O請求合并調(diào)度系統(tǒng)的結(jié)構(gòu)示意圖,如圖所示,該系統(tǒng)(在圖1中用102表示)位于文件系統(tǒng)101與存儲設(shè)備106之間,其包括系統(tǒng)監(jiān)控模塊103、調(diào)度管理模塊104和請求調(diào)度模塊105 ;其中,所述系統(tǒng)監(jiān)控模塊103實時地收集計算機的系統(tǒng)參數(shù),并將所收集到的系統(tǒng)參數(shù)發(fā)送調(diào)度管理模塊104 ;所述調(diào)度管理模塊104根據(jù)所述系統(tǒng)參數(shù)評估計算機的資源利用情況,根據(jù)評估結(jié)果設(shè)置合并距離和最大合并數(shù);所述請求調(diào)度模塊105根據(jù)合并距離和最大合并數(shù)對LBA地址不連續(xù)I/O請求(也可簡稱為不連續(xù)I/O請求)進行合并調(diào)度,以及拆分所述存儲系統(tǒng)對合并后I/o請求的響應(yīng)。
[0039]下面對系統(tǒng)中的各個模塊做進一步的說明。
[0040]所述系統(tǒng)監(jiān)控模塊103實時采集的系統(tǒng)參數(shù)包括CPU利用率、內(nèi)存占用率、I/O吞吐率、請求的訪問時間等。
[0041]所述調(diào)度管理模塊104在評估計算機的資源利用情況時,將系統(tǒng)監(jiān)控模塊103所采集的系統(tǒng)參數(shù)與計算機所配置的資源情況進行比較,由此得到當前的計算機資源利用情況,如計算機資源充足或緊張。當系統(tǒng)資源充足時,該模塊在設(shè)置合并距離與最大合并數(shù)時可相應(yīng)地增大合并距離和最大合并數(shù);當系統(tǒng)資源緊張時,該模塊在設(shè)置合并距離與最大合并數(shù)時可相應(yīng)地減小合并距離和最大合并數(shù)。
[0042]所述請求調(diào)度模塊105在處理LBA地址不連續(xù)I/O請求時,可先計算這些請求間的LBA地址間隔,對LBA地址間隔小于合并距離、數(shù)目不超過最大合并數(shù)的若干LBA地址不連續(xù)I/O請求進行合并調(diào)度;對實現(xiàn)了