帶寬調(diào)節(jié)裝置及方法
【專利摘要】本發(fā)明公開了一種帶寬調(diào)節(jié)裝置及方法,屬于互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】。所述帶寬調(diào)節(jié)裝置包括定時器、任務(wù)調(diào)度器和工作進(jìn)程隊列,其中:所述工作進(jìn)程隊列包括多個工作進(jìn)程條目,每一個工作進(jìn)程執(zhí)行一個下載任務(wù);所述定時器,適于定時通知所述任務(wù)調(diào)度器根據(jù)所述工作進(jìn)程隊列包括的工作進(jìn)程所執(zhí)行的下載任務(wù)來獲取服務(wù)器的當(dāng)前帶寬;所述任務(wù)調(diào)度器,適于根據(jù)所述定時器的通知,獲取所有正在執(zhí)行的下載任務(wù)的下載速度,將所有下載速度匯總后得到服務(wù)器的當(dāng)前帶寬,并在確定服務(wù)器的當(dāng)前帶寬達(dá)到預(yù)設(shè)的帶寬閾值時,通知所述工作進(jìn)程隊列中的工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速。根據(jù)本發(fā)明,能夠提高服務(wù)器的資源利用率。
【專利說明】帶寬調(diào)節(jié)裝置及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體涉及一種帶寬調(diào)節(jié)裝置及方法。
【背景技術(shù)】
[0002]離線下載服務(wù)是指電腦用戶不用開機(jī)上網(wǎng),服務(wù)商的離線下載服務(wù)器先行下載目標(biāo)文件,下載完成后,電腦用戶再從服務(wù)器上將目標(biāo)文件轉(zhuǎn)下到電腦硬盤中,具有高速、不用掛機(jī)的優(yōu)點而頗受歡迎。
[0003]離線下載服務(wù)理想情況下是為用戶提供全速下載,即不限制資源的下載速度,能夠達(dá)到多大速度就用多大的速度進(jìn)行下載,此方案的問題是容易將機(jī)房的帶寬跑滿,導(dǎo)致此機(jī)房的所有服務(wù)都會受到影響。
[0004]解決上述問題的一種方案是計劃式限速,通過限制最大并發(fā)任務(wù)數(shù)與單任務(wù)的最大速度來控制總帶寬峰值不會超過最大值。根據(jù)該方案,在服務(wù)開始提供之前,就做好規(guī)模評估,推算出一個合理的速度閾值,在提供服務(wù)時,對每個用戶使用評估好的速度閾值進(jìn)行限速,控制帶寬的峰值在可接受范圍內(nèi)。例如服務(wù)器的帶寬峰值最大允許為IG(約為1000*1000k),離線下載服務(wù)器最多從任務(wù)隊列中同時取出2000個任務(wù),則每個任務(wù)的最大速度應(yīng)為500k/s=1000*1000k/2000。該方案的缺點在于,資源無法達(dá)到最大利用率。例如一個任務(wù)的最大速度可以達(dá)到2M/s,并且同時沒有其他任務(wù),由于評估模型的限制,此任務(wù)只能以500k/s的速度進(jìn)行下載。
[0005]解決上述問題的另一種方案是先入為主方案,通過動態(tài)控制任務(wù)數(shù)來控制帶寬峰值。根據(jù)該方案,任務(wù)管理器定時查詢一個狀態(tài)值,如果狀態(tài)值為可接受任務(wù)狀態(tài),則查看任務(wù)隊列,如果有排隊的任務(wù),則取出執(zhí)行。當(dāng)任務(wù)執(zhí)行時,讓任務(wù)以可能的最大速度進(jìn)行下載,例如2M/s,任務(wù)管理器會根據(jù)所有任務(wù)的速度,計算出當(dāng)前帶寬,當(dāng)達(dá)到允許帶寬峰值最大值的80%時,將服務(wù)器狀態(tài)值標(biāo)記為飽和狀態(tài),不接受新任務(wù)。當(dāng)有任務(wù)完成時,再修改此狀態(tài)為可接受任務(wù)狀態(tài)。該方案的缺點在于,用戶感受不統(tǒng)一,對于一部分用戶可以給用戶提供較好的下載速度,而對于另一部分用戶則增加了其排隊的時間。
【發(fā)明內(nèi)容】
[0006]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的帶寬調(diào)節(jié)裝置及方法。
[0007]依據(jù)本發(fā)明的一個方面,提供了一種帶寬調(diào)節(jié)裝置,包括定時器、任務(wù)調(diào)度器和工作進(jìn)程隊列,其中:
[0008]所述工作進(jìn)程隊列包括多個工作進(jìn)程條目,每一個工作進(jìn)程執(zhí)行一個下載任務(wù);
[0009]所述定時器,適于定時通知所述任務(wù)調(diào)度器根據(jù)所述工作進(jìn)程隊列包括的工作進(jìn)程所執(zhí)行的下載任務(wù)來獲取服務(wù)器的當(dāng)前帶寬;
[0010]所述任務(wù)調(diào)度器,適于根據(jù)所述定時器的通知,獲取所有正在執(zhí)行的下載任務(wù)的下載速度,將所有下載速度匯總后得到服務(wù)器的當(dāng)前帶寬,并在確定服務(wù)器的當(dāng)前帶寬達(dá)到預(yù)設(shè)的帶寬閾值時,通知所述工作進(jìn)程隊列中的工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速。
[0011]可選地,所述任務(wù)調(diào)度器通知所述工作進(jìn)程隊列中的下載速度排名靠前的預(yù)定數(shù)目個工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速。
[0012]可選地,所述任務(wù)調(diào)度器還適于在確定服務(wù)器的當(dāng)前帶寬未達(dá)到預(yù)設(shè)的帶寬閾值時,通知全部或部分正在限速的工作進(jìn)程停止對相應(yīng)的下載任務(wù)進(jìn)行限速。
[0013]可選地,所述預(yù)設(shè)的帶寬閾值為服務(wù)器的最大允許帶寬與一系數(shù)之積,所述系數(shù)小于等于I。
[0014]可選地,所述帶寬調(diào)節(jié)裝置還包括等待任務(wù)隊列,所述等待任務(wù)隊列包括多個排隊的下載任務(wù)條目;
[0015]所述任務(wù)調(diào)度器還適于在當(dāng)前正在執(zhí)行的下載任務(wù)的數(shù)目小于預(yù)設(shè)的任務(wù)并發(fā)數(shù)時,從所述等待任務(wù)隊列中提取下載任務(wù),將提取的下載任務(wù)交給工作進(jìn)程隊列中的工作進(jìn)程進(jìn)行處理。
[0016]可選地,所述任務(wù)調(diào)度器采取小文件優(yōu)先的任務(wù)獲取算法從所述等待任務(wù)隊列中提取下載任務(wù)。
[0017]可選地,所述等待任務(wù)隊列中還存儲有排隊的下載任務(wù)的等待時間;
[0018]所述任務(wù)調(diào)度器在執(zhí)行小文件優(yōu)先的任務(wù)獲取算法之前,從所述等待任務(wù)隊列中提取等待時間超過預(yù)設(shè)的任務(wù)最長等待時間的下載任務(wù)。
[0019]根據(jù)本發(fā)明的另一方面,提供了一種帶寬調(diào)節(jié)方法,包括:
[0020]定時獲取服務(wù)器中所有正在執(zhí)行的下載任務(wù)的下載速度,將所有下載速度匯總后得到服務(wù)器的當(dāng)前帶寬;
[0021]在確定服務(wù)器的當(dāng)前帶寬達(dá)到預(yù)設(shè)的帶寬閾值時,通知工作進(jìn)程隊列中的工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速,其中,所述工作進(jìn)程隊列包括多個工作進(jìn)程條目,每一個工作進(jìn)程執(zhí)行一個下載任務(wù)。
[0022]可選地,所述通知工作進(jìn)程隊列中的工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速具體為:通知工作進(jìn)程隊列中的下載速度排名靠前的預(yù)定數(shù)目個工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速。
[0023]可選地,所述帶寬調(diào)節(jié)方法還包括:在確定服務(wù)器的當(dāng)前帶寬未達(dá)到預(yù)設(shè)的帶寬閾值時,通知全部或部分正在限速的工作進(jìn)程停止對相應(yīng)的下載任務(wù)進(jìn)行限速。
[0024]可選地,所述預(yù)設(shè)的帶寬閾值為服務(wù)器的最大允許帶寬與一系數(shù)之積,所述系數(shù)小于等于I。
[0025]可選地,所述帶寬調(diào)節(jié)方法還包括:在當(dāng)前正在執(zhí)行的下載任務(wù)的數(shù)目小于預(yù)設(shè)的任務(wù)并發(fā)數(shù)時,從等待任務(wù)隊列中提取下載任務(wù),將提取的下載任務(wù)交給工作進(jìn)程隊列中的工作進(jìn)程進(jìn)行處理,其中,所述等待任務(wù)隊列包括多個排隊的下載任務(wù)條目。
[0026]可選地,所述從等待任務(wù)隊列中提取下載任務(wù)具體為:采取小文件優(yōu)先的任務(wù)獲取算法從所述等待任務(wù)隊列中提取下載任務(wù)。
[0027]可選地,在執(zhí)行小文件優(yōu)先的任務(wù)獲取算法之前,從所述等待任務(wù)隊列中提取等待時間超過預(yù)設(shè)的任務(wù)最長等待時間的下載任務(wù)。
[0028]根據(jù)本發(fā)明的上述技術(shù)方案,通過將服務(wù)器的當(dāng)前帶寬與預(yù)設(shè)的帶寬閾值進(jìn)行比較,來動態(tài)調(diào)節(jié)各工作進(jìn)程對資源的下載速度,實現(xiàn)了對服務(wù)器工作帶寬的動態(tài)調(diào)節(jié),從而提高了服務(wù)器的資源利用率。在任務(wù)量飽和的情況下,能夠充分利用服務(wù)器的帶寬,并且基本不會造成帶寬溢出,達(dá)到了同時能給盡可能多的用戶提供服務(wù)的效果。
[0029]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
【專利附圖】
【附圖說明】
[0030]通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0031]圖1示出了根據(jù)本發(fā)明一個實施例的帶寬調(diào)節(jié)裝置的結(jié)構(gòu)圖;
[0032]圖2示出了根據(jù)本發(fā)明一個實施例的帶寬調(diào)節(jié)方法的流程圖。
【具體實施方式】
[0033]下面將參照附圖更詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0034]針對現(xiàn)有技術(shù)的離線下載方案中,服務(wù)器的資源利用率低下的問題,本發(fā)明實施例提供一種帶寬調(diào)節(jié)裝置及帶寬調(diào)節(jié)方法,通過動態(tài)調(diào)整各工作進(jìn)程對資源的下載速度,實現(xiàn)對服務(wù)器工作帶寬的動態(tài)調(diào)節(jié),從而提高了服務(wù)器的資源利用率。
[0035]圖1示出了根據(jù)本發(fā)明一個實施例的帶寬調(diào)節(jié)裝置的結(jié)構(gòu)圖。所述帶寬調(diào)節(jié)裝置可以設(shè)置在離線下載服務(wù)器中,也可以設(shè)置在其他類型的需要進(jìn)行并行下載資源的服務(wù)器或計算機(jī)中。參照圖1,所述帶寬調(diào)節(jié)裝置可以包括定時器10、任務(wù)調(diào)度器20和工作進(jìn)程隊列30,其中:
[0036]所述工作進(jìn)程隊列30包括多個工作進(jìn)程條目,每一個工作進(jìn)程執(zhí)行一個下載任務(wù)。所述工作進(jìn)程隊列30包括的工作進(jìn)程條目的數(shù)量可以是一個固定值,該固定值的大小主要受限于服務(wù)器的資源能力,所述資源能力主要包括CPU速度和內(nèi)存大小。該固定值相當(dāng)于服務(wù)器能夠提供同時進(jìn)行下載的任務(wù)的數(shù)量,即任務(wù)并發(fā)數(shù),本領(lǐng)域技術(shù)人員可以根據(jù)服務(wù)器的資源能力合理確定該固定值,例如,該固定值可以為80、90或100等等。
[0037]所述定時器10,適于定時通知所述任務(wù)調(diào)度器20根據(jù)所述工作進(jìn)程隊列30包括的工作進(jìn)程所執(zhí)行的下載任務(wù)來獲取服務(wù)器的當(dāng)前帶寬。定時器10的定時周期可以根據(jù)需要設(shè)置,例如,將該定時周期設(shè)置為I分鐘,這樣,定時器10會每隔I分鐘向任務(wù)調(diào)度器20發(fā)送一個獲取服務(wù)器當(dāng)前帶寬的指令。
[0038]所述任務(wù)調(diào)度器20,適于根據(jù)所述定時器20的通知,獲取所有正在執(zhí)行的下載任務(wù)的下載速度,將所有下載速度匯總后得到服務(wù)器的當(dāng)前帶寬(或者稱為當(dāng)前帶寬占用),并在確定服務(wù)器的當(dāng)前帶寬達(dá)到預(yù)設(shè)的帶寬閾值時,通知所述工作進(jìn)程隊列中30的工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速。
[0039]具體地,任務(wù)調(diào)度器20在接收到定時器20發(fā)送的獲取服務(wù)器當(dāng)前帶寬的指令時,從所述工作進(jìn)程隊列30獲取工作進(jìn)程,向所有工作進(jìn)程發(fā)起查詢資源下載速度的請求,獲得所有下載任務(wù)的資源下載速度后匯總得到服務(wù)器的當(dāng)前帶寬。然后,將服務(wù)器的當(dāng)前帶寬與預(yù)設(shè)的帶寬閾值進(jìn)行比較,當(dāng)服務(wù)器的當(dāng)前帶寬大于或等于帶寬閾值時,說明服務(wù)器的帶寬負(fù)荷較大,有可能造成帶寬溢出,影響所有下載任務(wù)的下載速度,于是,通知所述工作進(jìn)程隊列30中的工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速,通過降低下載任務(wù)的下載速度來降低服務(wù)器的帶寬占用。
[0040]由上述可知,依據(jù)本發(fā)明一個實施例的技術(shù)方案,通過將服務(wù)器的當(dāng)前帶寬與預(yù)設(shè)的帶寬閾值進(jìn)行比較,來動態(tài)調(diào)節(jié)各工作進(jìn)程對資源的下載速度,實現(xiàn)了對服務(wù)器工作帶寬的動態(tài)調(diào)節(jié),從而提高了服務(wù)器的資源利用率。在任務(wù)量飽和的情況下,能夠充分利用服務(wù)器的帶寬,并且基本不會造成帶寬溢出,達(dá)到了同時能給盡可能多的用戶提供服務(wù)的效果。
[0041]在一種實現(xiàn)方式中,接收到限速通知的工作進(jìn)程可以一直對當(dāng)前執(zhí)行的下載任務(wù)進(jìn)行限速,直到當(dāng)前下載任務(wù)下載完所需下載的文件或資源,之后,所述工作進(jìn)程可以執(zhí)行其他下載任務(wù),對于所述其他下載任務(wù),初始化時是以全速下載,當(dāng)所述工作進(jìn)程再次接收到限速通知時,對執(zhí)行的所述其他下載任務(wù)進(jìn)行限速。
[0042]可選地,所述任務(wù)調(diào)度器20還適于在確定服務(wù)器的當(dāng)前帶寬未達(dá)到預(yù)設(shè)的帶寬閾值時,通知全部或部分正在限速的工作進(jìn)程停止對相應(yīng)的下載任務(wù)進(jìn)行限速。服務(wù)器的當(dāng)前帶寬未達(dá)到預(yù)設(shè)的帶寬閾值,說明服務(wù)器的帶寬未充分利用,可以通過恢復(fù)限速的下載任務(wù)的下載速度來提高資源利用率。例如,可以通知正在限速的工作進(jìn)程中的一半(向上取整)的工作進(jìn)程來停止對相應(yīng)的下載任務(wù)進(jìn)行限速。
[0043]可選地,所述預(yù)設(shè)的帶寬閾值為服務(wù)器的最大允許帶寬與一系數(shù)之積,所述系數(shù)小于等于I。由于下載任務(wù)的下載速度可能出現(xiàn)瞬時的突然變大,而任務(wù)調(diào)度器20也并非實時的去獲取下載任務(wù)的下載速度,因此,對服務(wù)器的帶寬使用要留有一定余量,這樣,能夠盡可能的避免服務(wù)器的帶寬溢出。在本發(fā)明實施例中,所述系數(shù)的大小可以根據(jù)所需預(yù)留的余量來確定,其取值范圍可以是75%到90%之間,例如,可以取值為80%。
[0044]可選地,所述任務(wù)調(diào)度器20通知所述工作進(jìn)程隊列30中的下載速度排名靠前的預(yù)定數(shù)目個工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速。例如,假設(shè)工作進(jìn)程隊列30中工作進(jìn)程的數(shù)量為100,則可以向下載速度排名在前10% (即下載速度排名在前10位)的工作進(jìn)程發(fā)送限速通知。
[0045]在本發(fā)明實施例中,工作進(jìn)程接收到限速通知后,可以按照預(yù)定周期將自己進(jìn)行休眠,例如,以I秒鐘為單位進(jìn)行休眠(即休眠I秒鐘、工作I秒鐘、休眠I秒鐘、工作I秒鐘,以此類推),使下載任務(wù)單位時間內(nèi)獲取的數(shù)據(jù)量變小,這樣就達(dá)到了限速的目的。例如下載任務(wù)的速度已經(jīng)達(dá)到5M/S,即I秒鐘下載5M數(shù)據(jù),當(dāng)任務(wù)得到限速通知后,會將自己休眠I秒,這樣任務(wù)就是在2秒鐘下載了 5M的數(shù)據(jù)量,速度降到了 2.5M/s,這樣服務(wù)器的瞬時帶寬也就降了下來。相應(yīng)地,當(dāng)工作進(jìn)程接收到恢復(fù)速度通知后,停止上述的休眠過程。
[0046]可選地,所述帶寬調(diào)節(jié)裝置還可以包括等待任務(wù)隊列40,所述等待任務(wù)隊列40中包括多個排隊的下載任務(wù)條目,當(dāng)有下載任務(wù)到達(dá)時,首先進(jìn)入該等待任務(wù)隊列40中排隊。
[0047]此種情況下,所述任務(wù)調(diào)度器20還適于在當(dāng)前正在執(zhí)行的下載任務(wù)的數(shù)目小于預(yù)設(shè)的任務(wù)并發(fā)數(shù)(任務(wù)并發(fā)數(shù)的確定方式可參見前文)時,從所述等待任務(wù)隊列40中提取下載任務(wù),將提取的下載任務(wù)交給工作進(jìn)程隊列中30的工作進(jìn)程進(jìn)行處理。工作進(jìn)程接收到下載任務(wù)后,執(zhí)行該下載任務(wù),初始化時,工作進(jìn)程對該下載任務(wù)進(jìn)行全速下載。這樣,服務(wù)器就能夠為盡可能多的用戶提供離線下載服務(wù),減小了用戶下載任務(wù)的排隊等待時間,較大程度的顧及了用戶的體驗與感受。
[0048]任務(wù)調(diào)度器20可以采取各種任務(wù)獲取算法來從等待任務(wù)隊列40中提取下載任務(wù)。在一種實現(xiàn)方式中,任務(wù)調(diào)度器20可以使用先進(jìn)先出算法來從等待任務(wù)隊列40中提取下載任務(wù),先進(jìn)入等待任務(wù)隊列40的下載任務(wù)會被優(yōu)先處理。先進(jìn)先出算法的優(yōu)點在于對用戶相對公平,且實現(xiàn)簡單。
[0049]在另外一種實現(xiàn)方式中,任務(wù)調(diào)度器20可以采取小文件優(yōu)先的任務(wù)獲取算法來從等待任務(wù)隊列40中提取下載任務(wù),也就是說不是先到的下載任務(wù)就一定會先被處理。主要是由于每個下載任務(wù)對應(yīng)的要下載的資源的大小不同,如果將小文件放在大文件之后進(jìn)行下載,這樣要下載小文件的用戶勢必增加了等待時間,而對于下載大文件的用戶,本身下載時間比較長,多增加一些等待時間對用戶影響較小。所以可以采用小文件優(yōu)先的任務(wù)獲取算法,即按照下載任務(wù)對應(yīng)的目標(biāo)文件的從小到大的順序來提取下載任務(wù),小文件對應(yīng)的下載任務(wù)會被優(yōu)先提取。
[0050]小文件優(yōu)先的任務(wù)獲取算法存在的一個問題是可能存在餓死現(xiàn)象,就是一直有比較小的文件加入等待任務(wù)隊列40,導(dǎo)致大文件一直不能被提取,一種處于等待狀態(tài)。為解決該問題,在又一種實現(xiàn)方式中,采用小文件優(yōu)先加最長等待時間的任務(wù)選取算法來提取任務(wù)。具體地,所述等待任務(wù)隊列40中還存儲有排隊的下載任務(wù)的等待時間,所述任務(wù)調(diào)度器20在執(zhí)行小文件優(yōu)先的任務(wù)獲取算法之前,從所述等待任務(wù)隊列40中提取等待時間超過預(yù)設(shè)的任務(wù)最長等待時間的下載任務(wù)。也就是說,當(dāng)?shù)却龝r間超過了任務(wù)最長等待時間時,無論文件的大小是多少,都會被優(yōu)先選擇,進(jìn)行下載。其中,任務(wù)最長等待時間可以根據(jù)需要合理設(shè)置,例如,可以設(shè)置為5分鐘。
[0051]與本發(fā)明實施例的上述帶寬調(diào)節(jié)裝置相對應(yīng),本發(fā)明實施例還提供一種帶寬調(diào)節(jié)方法。圖2示出了根據(jù)本發(fā)明一個實施例的帶寬調(diào)節(jié)方法的流程圖,參照圖2,所述帶寬調(diào)節(jié)方法可以包括:
[0052]步驟202,定時獲取服務(wù)器中所有正在執(zhí)行的下載任務(wù)的下載速度,將所有下載速度匯總后得到服務(wù)器的當(dāng)前帶寬;
[0053]服務(wù)器中可以設(shè)置有定時器、工作進(jìn)程隊列和任務(wù)調(diào)度器,所述工作進(jìn)程隊列包括多個工作進(jìn)程條目,每一個工作進(jìn)程執(zhí)行一個下載任務(wù),當(dāng)所述定時器的定時時間到達(dá)時,觸發(fā)所述任務(wù)調(diào)度器從所述工作進(jìn)程隊列獲取工作進(jìn)程,向所有工作進(jìn)程發(fā)起查詢資源下載速度的請求,獲得所有下載任務(wù)的資源下載速度后匯總得到服務(wù)器的當(dāng)前帶寬(或者稱為當(dāng)前帶寬占用)。
[0054]步驟204,判斷服務(wù)器的當(dāng)前帶寬是否達(dá)到預(yù)設(shè)的帶寬閾值,若是,進(jìn)入步驟206,若否,進(jìn)入步驟208 ;
[0055]步驟206,在確定服務(wù)器的當(dāng)前帶寬達(dá)到預(yù)設(shè)的帶寬閾值時,通知工作進(jìn)程隊列中的工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速;
[0056]步驟208,在確定服務(wù)器的當(dāng)前帶寬未達(dá)到預(yù)設(shè)的帶寬閾值時,通知全部或部分正在限速的工作進(jìn)程停止對相應(yīng)的下載任務(wù)進(jìn)行限速。
[0057]需要說明的是,上述步驟208是可選步驟,在步驟204中,當(dāng)判斷結(jié)果為否時,也可以不執(zhí)行步驟208。也就是說,接收到限速通知的工作進(jìn)程可以一直對當(dāng)前執(zhí)行的下載任務(wù)進(jìn)行限速,直到當(dāng)前下載任務(wù)下載完所需下載的文件或資源,之后,所述工作進(jìn)程可以執(zhí)行其他下載任務(wù),對于所述其他下載任務(wù),初始化時是以全速下載,當(dāng)所述工作進(jìn)程再次接收到限速通知時,對執(zhí)行的所述其他下載任務(wù)進(jìn)行限速。
[0058]可選地,所述通知工作進(jìn)程隊列中的工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速具體為:通知工作進(jìn)程隊列中的下載速度排名靠前的預(yù)定數(shù)目個工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速。
[0059]可選地,所述預(yù)設(shè)的帶寬閾值為服務(wù)器的最大允許帶寬與一系數(shù)之積,所述系數(shù)小于等于I。
[0060]可選地,所述帶寬調(diào)節(jié)方法還包括:在當(dāng)前正在執(zhí)行的下載任務(wù)的數(shù)目小于預(yù)設(shè)的任務(wù)并發(fā)數(shù)時,從等待任務(wù)隊列中提取下載任務(wù),將提取的下載任務(wù)交給工作進(jìn)程隊列中的工作進(jìn)程進(jìn)行處理,其中,所述等待任務(wù)隊列包括多個排隊的下載任務(wù)條目。
[0061]可選地,所述從等待任務(wù)隊列中提取下載任務(wù)具體為:采取小文件優(yōu)先的任務(wù)獲取算法從所述等待任務(wù)隊列中提取下載任務(wù)。
[0062]可選地,在執(zhí)行小文件優(yōu)先的任務(wù)獲取算法之前,從所述等待任務(wù)隊列中提取等待時間超過預(yù)設(shè)的任務(wù)最長等待時間的下載任務(wù)。
[0063]綜上所述,根據(jù)本發(fā)明實施例的帶寬調(diào)節(jié)裝置及方法,通過將服務(wù)器的當(dāng)前帶寬與預(yù)設(shè)的帶寬閾值進(jìn)行比較,來動態(tài)調(diào)節(jié)各工作進(jìn)程對資源的下載速度,實現(xiàn)了對服務(wù)器工作帶寬的動態(tài)調(diào)節(jié),從而提高了服務(wù)器的資源利用率。在任務(wù)量飽和的情況下,能夠充分利用服務(wù)器的帶寬,并且基本不會造成帶寬溢出,達(dá)到了同時能給盡可能多的用戶提供服務(wù)的效果
[0064]在此提供的算法和顯示不與任何特定計算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
[0065]在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細(xì)節(jié)的情況下實踐。在一些實例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
[0066]類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循【具體實施方式】的權(quán)利要求書由此明確地并入該【具體實施方式】,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
[0067]本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
[0068]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實施例的任意之一都可以以任意的組合方式來使用。
[0069]本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的動態(tài)帶寬調(diào)節(jié)裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機(jī)程序和計算機(jī)程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機(jī)可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
[0070]應(yīng)該注意的是上述實施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機(jī)來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
【權(quán)利要求】
1.一種帶寬調(diào)節(jié)裝置,包括定時器、任務(wù)調(diào)度器和工作進(jìn)程隊列,其中: 所述工作進(jìn)程隊列包括多個工作進(jìn)程條目,每一個工作進(jìn)程執(zhí)行一個下載任務(wù); 所述定時器,適于定時通知所述任務(wù)調(diào)度器根據(jù)所述工作進(jìn)程隊列包括的工作進(jìn)程所執(zhí)行的下載任務(wù)來獲取服務(wù)器的當(dāng)前帶寬; 所述任務(wù)調(diào)度器,適于根據(jù)所述定時器的通知,獲取所有正在執(zhí)行的下載任務(wù)的下載速度,將所有下載速度匯總后得到服務(wù)器的當(dāng)前帶寬,并在確定服務(wù)器的當(dāng)前帶寬達(dá)到預(yù)設(shè)的帶寬閾值時,通知所述工作進(jìn)程隊列中的工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速。
2.如權(quán)利要求1所述的帶寬調(diào)節(jié)裝置,其中,所述任務(wù)調(diào)度器通知所述工作進(jìn)程隊列中的下載速度排名靠前的預(yù)定數(shù)目個工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速。
3.如權(quán)利要求1或2所述的帶寬調(diào)節(jié)裝置,其中,所述任務(wù)調(diào)度器還適于在確定服務(wù)器的當(dāng)前帶寬未達(dá)到預(yù)設(shè)的帶寬閾值時,通知全部或部分正在限速的工作進(jìn)程停止對相應(yīng)的下載任務(wù)進(jìn)行限速。
4.如權(quán)利要求1所述的帶寬調(diào)節(jié)裝置,其中,還包括等待任務(wù)隊列,所述等待任務(wù)隊列包括多個排隊的下載任務(wù)條目; 所述任務(wù)調(diào)度器還適于在當(dāng)前正在執(zhí)行的下載任務(wù)的數(shù)目小于預(yù)設(shè)的任務(wù)并發(fā)數(shù)時,從所述等待任務(wù)隊列中提取下載任務(wù),將提取的下載任務(wù)交給工作進(jìn)程隊列中的工作進(jìn)程進(jìn)行處理。
5.如權(quán)利要求4所述的帶寬調(diào)節(jié)裝置,其中,所述任務(wù)調(diào)度器采取小文件優(yōu)先的任務(wù)獲取算法從所述等待任務(wù)隊列中提取下載任務(wù)。
6.如權(quán)利要求5所述的帶寬調(diào)節(jié)裝置,其中,所述等待任務(wù)隊列中還存儲有排隊的下載任務(wù)的等待時間; 所述任務(wù)調(diào)度器在執(zhí)行小文件優(yōu)先的任務(wù)獲取算法之前,從所述等待任務(wù)隊列中提取等待時間超過預(yù)設(shè)的任務(wù)最長等待時間的下載任務(wù)。
7.一種帶寬調(diào)節(jié)方法,包括: 定時獲取服務(wù)器中所有正在執(zhí)行的下載任務(wù)的下載速度,將所有下載速度匯總后得到服務(wù)器的當(dāng)前帶寬; 在確定服務(wù)器的當(dāng)前帶寬達(dá)到預(yù)設(shè)的帶寬閾值時,通知工作進(jìn)程隊列中的工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速,其中,所述工作進(jìn)程隊列包括多個工作進(jìn)程條目,每一個工作進(jìn)程執(zhí)行一個下載任務(wù)。
8.如權(quán)利要求7所述的帶寬調(diào)節(jié)方法,其中,所述通知工作進(jìn)程隊列中的工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速具體為:通知工作進(jìn)程隊列中的下載速度排名靠前的預(yù)定數(shù)目個工作進(jìn)程對相應(yīng)的下載任務(wù)進(jìn)行限速。
9.如權(quán)利要求7或8所述的帶寬調(diào)節(jié)方法,其中,還包括:在確定服務(wù)器的當(dāng)前帶寬未達(dá)到預(yù)設(shè)的帶寬閾值時,通知全部或部分正在限速的工作進(jìn)程停止對相應(yīng)的下載任務(wù)進(jìn)行限速。
10.如權(quán)利要求7所述的帶寬調(diào)節(jié)方法,其中,還包括:在當(dāng)前正在執(zhí)行的下載任務(wù)的數(shù)目小于預(yù)設(shè)的任務(wù)并發(fā)數(shù)時,從等待任務(wù)隊列中提取下載任務(wù),將提取的下載任務(wù)交給工作進(jìn)程隊列中的工作進(jìn)程進(jìn)行處理,其中,所述等待任務(wù)隊列包括多個排隊的下載任務(wù)條目。
【文檔編號】G06F9/50GK103533032SQ201310451320
【公開日】2014年1月22日 申請日期:2013年9月26日 優(yōu)先權(quán)日:2013年9月26日
【發(fā)明者】陳奪 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司