本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種計(jì)算資源分配方法及裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,越來(lái)越多的用戶通過(guò)網(wǎng)絡(luò)獲取信息,網(wǎng)站需要處理的數(shù)據(jù)量也越來(lái)越大,當(dāng)今已然進(jìn)入大數(shù)據(jù)時(shí)代。目前,很多網(wǎng)站的服務(wù)端采用大型計(jì)算集群來(lái)處理數(shù)據(jù),如何合理分配計(jì)算資源,從而保證集群的計(jì)算資源利用率、提升集群的任務(wù)吞吐量變得非常重要。
一個(gè)大型計(jì)算集群每天都會(huì)運(yùn)行大量的任務(wù),按照現(xiàn)有的計(jì)算資源分配方法,通常會(huì)根據(jù)固定的參數(shù)為每個(gè)待處理任務(wù)分配計(jì)算資源,例如,若計(jì)算資源包括中央處理器(Centeral Processing Unit,CPU)占用量、內(nèi)存占用量和并發(fā)度,那么,為每個(gè)待處理任務(wù)分配相同的CPU占用量和內(nèi)存占用量,每個(gè)待處理任務(wù)的并發(fā)度會(huì)用對(duì)應(yīng)待處理任務(wù)的數(shù)據(jù)量除以固定值來(lái)確定,從而得到每個(gè)待處理任務(wù)的計(jì)算資源。
上述方法僅僅根據(jù)固定的參數(shù)來(lái)為每個(gè)待處理任務(wù)分配計(jì)算資源,分配方法過(guò)于簡(jiǎn)單,容易造成計(jì)算資源分配不合理,影響集群的計(jì)算資源利用率和集群的任務(wù)吞吐量。繼續(xù)沿用上例進(jìn)行說(shuō)明,在實(shí)際應(yīng)用中,每個(gè)待處理任務(wù)的數(shù)據(jù)量差別很大,對(duì)于數(shù)據(jù)量大的待處理任務(wù)和數(shù)據(jù)量小的待處理任務(wù)分配相同的CPU占用量和內(nèi)存占用量,這就會(huì)造成數(shù)據(jù)量大的待處理任務(wù)計(jì)算資源不足、以及數(shù)據(jù)量小的待處理任務(wù)計(jì)算資源閑置,從而無(wú)法充分利用集群所有的計(jì)算資源,影響集群的計(jì)算資源利用率和集群的任務(wù)吞吐量。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例提供一種計(jì)算資源分配方法及裝置,用以解決相關(guān)技術(shù)中存在的計(jì)算資源分配方法過(guò)于簡(jiǎn)單導(dǎo)致的計(jì)算資源分配不合理,影響集群的計(jì)算資源利用率和集群的任務(wù)吞吐量的問(wèn)題。
根據(jù)本申請(qǐng)實(shí)施例,提供一種計(jì)算資源分配方法,包括:
獲取待處理任務(wù)以及所述待處理任務(wù)的優(yōu)先級(jí);
根據(jù)所述待處理任務(wù)的優(yōu)先級(jí)確定所述待處理任務(wù)的最大計(jì)算資源;
根據(jù)所述待處理任務(wù)的歷史數(shù)據(jù)量和最大計(jì)算資源確定所述待處理任務(wù)的實(shí)際計(jì)算資源。
具體的,根據(jù)所述待處理任務(wù)的優(yōu)先級(jí)確定所述待處理任務(wù)的最大計(jì)算資源,具體包括:
獲取優(yōu)先級(jí)與最大計(jì)算資源的對(duì)應(yīng)關(guān)系;
從所述對(duì)應(yīng)關(guān)系中查找包括所述待處理任務(wù)的優(yōu)先級(jí)的表項(xiàng);
獲取查找到的表項(xiàng)中包括的最大計(jì)算資源,得到所述待處理任務(wù)的最大計(jì)算資源。
可選的,根據(jù)所述待處理任務(wù)的歷史數(shù)據(jù)量和最大計(jì)算資源確定所述待處理任務(wù)的實(shí)際計(jì)算資源之前,還包括:
獲取所述待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù);
確定所述待處理任務(wù)在所述第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)是否超過(guò)設(shè)定閾值;
若所述待處理任務(wù)在所述第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)超過(guò)所述設(shè)定閾值,則執(zhí)行根據(jù)所述待處理任務(wù)的歷史數(shù)據(jù)量和最大計(jì)算資源確定所述待處理任務(wù)的實(shí)際計(jì)算資源的步驟。
具體的,獲取所述待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù),具體包括:
計(jì)算所述待處理任務(wù)的特征信息;以及,
計(jì)算在所述第一歷史時(shí)段內(nèi)運(yùn)行過(guò)的所有任務(wù)的特征信息,得到歷史特征信息集合;
統(tǒng)計(jì)所述待處理任務(wù)的特征信息在所述歷史特征信息集合中出現(xiàn)的次數(shù),得到所述待處理任務(wù)在所述第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)。
可選的,還包括:
若所述待處理任務(wù)在所述第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)未超過(guò)所述設(shè)定閾值,則將所述待處理任務(wù)的最大計(jì)算資源作為所述待處理任務(wù)的實(shí)際計(jì)算資源。
具體的,若計(jì)算資源包括中央處理器CPU占用量、內(nèi)存占用量和/或并發(fā)度,則根據(jù)所述待處理任務(wù)的歷史數(shù)據(jù)量和最大計(jì)算資源確定所述待處理任務(wù)的實(shí)際計(jì)算資源,具體包括:
獲取第二歷史時(shí)段內(nèi)的CPU利用率,根據(jù)所述第二歷史時(shí)段內(nèi)的CPU利用率確定所述待處理任務(wù)的候選CPU占用量;
獲取所述待處理任務(wù)在所述第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量、執(zhí)行時(shí)間和操作類型;
根據(jù)所述待處理任務(wù)在所述第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量、執(zhí)行時(shí)間和操作類型確定 所述待處理任務(wù)的候選內(nèi)存占用量;
根據(jù)所述待處理任務(wù)在所述第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量確定所述待處理任務(wù)的候選并發(fā)度;
將所述待處理任務(wù)的候選CPU占用量、候選內(nèi)存占用量和候選并發(fā)度分別與所述最大計(jì)算資源中的最大CPU占用量、最大內(nèi)存占用量和最大并發(fā)度進(jìn)行比較;
將所述待處理任務(wù)的候選CPU占用量與最大CPU占用量中的較小者作為所述待處理任務(wù)的實(shí)際CPU占用量,將所述待處理任務(wù)的候選內(nèi)存占用量與最大內(nèi)存占用量中的較小者作為所述待處理任務(wù)的實(shí)際內(nèi)存占用量,將所述待處理任務(wù)的候選并發(fā)度與最大并發(fā)度中的較小者作為所述待處理任務(wù)的實(shí)際并發(fā)度;
將所述待處理任務(wù)的實(shí)際CPU占用量、實(shí)際內(nèi)存占用量和/或?qū)嶋H并發(fā)度作為所述待處理任務(wù)的實(shí)際計(jì)算資源。
具體的,根據(jù)所述待處理任務(wù)在所述第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量確定所述待處理任務(wù)的候選并發(fā)度,具體包括:
獲取預(yù)設(shè)的數(shù)據(jù)量與并發(fā)度的函數(shù)關(guān)系;
將所述待處理任務(wù)在所述第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量帶入所述函數(shù)關(guān)系中,得到所述待處理任務(wù)的候選并發(fā)度。
可選的,還包括:
將所述待處理任務(wù)在所述第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量除以所述第二歷史時(shí)段的時(shí)長(zhǎng),得到所述待處理任務(wù)在所述第二歷史時(shí)段內(nèi)的平均處理速度;
確定所述平均處理速度是否小于設(shè)定速度;
若所述平均處理速度小于所述設(shè)定速度,則將所述待處理任務(wù)的候選并發(fā)度乘以所述平均處理速度的倒數(shù)。
根據(jù)本申請(qǐng)實(shí)施例,還提供一種計(jì)算資源分配裝置,包括:
獲取單元,用于獲取待處理任務(wù)以及所述待處理任務(wù)的優(yōu)先級(jí);
第一確定單元,用于根據(jù)所述待處理任務(wù)的優(yōu)先級(jí)確定所述待處理任務(wù)的最大計(jì)算資源;
第二確定單元,用于根據(jù)所述待處理任務(wù)的歷史數(shù)據(jù)量和最大計(jì)算資源確定所述待處理任務(wù)的實(shí)際計(jì)算資源。
具體的,所述第一確定單元,用于根據(jù)所述待處理任務(wù)的優(yōu)先級(jí)確定所述待處理任務(wù) 的最大計(jì)算資源,具體用于:
獲取優(yōu)先級(jí)與最大計(jì)算資源的對(duì)應(yīng)關(guān)系;
從所述對(duì)應(yīng)關(guān)系中查找包括所述待處理任務(wù)的優(yōu)先級(jí)的表項(xiàng);
獲取查找到的表項(xiàng)中包括的最大計(jì)算資源,得到所述待處理任務(wù)的最大計(jì)算資源。
可選的,所述第二確定單元,還用于:
獲取所述待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù);
確定所述待處理任務(wù)在所述第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)是否超過(guò)設(shè)定閾值;
若所述待處理任務(wù)在所述第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)超過(guò)所述設(shè)定閾值,則根據(jù)所述待處理任務(wù)的歷史數(shù)據(jù)量和最大計(jì)算資源確定所述待處理任務(wù)的實(shí)際計(jì)算資源。
具體的,所述第二確定單元,用于獲取所述待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù),具體用于:
計(jì)算所述待處理任務(wù)的特征信息;以及,
計(jì)算在所述第一歷史時(shí)段內(nèi)運(yùn)行過(guò)的所有任務(wù)的特征信息,得到歷史特征信息集合;
統(tǒng)計(jì)所述待處理任務(wù)的特征信息在所述歷史特征信息集合中出現(xiàn)的次數(shù),得到所述待處理任務(wù)在所述第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)。
可選的,所述第二確定單元,還用于:
若所述待處理任務(wù)在所述第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)未超過(guò)所述設(shè)定閾值,則將所述待處理任務(wù)的最大計(jì)算資源作為所述待處理任務(wù)的實(shí)際計(jì)算資源。
具體的,若所述計(jì)算資源包括中央處理器CPU占用量、內(nèi)存占用量和/或并發(fā)度,則所述第二確定單元,用于根據(jù)所述待處理任務(wù)的歷史數(shù)據(jù)量和最大計(jì)算資源確定所述待處理任務(wù)的實(shí)際計(jì)算資源,具體用于:
獲取第二歷史時(shí)段內(nèi)的CPU利用率,根據(jù)所述第二歷史時(shí)段內(nèi)的CPU利用率確定所述待處理任務(wù)的候選CPU占用量;
獲取所述待處理任務(wù)在所述第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量、執(zhí)行時(shí)間和操作類型;
根據(jù)所述待處理任務(wù)在所述第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量、執(zhí)行時(shí)間和操作類型確定所述待處理任務(wù)的候選內(nèi)存占用量;
根據(jù)所述待處理任務(wù)在所述第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量確定所述待處理任務(wù)的候選并發(fā)度;
將所述待處理任務(wù)的候選CPU占用量、候選內(nèi)存占用量和候選并發(fā)度分別與所述最大計(jì)算資源中的最大CPU占用量、最大內(nèi)存占用量和最大并發(fā)度進(jìn)行比較;
將所述待處理任務(wù)的候選CPU占用量與最大CPU占用量中的較小者作為所述待處理任務(wù)的實(shí)際CPU占用量,將所述待處理任務(wù)的候選內(nèi)存占用量與最大內(nèi)存占用量中的較小者作為所述待處理任務(wù)的實(shí)際內(nèi)存占用量,將所述待處理任務(wù)的候選并發(fā)度與最大并發(fā)度中的較小者作為所述待處理任務(wù)的實(shí)際并發(fā)度;
將所述待處理任務(wù)的實(shí)際CPU占用量、實(shí)際內(nèi)存占用量和/或?qū)嶋H并發(fā)度作為所述待處理任務(wù)的實(shí)際計(jì)算資源。
具體的,所述第二確定單元,用于根據(jù)所述待處理任務(wù)在所述第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量確定所述待處理任務(wù)的候選并發(fā)度,具體用于:
獲取預(yù)設(shè)的數(shù)據(jù)量與并發(fā)度的函數(shù)關(guān)系;
將所述待處理任務(wù)在所述第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量帶入所述函數(shù)關(guān)系中,得到所述待處理任務(wù)的并發(fā)度。
可選的,所述第二確定單元,還用于:
將所述待處理任務(wù)在所述第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量除以所述第二歷史時(shí)段的時(shí)長(zhǎng),得到所述待處理任務(wù)在所述第二歷史時(shí)段內(nèi)的平均處理速度;
確定所述平均處理速度是否小于設(shè)定速度;
若所述平均處理速度小于所述設(shè)定速度,則將所述待處理任務(wù)的候選并發(fā)度乘以所述平均處理速度的倒數(shù)。
本申請(qǐng)實(shí)施例提供一種計(jì)算資源分配方法及裝置,獲取待處理任務(wù)以及所述待處理任務(wù)的優(yōu)先級(jí);根據(jù)所述待處理任務(wù)的優(yōu)先級(jí)確定所述待處理任務(wù)的最大計(jì)算資源;根據(jù)所述待處理任務(wù)的歷史數(shù)據(jù)量和最大計(jì)算資源確定所述待處理任務(wù)的實(shí)際計(jì)算資源。該方案在確定待處理任務(wù)的實(shí)際計(jì)算資源時(shí),會(huì)參考待處理任務(wù)的優(yōu)先級(jí)別對(duì)應(yīng)的最大計(jì)算資源和歷史數(shù)據(jù)量,并不是根據(jù)固定的參數(shù)來(lái)確定,對(duì)于不同的待處理任務(wù),當(dāng)優(yōu)先級(jí)和歷史數(shù)據(jù)量不同時(shí),得到的計(jì)算資源也不同,從而能夠更加合理地為每個(gè)待處理任務(wù)分配計(jì)算資源,進(jìn)而提升集群的計(jì)算資源利用率和集群的任務(wù)吞吐量。
附圖說(shuō)明
此處所說(shuō)明的附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
圖1為本申請(qǐng)實(shí)施例中一種計(jì)算資源分配方法的流程圖;
圖2為本申請(qǐng)實(shí)施例中S12的流程圖;
圖3為本申請(qǐng)實(shí)施例中另一種計(jì)算資源分配方法的流程圖;
圖4為本申請(qǐng)實(shí)施例中S14的流程圖;
圖5為本申請(qǐng)實(shí)施例中S13的流程圖;
圖6為本申請(qǐng)實(shí)施例中一種計(jì)算資源分配裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本申請(qǐng)所要解決的技術(shù)問(wèn)題、技術(shù)方案及有益效果更加清楚、明白,以下結(jié)合附圖和實(shí)施例,對(duì)本申請(qǐng)進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本申請(qǐng),并不用于限定本申請(qǐng)。
為了解決相關(guān)技術(shù)中存在的計(jì)算資源分配方法過(guò)于簡(jiǎn)單導(dǎo)致的計(jì)算資源分配不合理,影響集群的計(jì)算資源利用率和集群的任務(wù)吞吐量的問(wèn)題,本申請(qǐng)實(shí)施例提供一種計(jì)算資源分配方法,該方法可以但不限于應(yīng)用在大型計(jì)算集群或者服務(wù)器中,流程如圖1所示,包括如下步驟:
S11:獲取待處理任務(wù)以及待處理任務(wù)的優(yōu)先級(jí)。
待處理任務(wù)可以是用戶提交的任務(wù),也可以是定期自動(dòng)執(zhí)行的任務(wù)。
通常,這些任務(wù)會(huì)有一定的優(yōu)先級(jí),該優(yōu)先級(jí)可以是用戶自定義的,也可以根據(jù)待處理任務(wù)的基線確定的,待處理任務(wù)的基線越高,優(yōu)先級(jí)也越高。
S12:根據(jù)待處理任務(wù)的優(yōu)先級(jí)確定待處理任務(wù)的最大計(jì)算資源。
由于計(jì)算集群或者服務(wù)器的硬件配置是一定的,不可能無(wú)限制的為每個(gè)待處理任務(wù)分配計(jì)算資源,為了確保每個(gè)任務(wù)的順利運(yùn)行,可以預(yù)先設(shè)定待處理任務(wù)的優(yōu)先級(jí)對(duì)應(yīng)的最大計(jì)算資源,該最大計(jì)算資源是在確保計(jì)算集群或者服務(wù)器正常運(yùn)行的前提下,能夠提供的最大計(jì)算資源。
S13:根據(jù)待處理任務(wù)的歷史數(shù)據(jù)量和最大計(jì)算資源確定待處理任務(wù)的實(shí)際計(jì)算資源。
計(jì)算集群或者服務(wù)器每天都會(huì)運(yùn)行大量的任務(wù),在確定待處理任務(wù)的實(shí)際計(jì)算資源時(shí),除了參考待處理任務(wù)的最大計(jì)算資源外,還可以參考待處理的歷史數(shù)據(jù)量,從而為待處理任務(wù)分配最優(yōu)的計(jì)算資源,作為待處理任務(wù)的實(shí)際計(jì)算資源。
該方案在確定待處理任務(wù)的實(shí)際計(jì)算資源時(shí),會(huì)參考待處理任務(wù)的優(yōu)先級(jí)別對(duì)應(yīng)的最 大計(jì)算資源和歷史數(shù)據(jù)量,并不是根據(jù)固定的參數(shù)來(lái)確定,對(duì)于不同的待處理任務(wù),當(dāng)優(yōu)先級(jí)和歷史數(shù)據(jù)量不同時(shí),得到的計(jì)算資源也不同,從而能夠更加合理地為每個(gè)待處理任務(wù)分配計(jì)算資源,進(jìn)而提升集群的計(jì)算資源利用率和集群的任務(wù)吞吐量。
下面詳細(xì)介紹上述計(jì)算資源分配方法的每個(gè)步驟。
具體的,上述S12中的根據(jù)待處理任務(wù)的優(yōu)先級(jí)確定待處理任務(wù)的最大計(jì)算資源的實(shí)現(xiàn)方式,如圖2所示,具體包括如下步驟:
S121:獲取優(yōu)先級(jí)與最大計(jì)算資源的對(duì)應(yīng)關(guān)系。
可以預(yù)先設(shè)置任務(wù)的優(yōu)先級(jí)與最大計(jì)算資源的對(duì)應(yīng)關(guān)系,在該對(duì)應(yīng)關(guān)系的每個(gè)表項(xiàng)中,保存一個(gè)優(yōu)先級(jí)以及該優(yōu)先級(jí)對(duì)應(yīng)的最大計(jì)算資源。
S122:從對(duì)應(yīng)關(guān)系中查找包括待處理任務(wù)的優(yōu)先級(jí)的表項(xiàng)。
在確定待處理任務(wù)的最大計(jì)算資源時(shí),可以從該對(duì)應(yīng)關(guān)系中查找包括待處理任務(wù)的優(yōu)先級(jí)的表項(xiàng)。
S123:獲取查找到的表項(xiàng)中包括的最大計(jì)算資源,得到待處理任務(wù)的最大計(jì)算資源。
步驟S121-S123具體說(shuō)明了一種根據(jù)待處理任務(wù)的優(yōu)先級(jí)確定待處理任務(wù)的最大計(jì)算資源的方式,當(dāng)然還可以采用其他的方式,這里不再贅述。
本申請(qǐng)實(shí)施例還提供另一種計(jì)算資源的分配方法,該方法的流程如圖3所示,在如圖1的基礎(chǔ)上,還包括如下步驟:
S14:獲取待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)。
計(jì)算機(jī)群或者服務(wù)器每天都會(huì)運(yùn)行大量的任務(wù),而每個(gè)任務(wù)在一定的時(shí)段內(nèi)都有可能運(yùn)行多次,若一個(gè)任務(wù)在一定的時(shí)段內(nèi)運(yùn)行多次,該任務(wù)為周期任務(wù),若一個(gè)任務(wù)在一定的時(shí)段內(nèi)只運(yùn)行少數(shù)幾次,該任務(wù)為臨時(shí)任務(wù),對(duì)于周期任務(wù)和臨時(shí)任務(wù)分配計(jì)算資源時(shí)可以采用不同的方法。其中,一定的時(shí)段可以定義為第一歷史時(shí)段,例如,選取過(guò)去的7天作為第一歷史時(shí)段。可以首先獲取待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù),進(jìn)而確定如何為待處理任務(wù)分配計(jì)算資源。
S15:確定待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)是否超過(guò)設(shè)定閾值,若待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)超過(guò)設(shè)定閾值,則執(zhí)行S13;若待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)未超過(guò)設(shè)定閾值,執(zhí)行S16。
S16:將待處理任務(wù)的最大計(jì)算資源作為待處理任務(wù)的實(shí)際計(jì)算資源。
若待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)超過(guò)設(shè)定閾值,說(shuō)明待處理任務(wù)是周期任務(wù),可以進(jìn)一步根據(jù)待處理任務(wù)的歷史數(shù)據(jù)量和最大計(jì)算資源確定實(shí)際計(jì)算資源;若待處 理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)未超過(guò)設(shè)定閾值,說(shuō)明待處理任務(wù)是臨時(shí)任務(wù),可以直接將待處理任務(wù)的最大計(jì)算資源作為實(shí)際計(jì)算資源。也就是說(shuō),可以僅僅優(yōu)化周期任務(wù)的計(jì)算資源分配方式,對(duì)于臨時(shí)任務(wù)則分配最大計(jì)算資源來(lái)確保臨時(shí)任務(wù)的順利運(yùn)行。
設(shè)定閾值可以根據(jù)實(shí)際需要進(jìn)行設(shè)定,例如設(shè)定為1次、2次、3次等等。
具體的,上述S14中獲取待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)的實(shí)現(xiàn)方式,如圖4所示,具體包括如下步驟:
S141:計(jì)算待處理任務(wù)的特征信息。
可以采用消息摘要算法第五版(Message Digest Algorithm,MD5)算法計(jì)算待處理任務(wù)的特征信息,這時(shí)特征信息為MD5值,在計(jì)算待處理任務(wù)的MD5值時(shí),可以將待處理任務(wù)中的時(shí)間參數(shù)用固定參數(shù)替代,并將任務(wù)的代碼轉(zhuǎn)化成MD5值。
S142:計(jì)算在第一歷史時(shí)段內(nèi)運(yùn)行過(guò)的所有任務(wù)的特征信息,得到歷史特征信息集合。
可以采用MD5算法計(jì)算第一歷史時(shí)段內(nèi)運(yùn)行過(guò)的所有任務(wù)的MD5值。
S143:統(tǒng)計(jì)待處理任務(wù)的特征信息在歷史特征信息集合中出現(xiàn)的次數(shù),得到待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)。
通過(guò)S141-S143,可以根據(jù)待處理任務(wù)的特征值在第一歷史時(shí)段內(nèi)的歷史特征集合中出現(xiàn)的次數(shù)確定待處理任務(wù)的運(yùn)行次數(shù)。
對(duì)于不同的計(jì)算集群或者服務(wù)器,計(jì)算資源包括的具體信息也可能不同,下面以計(jì)算資源包括CPU占用量、內(nèi)存占用量和/或并發(fā)度為例進(jìn)行說(shuō)明,上述S13中的根據(jù)待處理任務(wù)的歷史數(shù)據(jù)量和最大計(jì)算資源確定待處理任務(wù)的實(shí)際計(jì)算資源的實(shí)現(xiàn)方式,如圖5所示,具體包括如下步驟:
S131:獲取第二歷史時(shí)段內(nèi)的CPU利用率,根據(jù)第二歷史時(shí)段內(nèi)的CPU利用率確定待處理任務(wù)的候選CPU占用量。
對(duì)于計(jì)算集群或者服務(wù)器來(lái)說(shuō),CPU利用率有個(gè)近似的最優(yōu)值,目前的經(jīng)驗(yàn)范圍為65%~85%之間。過(guò)高的CPU利用率會(huì)造成任務(wù)的大量等待,過(guò)低的CPU利用用率會(huì)浪費(fèi)計(jì)算資源。因此,可以根據(jù)第二歷史時(shí)段內(nèi)的CPU利用率確定待處理任務(wù)的CPU占用量,從而保證計(jì)算集群或者服務(wù)器處在比較健康高效的狀態(tài)。
其中,第二歷史時(shí)段可以根據(jù)實(shí)際需要進(jìn)行設(shè)定,例如,選取過(guò)去的7天作為第一歷史時(shí)段。第二歷史時(shí)段與第一歷史時(shí)段可以相同也可以不同。
S132:獲取待處理任務(wù)在第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量、執(zhí)行時(shí)間和操作類型。
S131與S132沒(méi)有嚴(yán)格的先后執(zhí)行順序,可以先執(zhí)行S131再執(zhí)行S132,也可以先執(zhí)行 S132再執(zhí)行S131,也可以同時(shí)執(zhí)行S131和S132。
S133:根據(jù)待處理任務(wù)在第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量、執(zhí)行時(shí)間和操作類型確定待處理任務(wù)的候選內(nèi)存占用量。
按照經(jīng)驗(yàn),任務(wù)的數(shù)據(jù)量越大,需要的內(nèi)存占用量越大;任務(wù)的操作類型不同,需要的內(nèi)存占用量也不同,例如聚合(join)操作往往需要更多的內(nèi)存占用量;任務(wù)的執(zhí)行時(shí)間越長(zhǎng),內(nèi)存占用量也可能越大,因此,可以根據(jù)這些因素來(lái)確定待處理任務(wù)的內(nèi)存占用量。
S134:根據(jù)待處理任務(wù)在第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量確定待處理任務(wù)的候選并發(fā)度。
具體可以獲取預(yù)設(shè)的數(shù)據(jù)量與并發(fā)度的函數(shù)關(guān)系;將待處理任務(wù)在第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量帶入函數(shù)關(guān)系中,得到待處理任務(wù)的并發(fā)度。
一種優(yōu)選的數(shù)據(jù)量與并發(fā)度的函數(shù)關(guān)系如下所示,其中第二歷史時(shí)段為最近7天:
base_inst=max(int((input_bytes+255M)/256M),1) 0G<input_bytes<=30G
base_inst=int((input_bytes-30G+511M)/512M)+120 30G<input_bytes<=100G
base_inst=int((input_bytes-100G+1023M)/1G)+260 100G<input_bytes<=500G
base_inst=int((input_bytes-500G+2047M)/2G)+660 500G<input_bytes
其中,base_inst為并發(fā)度,input_bytes為最近7天該待處理任務(wù)的歷史數(shù)據(jù)量。對(duì)于map,即為最近7天該待處理任務(wù)的平均輸入數(shù)據(jù)量,對(duì)于reduce,即為與reduce對(duì)應(yīng)的map在最近7天的平均輸出數(shù)據(jù)量。
一個(gè)優(yōu)選的實(shí)施例在確定出待處理任務(wù)的并發(fā)度后,可以將待處理任務(wù)在第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量除以第二歷史時(shí)段的時(shí)長(zhǎng),得到待處理任務(wù)在第二歷史時(shí)段內(nèi)的平均處理速度;確定平均處理速度是否小于設(shè)定速度;若平均處理速度小于設(shè)定速度,則將待處理任務(wù)的候選并發(fā)度乘以平均處理速度的倒數(shù)。其中,設(shè)定速度可以根據(jù)實(shí)際需要進(jìn)行設(shè)定。
例如,確定最近7天任務(wù)的平均處理速度,如果最近7天map或者reduce的平均處理速度小于1M/s,則按照1M/s的速度對(duì)原始的平均處理速度進(jìn)行加權(quán),即并發(fā)度*(1/最近7天的平均處理速度)。
S133與S134沒(méi)有嚴(yán)格的先后執(zhí)行順序,可以先執(zhí)行S133再執(zhí)行S134,也可以先執(zhí)行S134再執(zhí)行S133,也可以同時(shí)執(zhí)行S133和S134。
S135:將待處理任務(wù)的候選CPU占用量、候選內(nèi)存占用量和候選并發(fā)度分別與最大計(jì)算資源中的最大CPU占用量、最大內(nèi)存占用量和最大并發(fā)度進(jìn)行比較。
S136:將待處理任務(wù)的候選CPU占用量與最大CPU占用量中的較小者作為待處理任務(wù)的實(shí)際CPU占用量,將待處理任務(wù)的候選內(nèi)存占用量與最大內(nèi)存占用量中的較小者作為待處理任務(wù)的實(shí)際內(nèi)存占用量,將待處理任務(wù)的候選并發(fā)度與最大并發(fā)度中的較小者作為待處理任務(wù)的實(shí)際并發(fā)度。
S137:將待處理任務(wù)的實(shí)際CPU占用量、實(shí)際內(nèi)存占用量和/或?qū)嶋H并發(fā)度作為待處理任務(wù)的實(shí)際計(jì)算資源。
為了確保計(jì)算機(jī)群或者服務(wù)器處于比較健康高效的狀態(tài),待處理任務(wù)的實(shí)際計(jì)算資源不能超過(guò)最大計(jì)算資源,因此需要根據(jù)待處理任務(wù)的候選CPU占用量、候選內(nèi)存占用量和候選并發(fā)度分別與最大計(jì)算資源中的最大CPU占用量、最大內(nèi)存占用量和最大并發(fā)度進(jìn)行比較來(lái)確定實(shí)際計(jì)算資源。
基于同一發(fā)明構(gòu)思,本申請(qǐng)實(shí)施例還提供一種計(jì)算資源分配裝置,該裝置與如圖1所示的計(jì)算資源分配方法相對(duì)應(yīng),該裝置的結(jié)構(gòu)如6圖所示,包括獲取單元61、第一確定單元62和第二確定單元63,其中:
上述獲取單元61,用于獲取待處理任務(wù)以及待處理任務(wù)的優(yōu)先級(jí);
上述第一確定單元62,用于根據(jù)待處理任務(wù)的優(yōu)先級(jí)確定待處理任務(wù)的最大計(jì)算資源;
上述第二確定單元63,用于根據(jù)待處理任務(wù)的歷史數(shù)據(jù)量和最大計(jì)算資源確定待處理任務(wù)的實(shí)際計(jì)算資源。
該方案在確定待處理任務(wù)的實(shí)際計(jì)算資源時(shí),會(huì)參考待處理任務(wù)的優(yōu)先級(jí)別對(duì)應(yīng)的最大計(jì)算資源和歷史數(shù)據(jù)量,并不是根據(jù)固定的參數(shù)來(lái)確定,對(duì)于不同的待處理任務(wù),當(dāng)優(yōu)先級(jí)和歷史數(shù)據(jù)量不同時(shí),得到的計(jì)算資源也不同,從而能夠更加合理地為每個(gè)待處理任務(wù)分配計(jì)算資源,進(jìn)而提升集群的計(jì)算資源利用率和集群的任務(wù)吞吐量。
具體的,上述第一確定單元62,用于根據(jù)待處理任務(wù)的優(yōu)先級(jí)確定待處理任務(wù)的最大計(jì)算資源,具體用于:
獲取優(yōu)先級(jí)與最大計(jì)算資源的對(duì)應(yīng)關(guān)系;
從對(duì)應(yīng)關(guān)系中查找包括待處理任務(wù)的優(yōu)先級(jí)的表項(xiàng);
獲取查找到的表項(xiàng)中包括的最大計(jì)算資源,得到待處理任務(wù)的最大計(jì)算資源。
可選的,上述第二確定單元63,還用于:
獲取待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù);
確定待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)是否超過(guò)設(shè)定閾值;
若待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)超過(guò)設(shè)定閾值,則根據(jù)待處理任務(wù)的歷史數(shù)據(jù)量和最大計(jì)算資源確定待處理任務(wù)的實(shí)際計(jì)算資源。
具體的,上述第二確定單元63,用于獲取待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù),具體用于:
計(jì)算待處理任務(wù)的特征信息;以及,
計(jì)算在第一歷史時(shí)段內(nèi)運(yùn)行過(guò)的所有任務(wù)的特征信息,得到歷史特征信息集合;
統(tǒng)計(jì)待處理任務(wù)的特征信息在歷史特征信息集合中出現(xiàn)的次數(shù),得到待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)。
可選的,上述第二確定單元63,還用于:
若待處理任務(wù)在第一歷史時(shí)段內(nèi)的運(yùn)行次數(shù)未超過(guò)設(shè)定閾值,則將待處理任務(wù)的最大計(jì)算資源作為待處理任務(wù)的實(shí)際計(jì)算資源。
具體的,若計(jì)算資源包括CPU占用量、內(nèi)存占用量和/或并發(fā)度,則第二確定單元,用于根據(jù)待處理任務(wù)的歷史數(shù)據(jù)量和最大計(jì)算資源確定待處理任務(wù)的實(shí)際計(jì)算資源,具體用于:
獲取第二歷史時(shí)段內(nèi)的CPU利用率,根據(jù)第二歷史時(shí)段內(nèi)的CPU利用率確定待處理任務(wù)的候選CPU占用量;
獲取待處理任務(wù)在第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量、執(zhí)行時(shí)間和操作類型;
根據(jù)待處理任務(wù)在第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量、執(zhí)行時(shí)間和操作類型確定待處理任務(wù)的候選內(nèi)存占用量;
根據(jù)待處理任務(wù)在第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量確定待處理任務(wù)的候選并發(fā)度;
將待處理任務(wù)的候選CPU占用量、候選內(nèi)存占用量和候選并發(fā)度分別與最大計(jì)算資源中的最大CPU占用量、最大內(nèi)存占用量和最大并發(fā)度進(jìn)行比較;
將待處理任務(wù)的候選CPU占用量與最大CPU占用量中的較小者作為待處理任務(wù)的實(shí)際CPU占用量,將待處理任務(wù)的候選內(nèi)存占用量與最大內(nèi)存占用量中的較小者作為待處理任務(wù)的實(shí)際內(nèi)存占用量,將待處理任務(wù)的候選并發(fā)度與最大并發(fā)度中的較小者作為待處理任務(wù)的實(shí)際并發(fā)度;
將待處理任務(wù)的實(shí)際CPU占用量、實(shí)際內(nèi)存占用量和/或?qū)嶋H并發(fā)度作為待處理任務(wù)的實(shí)際計(jì)算資源。
具體的,上述第二確定單元63,用于根據(jù)待處理任務(wù)在第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量 確定待處理任務(wù)的并發(fā)度,具體用于:
獲取預(yù)設(shè)的數(shù)據(jù)量與并發(fā)度的函數(shù)關(guān)系;
將待處理任務(wù)在第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量帶入函數(shù)關(guān)系中,得到待處理任務(wù)的并發(fā)度。
可選的,上述第二確定單元63,還用于:
將待處理任務(wù)在第二歷史時(shí)段內(nèi)的歷史數(shù)據(jù)量除以第二歷史時(shí)段的時(shí)長(zhǎng),得到待處理任務(wù)在第二歷史時(shí)段內(nèi)的平均處理速度;
確定平均處理速度是否小于設(shè)定速度;
若平均處理速度小于設(shè)定速度,則將待處理任務(wù)的候選并發(fā)度乘以平均處理速度的倒數(shù)。
上述說(shuō)明示出并描述了本申請(qǐng)的優(yōu)選實(shí)施例,但如前所述,應(yīng)當(dāng)理解本申請(qǐng)并非局限于本文所披露的形式,不應(yīng)看作是對(duì)其他實(shí)施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過(guò)上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識(shí)進(jìn)行改動(dòng)。而本領(lǐng)域人員所進(jìn)行的改動(dòng)和變化不脫離本申請(qǐng)的精神和范圍,則都應(yīng)在本申請(qǐng)所附權(quán)利要求的保護(hù)范圍內(nèi)。