一種多路徑的數(shù)據(jù)調(diào)度方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,特別涉及一種多路徑的數(shù)據(jù)調(diào)度方法及裝置。
【背景技術(shù)】
[0002]MP1(MultiPath 1/0,多路徑管理)是通過一條及以上的物理鏈路來訪問網(wǎng)絡(luò)存儲設(shè)備,并且可以使用容錯、流量負(fù)載平衡以及細(xì)粒度的I/o調(diào)度策略等方式,為網(wǎng)絡(luò)存儲應(yīng)用提供更高的可用性和性能優(yōu)勢。
[0003]目前,在進(jìn)行數(shù)據(jù)傳輸時,可以采用如下方式實現(xiàn)多路徑的數(shù)據(jù)調(diào)度:采用輪詢的方式,依次將接收到的數(shù)據(jù)包分別發(fā)送給各個路徑,以使每一條路徑傳輸為其分配的數(shù)據(jù)包。
[0004]然而,在實際應(yīng)用中,對于不同的網(wǎng)絡(luò)路徑,具有不同的帶寬和傳輸特性,若調(diào)度的網(wǎng)絡(luò)路徑中存在傳輸質(zhì)量較差的路徑,在該路徑上的數(shù)據(jù)傳輸容易引起數(shù)據(jù)包的超時、錯誤、丟包、重傳等問題,從而影響整體傳輸性能。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供一種多路徑的數(shù)據(jù)調(diào)度方法及裝置,以解決現(xiàn)有技術(shù)中的數(shù)據(jù)調(diào)度方式影響整體傳輸性能的問題。
[0006]本發(fā)明實施例提供了一種多路徑的數(shù)據(jù)調(diào)度方法,包括:
[0007]S1:確定發(fā)送端與接收端之間所包括的至少兩條路徑;
[0008]S2:判斷是否存在一條路徑上的I/O量與另一條路徑上的I/O量的差值不小于所有路徑的平均I/O量;若存在,則執(zhí)行S3,否則執(zhí)行S4 ;
[0009]S3:將數(shù)據(jù)調(diào)度給I/O量最小的路徑;
[0010]S4:將數(shù)據(jù)輪詢調(diào)度給各條路徑。
[0011 ] 優(yōu)選地,所述S2,包括:
[0012]判斷是否存在一條路徑上的I/O深度與另一條路徑上的I/O深度的差值不小于所有路徑的平均I/o深度的第一判斷結(jié)果,以及,判斷是否存在一條路徑上的I/O任務(wù)量與另一條路徑上的I/o任務(wù)量的差值不小于所有路徑的平均I/O任務(wù)量的第二判斷結(jié)果;
[0013]在所述第一判斷結(jié)果和所述第二判斷結(jié)果均包括不存在時,則執(zhí)行S4 ;
[0014]在所述第一判斷結(jié)果和/或所述第二判斷結(jié)果中包括存在時,則執(zhí)行S3。
[0015]優(yōu)選地,進(jìn)一步包括:
[0016]建立用于實時遍歷物理盤狀態(tài)以及用于數(shù)據(jù)調(diào)度的獨立線程,并根據(jù)實時遍歷物理盤狀態(tài)的時間間隔,并設(shè)定所述獨立線程更新數(shù)據(jù)調(diào)度方式的時間閾值。
[0017]優(yōu)選地,在S2之前,進(jìn)一步包括:
[0018]系統(tǒng)初始化,采用數(shù)據(jù)輪詢調(diào)度給各條路徑的方式進(jìn)行數(shù)據(jù)調(diào)度,并利用Start_Routine啟動所述獨立線程,在所述獨立線程啟動時開始啟動定時器進(jìn)行計時,每當(dāng)所述定時器達(dá)到所述時間閾值時,更新數(shù)據(jù)調(diào)度方式。
[0019]優(yōu)選地,所述設(shè)定所述獨立線程的時間閾值包括60秒。
[0020]本發(fā)明實施例提供了一種多路徑的數(shù)據(jù)調(diào)度裝置,包括:
[0021]確定單元,用于確定發(fā)送端與接收端之間所包括的至少兩條路徑;
[0022]判斷單元,用于判斷是否存在一條路徑上的I/O量與另一條路徑上的I/O量的差值不小于所有路徑的平均I/O量;若存在,則觸發(fā)數(shù)據(jù)調(diào)度單元執(zhí)行相應(yīng)操作,否則觸發(fā)輪詢調(diào)度單元執(zhí)行相應(yīng)操作;
[0023]所述數(shù)據(jù)調(diào)度單元,用于將數(shù)據(jù)調(diào)度給I/O量最小的路徑;
[0024]所述輪詢調(diào)度單元,用于將數(shù)據(jù)輪詢調(diào)度給各條路徑。
[0025]優(yōu)選地,所述判斷單元,用于判斷是否存在一條路徑上的I/O深度與另一條路徑上的I/O深度的差值不小于所有路徑的平均I/O深度的第一判斷結(jié)果,以及,判斷是否存在一條路徑上的I/O任務(wù)量與另一條路徑上的I/O任務(wù)量的差值不小于所有路徑的平均I/O任務(wù)量的第二判斷結(jié)果;在所述第一判斷結(jié)果和所述第二判斷結(jié)果均包括不存在時,則觸發(fā)所述數(shù)據(jù)調(diào)度單元執(zhí)行相應(yīng)操作;在所述第一判斷結(jié)果和/或所述第二判斷結(jié)果中包括存在時,則觸發(fā)所述輪詢調(diào)度單元執(zhí)行相應(yīng)操作。
[0026]優(yōu)選地,進(jìn)一步包括:
[0027]預(yù)處理單元,用于建立用于實時遍歷物理盤狀態(tài)以及用于數(shù)據(jù)調(diào)度的獨立線程,并根據(jù)實時遍歷物理盤狀態(tài)的時間間隔,并設(shè)定所述獨立線程更新數(shù)據(jù)調(diào)度方式的時間閾值。
[0028]優(yōu)選地,進(jìn)一步包括:
[0029]初始處理單元,用于執(zhí)行系統(tǒng)初始化,采用數(shù)據(jù)輪詢調(diào)度給各條路徑的方式進(jìn)行數(shù)據(jù)調(diào)度,并利用Start_Routine啟動所述獨立線程,在所述獨立線程啟動時開始啟動定時器進(jìn)行計時,每當(dāng)所述定時器達(dá)到所述時間閾值時,更新數(shù)據(jù)調(diào)度方式。
[0030]優(yōu)選地,所述預(yù)處理單元,用于設(shè)定所述獨立線程的時間閾值包括60秒。
[0031]本發(fā)明實施例提供了一種多路徑的數(shù)據(jù)調(diào)度方法及裝置,通過在判斷存在一條路徑上的I/O量與另一條路徑上的I/O量的差值不小于所有路徑的平均I/O量時,表明在某些路徑上的I/O量相差較大,因此可以采用將數(shù)據(jù)調(diào)度給I/O量最小的路徑的方式進(jìn)行數(shù)據(jù)調(diào)度,以提高數(shù)據(jù)調(diào)度整體的傳輸性能,若不存在一條路徑上的I/o量與另一條路徑上的I/o量的差值不小于所有路徑的平均I/O量,則表明路徑上的I/O量相差不大,可以采用將數(shù)據(jù)輪詢調(diào)度給各條路徑的方式進(jìn)行數(shù)據(jù)調(diào)度,從而可以節(jié)省數(shù)據(jù)調(diào)度資源。
【附圖說明】
[0032]圖1是本發(fā)明實施例提供的方法流程圖;
[0033]圖2是本發(fā)明另一實施例提供的方法流程圖;
[0034]圖3是本發(fā)明實施例提供的MP1框架架構(gòu)圖;
[0035]圖4是本發(fā)明實施例提供的裝置所在設(shè)備的硬件架構(gòu)圖;
[0036]圖5是本發(fā)明實施例提供的裝置結(jié)構(gòu)示意圖;
[0037]圖6是本發(fā)明另一實施例提供的裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0038]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實施例僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0039]如圖1所示,本發(fā)明實施例提供了一種多路徑的數(shù)據(jù)調(diào)度方法,該方法可以包括以下步驟:
[0040]步驟101:確定發(fā)送端與接收端之間所包括的至少兩條路徑。
[0041]步驟102:判斷是否存在一條路徑上的I/O量與另一條路徑上的I/O量的差值不小于所有路徑的平均I/O量;若存在,則執(zhí)行步驟103,否則執(zhí)行步驟104。
[0042]步驟103:將數(shù)據(jù)調(diào)度給I/O量最小的路徑。
[0043]步驟104:將數(shù)據(jù)輪詢調(diào)度給各條路徑。
[0044]根據(jù)上述方案,通過在判斷存在一條路徑上的I/O量與另一條路徑上的I/O量的差值不小于所有路徑的平均I/O量時,表明在某些路徑上的I/O量相差較大,因此可以采用將數(shù)據(jù)調(diào)度給I/O量最小的路徑的方式進(jìn)行數(shù)據(jù)調(diào)度,以提高數(shù)據(jù)調(diào)度整體的傳輸性能,若不存在一條路徑上的I/O量與另一條路徑上的I/O量的差值不小于所有路徑的平均I/O量,則表明路徑上的I/O量相差不大,可以采用將數(shù)據(jù)輪詢調(diào)度給各條路徑的方式進(jìn)行數(shù)據(jù)調(diào)度,從而可以節(jié)省數(shù)據(jù)調(diào)度資源。
[0045]由于在數(shù)據(jù)調(diào)度過程中,為了降低資源消耗,可以建立用于實時遍歷物理盤狀態(tài)以及用于數(shù)據(jù)調(diào)度的獨立線程,并根據(jù)實時遍歷物理盤狀態(tài)的時間間隔,并設(shè)定所述獨立線程的時間閾值。
[0046]為保證數(shù)據(jù)調(diào)度過程中的整體傳輸性能,可以在獨立線程啟動時開始啟動定時器進(jìn)行計時,每當(dāng)所述定時器達(dá)到所述時間閾值時,更新數(shù)據(jù)調(diào)度方式,從而在數(shù)據(jù)調(diào)度過程中能夠每隔一段時間檢測當(dāng)前是否存在一條路徑上的I/O量與另一條路徑上的I/O量的差值不小于所有路徑的平均I/O量,來更新數(shù)據(jù)調(diào)度方式。
[0047]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖及具體實施例對本發(fā)明作進(jìn)一步地詳細(xì)描述。
[0048]如圖2所示,本發(fā)明實施例提供了一種多路徑的數(shù)據(jù)調(diào)度方法,該方法可以包括以下步驟:
[0049]步驟201:系統(tǒng)初始化DSM上下文結(jié)構(gòu)體,初始化后采用默認(rèn)的數(shù)據(jù)調(diào)度方式進(jìn)行數(shù)據(jù)調(diào)度,并利用Start_R0utine啟動獨立線程,在獨立線程啟動時開始啟動定時器進(jìn)行計時,在定時器達(dá)到設(shè)定時間閾值時,執(zhí)行步驟202。
[0050]首先,簡單描述一下本實施例的應(yīng)用場景。如圖3所示,為MP1框架的系統(tǒng)結(jié)構(gòu)示意圖,在MP1框架中包括主機(jī)Server,Server通過HBA(主機(jī)總線適配器)卡與交換機(jī)SAN相連接,以及通過SAN與控制器Controller相連接,Controller在于磁盤陣列RAID array相連接,該磁盤陣列作為底層存儲設(shè)備,用于存儲系統(tǒng)中的數(shù)據(jù)。
[0051]其中,Server與磁盤陣列之間包括至少兩條路徑,假設(shè)包括3條路徑,例如,L1、L2、L3,通過利用這三條路徑,從底層存儲設(shè)備映射給主機(jī)的一塊磁盤,通過網(wǎng)絡(luò)通信設(shè)備的多條路徑上報給HBA卡之后,這些從每條路徑上報上來的物理盤都需要過濾驅(qū)動的過濾操作,其具體功能就是判斷上報上來的磁盤是否被DSM(Device Specific Modules)所支持。如果支持就加載MP1的類驅(qū)動Mpdev.s