調(diào)度的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種對(duì)與多程序化計(jì)算系統(tǒng)中的可運(yùn)行件(runnable)相關(guān)聯(lián)的調(diào)度參數(shù)進(jìn)行調(diào)整的方法、一種計(jì)算機(jī)程序產(chǎn)品以及可操作為執(zhí)行該方法的調(diào)度單元。
【背景技術(shù)】
[0002]典型的多程序化計(jì)算系統(tǒng),諸如包括運(yùn)行多個(gè)進(jìn)程的操作系統(tǒng)(OS)、或者運(yùn)行多個(gè)虛擬機(jī)(VM)的虛擬機(jī)監(jiān)測(cè)器(VMM)的那些系統(tǒng),可運(yùn)行實(shí)體(包括多個(gè)進(jìn)程或VM的“可運(yùn)行件”)的調(diào)度是由調(diào)度器來(lái)執(zhí)行的。OS或VMM運(yùn)行時(shí)間(runtime)的調(diào)度器通常被配置為根據(jù)與每個(gè)可運(yùn)行件相關(guān)聯(lián)的參數(shù)來(lái)實(shí)施調(diào)度。當(dāng)可運(yùn)行件正在等待接收數(shù)據(jù)分組時(shí),與該可運(yùn)行件相關(guān)聯(lián)的調(diào)度狀態(tài)從“準(zhǔn)備運(yùn)行”改變?yōu)椤八摺?或暫停)。如果調(diào)度器接收到用于睡眠中的可運(yùn)行件的分組,則運(yùn)行時(shí)間被配置為喚醒該可運(yùn)行件并且將其調(diào)度狀態(tài)從睡眠(或暫停)改變回到準(zhǔn)備運(yùn)行。
[0003]僅當(dāng)調(diào)度器根據(jù)已經(jīng)被配置在與可運(yùn)行件有關(guān)的調(diào)度器處的調(diào)度參數(shù)而決定這樣做時(shí),該可運(yùn)行件才在可用的CPU上被調(diào)度。
[0004]例如,如果可運(yùn)行件被配置具有選定的固定優(yōu)先級(jí),并且運(yùn)行時(shí)間調(diào)度器操作為根據(jù)固定的優(yōu)先級(jí)調(diào)度規(guī)制來(lái)調(diào)度可運(yùn)行件,則可運(yùn)行件一旦被接收到系統(tǒng)內(nèi)的分組所喚醒,僅當(dāng)沒有更高優(yōu)先級(jí)的準(zhǔn)備運(yùn)行的可運(yùn)行件將在它之前被調(diào)度時(shí)才能夠運(yùn)行。
[0005]當(dāng)前的調(diào)度方案可能導(dǎo)致未預(yù)見到的問(wèn)題。期望提供調(diào)度技術(shù)的一種替換實(shí)施方式。
【發(fā)明內(nèi)容】
[0006]因此,第一方面提供了:一種調(diào)整與多程序化計(jì)算系統(tǒng)中的可運(yùn)行件相關(guān)聯(lián)的調(diào)度參數(shù)的方法,該方法包括:分析與數(shù)據(jù)分組相關(guān)聯(lián)的頭部信息,該數(shù)據(jù)分組由計(jì)算系統(tǒng)接收并且被尋址到該可運(yùn)行件;確定與該數(shù)據(jù)分組相關(guān)聯(lián)的該信息是否滿足調(diào)度動(dòng)作觸發(fā)準(zhǔn)則;以及,如果滿足,則根據(jù)與滿足調(diào)度動(dòng)作觸發(fā)準(zhǔn)則相關(guān)聯(lián)的動(dòng)作來(lái)調(diào)整與該可運(yùn)行件相關(guān)聯(lián)的調(diào)度參數(shù)。
[0007]第一方面認(rèn)識(shí)到諸如上文所描述的機(jī)制能夠適用于僅處置一種良好定義的功能或者良好定義的功能的有限集合的可運(yùn)行件。在被配置為執(zhí)行不同的異構(gòu)動(dòng)作(這些異構(gòu)動(dòng)作它們自身處置不同類型的流量)的可運(yùn)行件(諸如在云計(jì)算基礎(chǔ)設(shè)施中的虛擬機(jī))的情況下,能夠動(dòng)態(tài)地重新配置與可運(yùn)行件相關(guān)聯(lián)的調(diào)度參數(shù)可能是有用的。該動(dòng)態(tài)重新配置可以被實(shí)施以使得可運(yùn)行件的調(diào)度參數(shù)或優(yōu)先級(jí)依賴于例如所接收的將被遞送給該可運(yùn)行件的分組的性質(zhì)而被變更或維持。
[0008]第一方面認(rèn)識(shí)到,如果可運(yùn)行件操作為在已經(jīng)接收到分組之后重新配置它自身的調(diào)度參數(shù)(例如,在已經(jīng)接收到分組之后,通過(guò)使用稱為標(biāo)準(zhǔn)POSIX sched_setparam()syscall的進(jìn)程用于根據(jù)所接收的分組的類型來(lái)調(diào)節(jié)調(diào)度優(yōu)先級(jí)),該機(jī)制不太可能導(dǎo)致所期望的結(jié)果。特別地,當(dāng)分組被VMM或OS運(yùn)行時(shí)間排隊(duì)以被可運(yùn)行件接收時(shí),該可運(yùn)行件的調(diào)度狀態(tài)被切換回到準(zhǔn)備運(yùn)行,導(dǎo)致它僅在根據(jù)已有的調(diào)度參數(shù)而被調(diào)度器認(rèn)為適當(dāng)時(shí)才被實(shí)際地運(yùn)行。因此,將意識(shí)到,僅在可運(yùn)行件已經(jīng)被運(yùn)行時(shí)間調(diào)度器調(diào)度為接收分組之后,才能執(zhí)行對(duì)改變與該可運(yùn)行件相關(guān)聯(lián)的調(diào)度優(yōu)先級(jí)采取行動(dòng)。
[0009]第一方面認(rèn)識(shí)到,令人合意的是實(shí)施如下的機(jī)制,該機(jī)制只要可運(yùn)行件響應(yīng)于接收到分組而被喚醒,就允許改變與該可運(yùn)行件相關(guān)聯(lián)的調(diào)度參數(shù)。這樣的機(jī)制可以操作以便于精細(xì)調(diào)節(jié)與可運(yùn)行件相關(guān)的調(diào)度器所作出的決定的響應(yīng)性和緊急度,使得可運(yùn)行件能夠根據(jù)將由可運(yùn)行件作為接收到分組的結(jié)果來(lái)執(zhí)行的預(yù)期計(jì)算“工作”,而在可用的(多個(gè))CPU上被調(diào)度。
[0010]在一個(gè)實(shí)施例中,可運(yùn)行件包括:進(jìn)程或虛擬機(jī)。因此,該方法在如下系統(tǒng)中可以是有用的,在該系統(tǒng)中,調(diào)度器或VMM可能通常不了解由虛擬機(jī)對(duì)給定數(shù)據(jù)分組執(zhí)行的工作的性質(zhì)。并不是指定與虛擬機(jī)相關(guān)的靜態(tài)調(diào)度優(yōu)先級(jí),由系統(tǒng)內(nèi)的虛擬機(jī)執(zhí)行的不同功能可以作為調(diào)度參數(shù)的結(jié)果而實(shí)質(zhì)上個(gè)體地被優(yōu)先級(jí)化,這些調(diào)度參數(shù)根據(jù)本方法能夠動(dòng)態(tài)地被更新。
[0011]在一個(gè)實(shí)施例中,調(diào)度參數(shù)包括以下各項(xiàng)中的一項(xiàng)或多項(xiàng):與該可運(yùn)行件相關(guān)聯(lián)的調(diào)度優(yōu)先級(jí)的指示、調(diào)度限期的指示、或者所要求的預(yù)留門限的指示。因此,與觸發(fā)相關(guān)聯(lián)的動(dòng)作可能被配置為能夠應(yīng)對(duì)調(diào)度參數(shù)上的改變以及對(duì)所牽涉的可運(yùn)行件的狀態(tài)的改變。例如,改變用于基于優(yōu)先級(jí)的調(diào)度器的優(yōu)先級(jí);改變用于基于限期的調(diào)度器的限期;改變用于基于預(yù)留的調(diào)度器的預(yù)算和/或時(shí)段。
[0012]在一個(gè)實(shí)施例中,頭部信息包括以下各項(xiàng)中的一項(xiàng)或多項(xiàng):數(shù)據(jù)分組將向其被遞送的特定端口 ;數(shù)據(jù)分組已經(jīng)從其被發(fā)送的特定端口 ;數(shù)據(jù)分組的傳輸時(shí)間的指示;與數(shù)據(jù)分組相關(guān)聯(lián)的調(diào)度限期的指示;在數(shù)據(jù)分組的有效載荷中攜帶的數(shù)據(jù)類型的指示;或者與數(shù)據(jù)分組的有效載荷相關(guān)聯(lián)的優(yōu)先級(jí)的指示。相應(yīng)地,各種觸發(fā)準(zhǔn)則可以被實(shí)施。觸發(fā)指定對(duì)于正在由運(yùn)行時(shí)間處置的每個(gè)網(wǎng)絡(luò)分組而言要檢查的條件;并且如果辨識(shí)出所述條件被滿足,則包含在規(guī)則中的對(duì)應(yīng)動(dòng)作被執(zhí)行。對(duì)觸發(fā)以及響應(yīng)于觸發(fā)而要采取的動(dòng)作進(jìn)行描述的語(yǔ)言使得它包括與以下各項(xiàng)中的一項(xiàng)或多項(xiàng)有關(guān)的條件:調(diào)度狀態(tài)、或者傳入分組的目的地可運(yùn)行件的參數(shù)、或者傳出分組的源可運(yùn)行件。觸發(fā)可以與基于預(yù)留的調(diào)度器中的剩余預(yù)算的可用性而被設(shè)置。例如,可以存在如下的規(guī)則:當(dāng)所接收的分組具有給定的類型,并且目的地可運(yùn)行件預(yù)留之內(nèi)的殘余預(yù)算至少大于預(yù)先選擇的門限值時(shí),該規(guī)則進(jìn)行觸發(fā)。根據(jù)一個(gè)示例,有狀態(tài)的觸發(fā)可以被實(shí)施以使得該觸發(fā)識(shí)別可運(yùn)行件的TCP/IP連接的設(shè)立,或者該觸發(fā)識(shí)別由可運(yùn)行件響應(yīng)于特定HTTP請(qǐng)求而發(fā)送的分組。
[0013]在一個(gè)實(shí)施例中,調(diào)整調(diào)度參數(shù)包括以下各項(xiàng)中的一項(xiàng)或多項(xiàng):增大或減小調(diào)度優(yōu)先級(jí)、更新調(diào)度限期、或者選擇與可運(yùn)行件相關(guān)聯(lián)的資源預(yù)留。與觸發(fā)準(zhǔn)則以及響應(yīng)于觸發(fā)準(zhǔn)則所采取的動(dòng)作兩者相關(guān)的很大程度的靈活性是可能的。用于指定規(guī)則和動(dòng)作的語(yǔ)法(syntax)使得它可以有可能指定牽涉到將被管理的調(diào)度參數(shù)的代數(shù)表達(dá)式,以及規(guī)則被觸發(fā)的時(shí)間。例如,對(duì)于基于限期的調(diào)度策略,有可能說(shuō)每當(dāng)接收到給定協(xié)議/端口的將被遞送給特定可運(yùn)行件的分組時(shí),該可運(yùn)行件的調(diào)度限期被設(shè)置為未來(lái)中的固定時(shí)段。換句話說(shuō),它應(yīng)當(dāng)被設(shè)置等于當(dāng)前時(shí)間加上固定的特定于可運(yùn)行件的相對(duì)限期。
[0014]在一個(gè)實(shí)施例中,在數(shù)據(jù)分組被轉(zhuǎn)發(fā)給可運(yùn)行件之前應(yīng)用對(duì)調(diào)度參數(shù)的調(diào)整。因此,相對(duì)于已有的方法,分組它自己可以立即從與可運(yùn)行件相關(guān)聯(lián)的調(diào)度參數(shù)上的改變中獲益。
[0015]在一個(gè)實(shí)施例中,該方法包括:確定分組是否具有要求響應(yīng)分組通過(guò)計(jì)算系統(tǒng)進(jìn)行傳遞的類型,并且維持對(duì)調(diào)度參數(shù)的調(diào)整至少直到該響應(yīng)分組被檢測(cè)到。此外,根據(jù)一些實(shí)施例,本文所描述的方法的實(shí)施方式的語(yǔ)法允許在分組內(nèi)確定特定于協(xié)議的字段。相應(yīng)地,在觸發(fā)和/或動(dòng)作的指定中,該語(yǔ)法可以允許使用這樣的特定于協(xié)議的信息。例如,在特定的協(xié)議中,可以定義傳達(dá)與以下各項(xiàng)有關(guān)的一些數(shù)字信息的字段:將要執(zhí)行的分布式計(jì)算的優(yōu)先級(jí)、或者自從分布式計(jì)算的開始以來(lái)的累積延遲、或者指代貫穿于分布式計(jì)算中的某個(gè)特定時(shí)刻的時(shí)間戳。被觸發(fā)的規(guī)則可以操作為基于作為觸發(fā)的一部分而確定的值、要執(zhí)行的關(guān)聯(lián)動(dòng)作、或者兩者來(lái)計(jì)算簡(jiǎn)單的代數(shù)表達(dá)式。例如,可以實(shí)施如下的規(guī)則,這些規(guī)則允許在特定的網(wǎng)絡(luò)協(xié)議的上下文中通過(guò)將一個(gè)時(shí)間段添加到從分組的頭部讀取的時(shí)間戳來(lái)設(shè)置調(diào)度限期。
[0016]在一個(gè)實(shí)施例中,如果在選定的時(shí)段內(nèi)不存在被尋址到該可運(yùn)行件或者來(lái)自于該可運(yùn)行件的數(shù)據(jù)分組,則該方法包括:將調(diào)度參數(shù)設(shè)置為與該可運(yùn)行件相關(guān)聯(lián)的默認(rèn)值。
[0017]將意識(shí)到,取決于系統(tǒng)的OS或VMM架構(gòu),每當(dāng)網(wǎng)絡(luò)分組需要由多個(gè)可調(diào)度實(shí)體(例如,內(nèi)核線程或者常規(guī)線程和進(jìn)程)進(jìn)行處置時(shí),有可能利用所描述的方面和實(shí)施例。多個(gè)方面的機(jī)制能夠在貫穿于網(wǎng)絡(luò)分組的處理管線的各種地方被實(shí)施,并且能夠被配置為控制和精細(xì)調(diào)節(jié)如下的調(diào)度參數(shù),這些調(diào)度參數(shù)控制將接著處理分組的系統(tǒng)可運(yùn)行件以及將最終接收并處置這些分組的(多個(gè))應(yīng)用程序可運(yùn)行件兩者。
[0018]多個(gè)方面和實(shí)施例允許多程序化環(huán)境中的CPU調(diào)度器的行為的定制,該定制考慮到何種類型的網(wǎng)絡(luò)流量正在由所調(diào)度的可運(yùn)行件進(jìn)行處置。這在虛擬化基礎(chǔ)設(shè)施中能夠特別有用,在虛擬化基礎(chǔ)設(shè)施中,單個(gè)VM通常處置具有不同定時(shí)要求的異構(gòu)類型的行為,包括批量活動(dòng)以及實(shí)時(shí)的交互和多媒體活動(dòng)。
[0019]第二方面提供了一種計(jì)算機(jī)程序產(chǎn)品,可操作為當(dāng)在計(jì)算機(jī)上運(yùn)行時(shí)執(zhí)行第一方面的方法。
[0020]第三方面提供了一種調(diào)度單元,可操作為調(diào)整與多程序化計(jì)算系統(tǒng)中的可運(yùn)行件相關(guān)聯(lián)的調(diào)度參數(shù),該調(diào)度單元包括:分析邏輯,可操作為分析與數(shù)據(jù)分組相關(guān)聯(lián)的頭部信息,該數(shù)據(jù)分組由計(jì)算系統(tǒng)接收并且被尋址到該運(yùn)行件或者來(lái)自于該可運(yùn)行件;觸發(fā)邏輯,可操作為確定與該數(shù)據(jù)分組相關(guān)聯(lián)的該信息是否滿足調(diào)度動(dòng)作觸發(fā)準(zhǔn)則;以及動(dòng)作邏輯,可操作為根據(jù)與滿足調(diào)度動(dòng)作觸發(fā)準(zhǔn)則相關(guān)聯(lián)的動(dòng)作來(lái)調(diào)整與該可運(yùn)行件相關(guān)聯(lián)的調(diào)度參數(shù)。
[0021]在一個(gè)實(shí)施例中,可運(yùn)行件包括:進(jìn)程或虛擬機(jī)。
[002