專利名稱:基于實(shí)際負(fù)載和資源可用性的io資源動(dòng)態(tài)創(chuàng)建和銷毀的制作方法
基于實(shí)際負(fù)載和資源可用性的IO資源動(dòng)態(tài)創(chuàng)建和銷毀
背景技術(shù):
一些現(xiàn)代計(jì)算系統(tǒng)架構(gòu)利用物理上和概念上分離的節(jié)點(diǎn)來(lái)改變計(jì)算硬件的速度。在這些架構(gòu)中,輸入/輸出器件可以位于計(jì)算機(jī)上的各種物理位置中。分離節(jié)點(diǎn)上的不同應(yīng)用和處理可以使用每個(gè)輸入/輸出器件。在這些架構(gòu)上執(zhí)行的內(nèi)核元件可以負(fù)責(zé)促進(jìn)輸入/輸出器件與物理上遠(yuǎn)離該器件的應(yīng)用之間的通信。
發(fā)明內(nèi)容
大體上,在一方面,本發(fā)明涉及一種非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),其包括軟件指令,該軟件指令在由處理器運(yùn)行時(shí)執(zhí)行一種方法。所述方法包括:非一致存儲(chǔ)器訪問(wèn)(NUMA)輸入/輸出(I/O)框架將I/O對(duì)象組綁定到系統(tǒng)上的多個(gè)NUMA節(jié)點(diǎn)中的NUMA節(jié)點(diǎn);獲得所述I/O對(duì)象組的I/O對(duì)象組大??;以及基于所述I/O對(duì)象組的I/O對(duì)象組總負(fù)載來(lái)確定I/O對(duì)象組目標(biāo)大小。所述方法還包括:所述NUMA I/O框架對(duì)所述I/O對(duì)象組目標(biāo)大小和所述I/O對(duì)象組總負(fù)載進(jìn)行比較;所述NUMA I/O框架確定所述I/O對(duì)象組目標(biāo)大小與所述I/O對(duì)象組總負(fù)載之間的差超過(guò)閾值;以及所述NUMA I/O框架指令與所述I/O對(duì)象組相關(guān)聯(lián)的I/O子系統(tǒng)改變所述I/O對(duì)象組大小,其中,所述I/O子系統(tǒng)響應(yīng)于所述指令而改變所述I/O對(duì)象組大小。大體上,在一方面,本發(fā)明涉及一種包括多個(gè)非一致存儲(chǔ)器訪問(wèn)(NUMA)節(jié)點(diǎn)的系統(tǒng)。所述多個(gè)NUMA節(jié)點(diǎn)每個(gè)包括處理器和存儲(chǔ)器。所述系統(tǒng)還包括在所述多個(gè)NUMA節(jié)點(diǎn)中的至少一個(gè)上執(zhí)行的NUMA I/O框架,其被配置為:將I/O對(duì)象組綁定到所述NUMA節(jié)點(diǎn);獲得所述I/O對(duì)象組的I/O對(duì)象組大小;基于所述I/O對(duì)象組的I/O對(duì)象組總負(fù)載來(lái)確定I/O對(duì)象組目標(biāo)大?。灰约皩?duì)所述I/O對(duì)象組目標(biāo)大小和所述I/O對(duì)象組大小進(jìn)行比較。所述NUMA I/O框架還被配置為:響應(yīng)于確定所述I/O對(duì)象組目標(biāo)大小與所述I/O對(duì)象組大小之間的差超過(guò)閾值而將所述I/O對(duì)象組目標(biāo)大小發(fā)送到與所述I/O對(duì)象組相關(guān)聯(lián)的I/O子系統(tǒng);以及指令所述I/O子系統(tǒng)利用所述I/O對(duì)象組目標(biāo)大小來(lái)改變所述I/O對(duì)象組大小。所述系統(tǒng)還包括在所述多個(gè)NUMA節(jié)點(diǎn)中的至少一個(gè)上執(zhí)行的I/O子系統(tǒng),其被配置為:接收所述I/O對(duì)象組目標(biāo)大??;接收改變所述I/O對(duì)象組大小的指令;以及使用所述I/O對(duì)象組目標(biāo)大小來(lái)改變所述I/O對(duì)象組大小,其中,在所述改變之后,所述I/O對(duì)象組大小等于所述I/O對(duì)象組目標(biāo)大小。大體上,在一方面,本發(fā)明涉及一種用于將輸入/輸出(I/O)對(duì)象綁定到節(jié)點(diǎn)的方法。所述方法包括:非一致存儲(chǔ)器訪問(wèn)(NUMA)輸入/輸出(I/O)框架將I/O對(duì)象組綁定到系統(tǒng)上的多個(gè)NUMA節(jié)點(diǎn)中的NUMA節(jié)點(diǎn),其中所述I/O對(duì)象組包括與線程對(duì)應(yīng)的第一 I/O對(duì)象以及與中斷對(duì)應(yīng)的第二 I/O對(duì)象;獲得所述I/O對(duì)象組的I/O對(duì)象組大??;基于所述第一 I/O對(duì)象的第一 I/O對(duì)象有效負(fù)載以及所述第二 I/O對(duì)象的第二 I/O對(duì)象有效負(fù)載來(lái)確定I/O對(duì)象組目標(biāo)大?。凰鯪UMA I/O框架對(duì)所述I/O對(duì)象組目標(biāo)大小與所述I/O對(duì)象組大小進(jìn)行比較;所述NUMA I/O框架確定所述I/O對(duì)象組目標(biāo)大小與所述I/O對(duì)象組大小之間的差超過(guò)閾值;以及所述NUMA I/O框架指令與所述I/O對(duì)象組關(guān)聯(lián)的網(wǎng)絡(luò)媒體訪問(wèn)連接(MAC)層改變所述I/O對(duì)象組大小,其中所述網(wǎng)絡(luò)MAC層響應(yīng)于所述指令而改變所述I/O對(duì)象組大小。
圖1示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的系統(tǒng)。圖2示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的NUMA節(jié)點(diǎn)。圖3示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的I/O器件組。圖4示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的系統(tǒng)。圖5示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的I/O拓?fù)淠K。圖6示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的地點(diǎn)組模塊。圖7示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的負(fù)載平衡模塊。圖8示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的I/O對(duì)象組。圖9示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的流程圖。圖10示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的流程圖。圖11示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的流程圖。圖12示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的流程圖。圖13示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的流程圖。圖14A示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的示例性系統(tǒng)。圖14B示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的示例性時(shí)間線。圖15示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的系統(tǒng)。
具體實(shí)施例方式
將參照附圖描述本發(fā)明的示例性實(shí)施例。附圖中相似的項(xiàng)以相同的附圖標(biāo)記示出。在本發(fā)明實(shí)施例中,闡述大量具體細(xì)節(jié)以提供對(duì)本發(fā)明的更透徹理解。然而對(duì)本領(lǐng)域技術(shù)人員而言將顯然的是,可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐本發(fā)明。在其它實(shí)例中,并未詳細(xì)描述公知特征,以免模糊本發(fā)明。通常,本發(fā)明的實(shí)施例涉及用于管理具有非一致存儲(chǔ)器訪問(wèn)(NUMA)架構(gòu)的系統(tǒng)上的輸入/輸出(I/o)資源的框架。更特別地,本發(fā)明的實(shí)施例涉及用于動(dòng)態(tài)地安置I/o資源和將I/O資源重新分配給NUMA節(jié)點(diǎn)的方法和系統(tǒng)。圖1示出根據(jù)本發(fā)明一實(shí)施例的系統(tǒng)。如圖1所示,該系統(tǒng)包括節(jié)點(diǎn)A(100A)、節(jié)點(diǎn)B (100B)、節(jié)點(diǎn)C (100C)和節(jié)點(diǎn)N (IOON)0每個(gè)節(jié)點(diǎn)(節(jié)點(diǎn)A (100A)、節(jié)點(diǎn)B (100B)、節(jié)點(diǎn) C (100C)和節(jié)點(diǎn) N (100N))操作上經(jīng)由互連(IC) (IC A (102A)、IC B (102B)、ICC (102C)、IC N (102N))連接到一個(gè)或多個(gè)其它節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)(節(jié)點(diǎn)A (100A)、節(jié)點(diǎn)B(100B)、節(jié)點(diǎn)C (100C)和節(jié)點(diǎn)N (100N))也操作上連接到一個(gè)或多個(gè)I/O器件組(I/O器件組 A (104A)、I/O 器件組 D (104D)、I/O 器件組 C (104C)、I/O 器件組 B (104B)、I/0 器件組E (104E)、I/O器件組N (104N))(見(jiàn)圖3)。該系統(tǒng)還包括I/O子系統(tǒng)(106)和NUMAI/O框架(108)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,圖1描述的系統(tǒng)架構(gòu)可以操作為具有NUMA架構(gòu)的系統(tǒng)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,IC (IC A (102A)、IC B (102B)、IC C(102C)、IC N (102N))可以實(shí)現(xiàn)為能夠在NUMA架構(gòu)系統(tǒng)上的節(jié)點(diǎn)之間傳送數(shù)據(jù)的計(jì)算機(jī)總線或數(shù)據(jù)鏈路。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,I/O子系統(tǒng)(106)(又稱為I/O框架)提供系統(tǒng)處理與各種系統(tǒng)I/o功能之間的抽象層。具體地說(shuō),I/O子系統(tǒng)(106)可以對(duì)利用該框架的軟件實(shí)體如何與彼此通信進(jìn)行多種控制,并且可以包括用于另外其他系統(tǒng)目的(例如電源管理、消耗方優(yōu)先級(jí)等)的機(jī)制。I/O子系統(tǒng)(例如I/O子系統(tǒng)(106))的示例包括但不限于存儲(chǔ)棧、InfiniBand ULP (InfiniBand是InfiniBand貿(mào)易協(xié)會(huì)的注冊(cè)商標(biāo))以及網(wǎng)絡(luò)MAC層。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,每個(gè)I/O子系統(tǒng)從其它軟件實(shí)體接收使用或訪問(wèn)其關(guān)聯(lián)的I/o器件的請(qǐng)求。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,每個(gè)I/O子系統(tǒng)包括管理服務(wù)于該請(qǐng)求所需的I/o資源的功能。I/O受管理資源可以包括例如線程、中斷(interrupt)以及軟件接收環(huán)(ring)。此外,I/O子系統(tǒng)(106)可以通過(guò)初始化與受管理資源對(duì)應(yīng)的I/O對(duì)象來(lái)管理其關(guān)聯(lián)資源。(見(jiàn)圖8)。此外,由一個(gè)或多個(gè)I/O子系統(tǒng)(106)管理的I/O資源可以在單個(gè)節(jié)點(diǎn)(例如節(jié)點(diǎn)A (100A))上、在多個(gè)節(jié)點(diǎn)(例如節(jié)點(diǎn)A (100A)和節(jié)點(diǎn)B (100B))上或在單個(gè)系統(tǒng)內(nèi)的所有節(jié)點(diǎn)上存在或運(yùn)行。I/O子系統(tǒng)(106)中的每個(gè)也可以在單個(gè)節(jié)點(diǎn)(例如節(jié)點(diǎn)A (100A))上、在多個(gè)節(jié)點(diǎn)(例如節(jié)點(diǎn)A (100A)和節(jié)點(diǎn)B (100B))上或在單個(gè)系統(tǒng)內(nèi)的所有節(jié)點(diǎn)上運(yùn)行。相應(yīng)地,為了示范,I/O子系統(tǒng)(106)和NUMA I/O框架(108)在圖1中示為在系統(tǒng)上的其它元件的外部。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,NUMA I/O框架(108)是I/O子系統(tǒng)(106)與下面的NUMA架構(gòu)(例如圖1所示的系統(tǒng))之間的抽象層。NUMA I/O框架(108)承擔(dān)確定何處以及如何處理I/O對(duì)象(例如對(duì)I/O資源的引用)的所有責(zé)任。具體地說(shuō),NUMA I/O框架管理由I/O子系統(tǒng)(106)管理的I/O資源的物理位置。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,NUMA I/O框架使用為了進(jìn)一步的系統(tǒng)目標(biāo)而實(shí)施的策略或信息收集模塊來(lái)確定I/O對(duì)象的安置。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,NUMA I/O框架(108)將I/O資源綁定到系統(tǒng)上的一個(gè)或多個(gè)節(jié)點(diǎn)。將I/o資源綁定到節(jié)點(diǎn)可以包括:向內(nèi)核調(diào)度器通知將要在I/O資源綁定到的一個(gè)或多個(gè)節(jié)點(diǎn)上執(zhí)行與I/o資源關(guān)聯(lián)的指令。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,一旦I/O資源綁定到一個(gè)或多個(gè)節(jié)點(diǎn)(例如經(jīng)由I/O對(duì)象),源自該I/O資源的指令或消息就被調(diào)度為用于在其綁定到的節(jié)點(diǎn)上執(zhí)行,直到存在NUMA I/O框架(108)的進(jìn)一步干預(yù)。在本發(fā)明的一個(gè)實(shí)施例中,I/O資源可以綁定到節(jié)點(diǎn)的子集(例如經(jīng)由I/O對(duì)象)。作為綁定I/O資源的一部分,NUMA I/O框架(108)可以提供關(guān)于節(jié)點(diǎn)子集的內(nèi)核調(diào)度器信息。內(nèi)核調(diào)度器然后可以選擇在節(jié)點(diǎn)子集中的哪個(gè)節(jié)點(diǎn)上調(diào)度指令或消息以用于執(zhí)行。圖2示出根據(jù)本發(fā)明一實(shí)施例的節(jié)點(diǎn)。如圖2所示,節(jié)點(diǎn)A (200A)操作上經(jīng)由IC(IC A (202A)、IC N (202N))連接到節(jié)點(diǎn) B (200B)和節(jié)點(diǎn) N (200N)。節(jié)點(diǎn) A (200A)包括經(jīng)由總線(210 )連接到存儲(chǔ)器(208 )的中央處理單元(CPU) (204)和高速緩存(cache ) (206 )。系統(tǒng)中的其它節(jié)點(diǎn)中的每個(gè)(節(jié)點(diǎn)B (200B)、節(jié)點(diǎn)N (200C))可以包括與節(jié)點(diǎn)A (200A)中所描述的那些基本相似的元件。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,存儲(chǔ)器(208)包括本地應(yīng)用存儲(chǔ)器和本地內(nèi)核存儲(chǔ)器。可以分配一部分本地內(nèi)核存儲(chǔ)器,以供系統(tǒng)側(cè)軟件元件(例如I/o子系統(tǒng)、NUMA I/O框架等)使用。在本發(fā)明一實(shí)施例中,存儲(chǔ)器(208)在對(duì)于節(jié)點(diǎn)A (200A)上的CPU (204)特定的存儲(chǔ)器管理器的控制之下,節(jié)點(diǎn)B (200B)的存儲(chǔ)器(未示出)在對(duì)于節(jié)點(diǎn)B (200B)的CPU (未示出)特定的存儲(chǔ)器管理器的控制之下。換言之,上述架構(gòu)與所有CPU從單個(gè)存儲(chǔ)器管理器競(jìng)爭(zhēng)存儲(chǔ)器的架構(gòu)相比可以更高效地操作。可以在除了上述系統(tǒng)架構(gòu)之外的系統(tǒng)架構(gòu)上實(shí)施本發(fā)明的其它實(shí)施例。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,可以用變化的頻率來(lái)接收利用CPU (204)和存儲(chǔ)器(208)在節(jié)點(diǎn)A (200A)上執(zhí)行的處理和其它指令集。例如,如果節(jié)點(diǎn)具有每秒處理10條指令的能力,但每秒僅接收5條指令,則該節(jié)點(diǎn)被稱為是利用不足的。如果同一節(jié)點(diǎn)替代地每秒接收12條指令,則該節(jié)點(diǎn)被稱為是利用過(guò)度的。節(jié)點(diǎn)的I/O負(fù)載容量指的是節(jié)點(diǎn)在不變得利用過(guò)度的情況下可以處理的額外指令量的量化(例如,利用不足的節(jié)點(diǎn)相對(duì)于節(jié)點(diǎn)的總處理能力將具有高I/O負(fù)載容量)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,每個(gè)節(jié)點(diǎn)(節(jié)點(diǎn)A (200A)、節(jié)點(diǎn)B (200B)、節(jié)點(diǎn)N(200B))可以操作地連接到一個(gè)或多個(gè)I/O器件組。如圖2所示的那樣,節(jié)點(diǎn)A (200A)操作上連接到一個(gè)或多個(gè)I/O器件組(10器件組A (212A)、I/0器件組N(212N))。在本發(fā)明一實(shí)施例中,I/O器件組中的一個(gè)或多個(gè)(例如I/O器件組A (212A)、I/0器件組N (212N))可以經(jīng)由IC連接到一個(gè)或多個(gè)節(jié)點(diǎn)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,NUMA節(jié)點(diǎn)可以包括CPU (例如CPU (204)),而不包括存儲(chǔ)器。替代地,在本發(fā)明一實(shí)施例中,NUMA節(jié)點(diǎn)可以包括存儲(chǔ)器(例如存儲(chǔ)器(208)),但不包括CPU。圖3示出根據(jù)本發(fā)明一實(shí)施例的I/O器件組。如圖3所示,I/O器件組(300)包括一個(gè)或多個(gè)I/o器件(10器件A (302A)、I/0器件N (302N)),其操作上連接到I/O總線(304),I/O總線(304)進(jìn)而操作上連接到I/O橋(306)。I/O橋(306)操作上連接到一個(gè)或多個(gè)節(jié)點(diǎn)(節(jié)點(diǎn)A (308A)、節(jié)點(diǎn)N (308N))(例如圖1中的節(jié)點(diǎn)A (100A))。在本發(fā)明一實(shí)施例中,I/O器件(10器件A (302A)、I/O器件N (302N))指的是連接到計(jì)算機(jī)系統(tǒng)的資源,其可以由在系統(tǒng)上執(zhí)行的程序使用,以用于信息輸入和/或信息輸出。這種器件的示例可以包括但不限于盤(pán)驅(qū)動(dòng)器、網(wǎng)絡(luò)接口卡、打印機(jī)、通用串行總線(USB)等。本領(lǐng)域技術(shù)人員應(yīng)理解,存在這里未列出的其它I/O器件。圖4示出根據(jù)本發(fā)明一實(shí)施例的系統(tǒng)。具體地說(shuō),圖4示出根據(jù)本發(fā)明一實(shí)施例在系統(tǒng)的一個(gè)或多個(gè)節(jié)點(diǎn)(例如圖1中的節(jié)點(diǎn)A (200A)、節(jié)點(diǎn)B (200B)和節(jié)點(diǎn)N (200N))上執(zhí)行的軟件實(shí)體之間的交互。如圖4所示,系統(tǒng)包括NUMA I/O框架(400),其直接地或經(jīng)由內(nèi)核親和性API (404)與I/O子系統(tǒng)(402)進(jìn)行通信。I/O子系統(tǒng)(402)促進(jìn)消耗方(406)與I/O器件(408)之間的通信(經(jīng)由器件驅(qū)動(dòng)器(410))。I/O子系統(tǒng)也可以從管理工具(412)接收I/O對(duì)象約束或限制信息。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,NUMA I/O框架(400)利用多個(gè)專用模塊來(lái)執(zhí)行具體任務(wù)和收集信息。這些模塊包括NUMA內(nèi)核存儲(chǔ)器分配模塊(414)、I/O負(fù)載平衡模塊(416)、NUMA地點(diǎn)(1cality)組模塊(418)和I/0拓?fù)淠K(420)。以下詳細(xì)描述這些元件中的每一個(gè)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,消耗方(消耗方(406))指的是利用或試圖利用系統(tǒng)的I/o資源的處理和程序。消耗方可以在內(nèi)核級(jí)別操作(例如,作為操作系統(tǒng)的一部分),或可以在用戶級(jí)別操作(例如,作為應(yīng)用的一部分)。I/o資源可以包括I/O器件(例如I/O器件(408))、處理資源(例如圖2中的CPU (204)和存儲(chǔ)器(208))以及促進(jìn)處理與I/O器件之間的通信的其它系統(tǒng)元件(例如中斷、接收環(huán)、監(jiān)聽(tīng)方等),并且可以包括物理或虛擬元件。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,I/O子系統(tǒng)(402)管理服務(wù)于從消耗方(406)接收到的訪問(wèn)I/O器件(408)的請(qǐng)求所需的I/O資源。這些請(qǐng)求可以包括調(diào)用以打開(kāi)到I/O器件(408)的連接、或建立經(jīng)由適當(dāng)I/O子系統(tǒng)(402)的數(shù)據(jù)鏈路。I/O子系統(tǒng)(402)可以還包括如下功能:初始化或?qū)嵗疘/O對(duì)象,以及將I/O對(duì)象與I/O資源關(guān)聯(lián)。具體地說(shuō),I/O子系統(tǒng)(402)可以創(chuàng)建包括對(duì)I/O資源的引用的I/O對(duì)象,其可以然后被提供給NUMAI/O框架(400)作為綁定I/O資源的請(qǐng)求的一部分(見(jiàn)圖8)。在本發(fā)明一實(shí)施例中,多個(gè)I/O對(duì)象可以引用單個(gè)資源或者資源的集合,反之,單個(gè)I/O資源或I/O資源的集合可以對(duì)應(yīng)于多個(gè)I/O對(duì)象。在本發(fā)明一實(shí)施例中,NUMA I/O框架(400)從I/O子系統(tǒng)(402)接收I/O對(duì)象??梢越?jīng)由內(nèi)核親和性API (404)接收I/O對(duì)象,內(nèi)核親和性API (404)為I/O子系統(tǒng)(402)提供接口以將I/O對(duì)象注冊(cè)到NUMA I/O框架(400)。此外,注冊(cè)到NUMA I/O框架(400)的I/O對(duì)象可以包括關(guān)于I/O對(duì)象分組、I/O對(duì)象之間的親和性以及與I/O對(duì)象關(guān)聯(lián)的任何約束的信息。NUMA I/O框架(400)使用親和性來(lái)確定I/O對(duì)象應(yīng)綁定到的適當(dāng)?shù)囊粋€(gè)或多個(gè)節(jié)點(diǎn)。(例如,物理上彼此靠近的節(jié)點(diǎn)、物理上靠近所指定的I/O器件的節(jié)點(diǎn)等)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,I/O對(duì)象以一個(gè)或多個(gè)I/O對(duì)象組(見(jiàn)圖8)發(fā)送到NUMA I/O框架(400)。在本發(fā)明一實(shí)施例中,NUMA I/O框架(400)將I/O對(duì)象綁定到節(jié)點(diǎn)。在本發(fā)明一實(shí)施例中,綁定I/o對(duì)象指的是將I/O對(duì)象所引用的I/O資源發(fā)布的任務(wù)(例如處理中斷、執(zhí)行線程)分配給系統(tǒng)上的一個(gè)或多個(gè)節(jié)點(diǎn)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,NUMA I/O框架(400)使用I/O對(duì)象內(nèi)的信息(例如親和性)以及來(lái)自系統(tǒng)上的其它模塊的信息和這些模塊的功能以完成綁定。下面分別關(guān)于圖5、圖6和圖7討論負(fù)載平衡模塊(416)、地點(diǎn)組模塊(418)和I/O拓?fù)淠K(420)。在本發(fā)明一實(shí)施例中,NUMA I/O框架(400)可以根據(jù)一個(gè)或多個(gè)目的來(lái)綁定I/O對(duì)象。例如,NUMA I/O框架(400)可以綁定I/O對(duì)象以使得整個(gè)系統(tǒng)的性能最大化。替代地,NUMA I/O框架(400)可以按照最高效地使用系統(tǒng)資源的方式來(lái)綁定I/O對(duì)象。NUMA I/O框架(400)也可以綁定I/O對(duì)象以使得執(zhí)行一個(gè)或所有處理的速度最大化。NUMA I/O框架(400)可以按照使得正使用的I/O器件與綁定到關(guān)聯(lián)的I/O對(duì)象的節(jié)點(diǎn)之間的距離最小化的方式來(lái)綁定I/O對(duì)象。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,內(nèi)核存儲(chǔ)器分配模塊(414)允許NUMA I/O框架(400)分配來(lái)自任何附連節(jié)點(diǎn)的內(nèi)核存儲(chǔ)器(例如來(lái)自圖2中節(jié)點(diǎn)A (200A)中的存儲(chǔ)器(208))。在本發(fā)明一實(shí)施例中,負(fù)載平衡模塊(416)監(jiān)視每個(gè)節(jié)點(diǎn)執(zhí)行的工作量??紤]到資源管理和I/O拓?fù)?即節(jié)點(diǎn)相對(duì)于彼此的位置),NUMA I/O框架使用該信息來(lái)對(duì)節(jié)點(diǎn)之間的工作進(jìn)行動(dòng)態(tài)平衡。在本發(fā)明一實(shí)施例中,系統(tǒng)節(jié)點(diǎn)進(jìn)行的工作量或處理速率被稱為節(jié)點(diǎn)的I/O負(fù)載。圖5示出根據(jù)本發(fā)明一實(shí)施例的I/O拓?fù)淠K。如圖5所示,I/O拓?fù)淠K(500)包括一個(gè)或多個(gè)I/o器件記錄(I/O器件記錄A (502A)、I/O器件記錄N (502N))。I/O拓?fù)淠K(500)使用從I/O子系統(tǒng)(例如圖4中的I/O子系統(tǒng)(402))收集到的信息來(lái)為系統(tǒng)上的每個(gè)I/o器件(例如圖4中的I/O器件(408))創(chuàng)建I/O器件記錄。每個(gè)I/O器件記錄(例如I/O器件記錄A (502A)、I/0器件記錄N (502N))包括指示哪些系統(tǒng)節(jié)點(diǎn)直接連接到I/o器件的信息。替代地,在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,由I/O拓?fù)淠K(500)可訪問(wèn)的系統(tǒng)上的其它內(nèi)核元件創(chuàng)建和維護(hù)I/o器件記錄。關(guān)于系統(tǒng)上的每個(gè)I/O器件的位置的信息可以被稱為I/o拓?fù)?。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,I/O拓?fù)淠K(500)包括如下功能:對(duì)NUMA I/O框架的詢問(wèn)進(jìn)行響應(yīng),從而對(duì)于給定的I/O器件,I/O拓?fù)淠K(500)返回直接連接到該I/O器件的一個(gè)或多個(gè)節(jié)點(diǎn)。在本發(fā)明一實(shí)施例中,這些節(jié)點(diǎn)被稱為優(yōu)選節(jié)點(diǎn)。圖6示出根據(jù)本發(fā)明一實(shí)施例的地點(diǎn)組模塊。如圖6所示,地點(diǎn)組模塊(600)包括一個(gè)或多個(gè)地點(diǎn)組(例如節(jié)點(diǎn)A地點(diǎn)組(602A)、節(jié)點(diǎn)N地點(diǎn)組(602N))。每個(gè)地點(diǎn)組維護(hù)關(guān)于系統(tǒng)上的節(jié)點(diǎn)的信息。該信息可以包括在系統(tǒng)上該節(jié)點(diǎn)相對(duì)于其它節(jié)點(diǎn)的位置(即,哪些節(jié)點(diǎn)與該節(jié)點(diǎn)直接相鄰)。關(guān)于系統(tǒng)上的每個(gè)節(jié)點(diǎn)的位置的信息可以被稱為NUMA拓?fù)?。在本發(fā)明一實(shí)施例中,節(jié)點(diǎn)或I/O器件之間的距離指的是兩個(gè)元件之間的物理距離。在本發(fā)明一實(shí)施例中,該距離可以指的是兩個(gè)元件之間的節(jié)點(diǎn)數(shù)(又稱為“跳”)。此外,在本發(fā)明一實(shí)施例中,可以關(guān)于數(shù)據(jù)從一個(gè)節(jié)點(diǎn)行進(jìn)到另一節(jié)點(diǎn)所需的時(shí)間(又稱為節(jié)點(diǎn)之間的等待時(shí)間(latency))來(lái)表示節(jié)點(diǎn)之間的距離。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,地點(diǎn)組模塊(600)包括如下功能:對(duì)NUMA I/O框架的詢問(wèn)進(jìn)行響應(yīng),從而對(duì)于給定的節(jié)點(diǎn),地點(diǎn)組模塊(600 )返回直接連接到該節(jié)點(diǎn)的一個(gè)或多個(gè)節(jié)點(diǎn)。在本發(fā)明一實(shí)施例中,這些節(jié)點(diǎn)被稱為優(yōu)選節(jié)點(diǎn)。圖7示出根據(jù)本發(fā)明一實(shí)施例的負(fù)載平衡模塊。如圖7所示,負(fù)載平衡模塊(700)包括一個(gè)或多個(gè)負(fù)載監(jiān)視器(例如節(jié)點(diǎn)A負(fù)載監(jiān)視器(702A)、節(jié)點(diǎn)N負(fù)載監(jiān)視器(702N))。每個(gè)負(fù)載監(jiān)視器(例如節(jié)點(diǎn)A負(fù)載監(jiān)視器(702A)、節(jié)點(diǎn)N負(fù)載監(jiān)視器(702N))維護(hù)關(guān)于對(duì)應(yīng)節(jié)點(diǎn)利用和I/O負(fù)載容量的信息(例如CPU利用、存儲(chǔ)器利用等)。具體地說(shuō),每個(gè)負(fù)載監(jiān)視器(例如節(jié)點(diǎn)A負(fù)載監(jiān)視器(702A)、節(jié)點(diǎn)N負(fù)載監(jiān)視器(702N))獲得指定度規(guī)(metric)的周期性測(cè)量(例如CPU利用、存儲(chǔ)器利用等),并且使用測(cè)量來(lái)計(jì)算節(jié)點(diǎn)的I/O負(fù)載。在本發(fā)明一實(shí)施例中,I/O負(fù)載包括反映所測(cè)量的度規(guī)的趨勢(shì)方向的指示符(例如在過(guò)去的10個(gè)周期上增大的CPU利用)。此外,在本發(fā)明一實(shí)施例中,每個(gè)負(fù)載監(jiān)視器(例如節(jié)點(diǎn)A負(fù)載監(jiān)視器(702A)、節(jié)點(diǎn)N負(fù)載監(jiān)視器(702N))包括如下功能:隨時(shí)間跟蹤度規(guī),并且檢測(cè)I/O負(fù)載的模式(例如CPU利用在星期一下午2點(diǎn)至5點(diǎn)之間最大)。I/O負(fù)載還用于計(jì)算節(jié)點(diǎn)I/O負(fù)載容量。圖8示出根據(jù)本發(fā)明一實(shí)施例的I/O對(duì)象組。如圖8所示,I/O對(duì)象組(800)包括一個(gè)或多個(gè)I/o對(duì)象(例如I/O對(duì)象A (802A)、I/0對(duì)象N (802N))。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,I/O對(duì)象是封裝對(duì)應(yīng)的I/O資源的句柄或?qū)?duì)應(yīng)的I/O資源的引用的軟件結(jié)構(gòu)。每個(gè)I/O對(duì)象可以還包括與其它I/O對(duì)象的一個(gè)或多個(gè)親和性、關(guān)于I/O對(duì)象綁定的約束、以及專用CPU標(biāo)記。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,親和性是I/O對(duì)象之間的關(guān)系強(qiáng)度的數(shù)量指示(例如無(wú)關(guān)系、弱關(guān)系、強(qiáng)關(guān)系、負(fù)關(guān)系等)。兩個(gè)I/O對(duì)象(I/O對(duì)象A (802A)、I/O對(duì)象N(802N))之間的親和性定義I/O對(duì)象可以或應(yīng)綁定到的節(jié)點(diǎn)之間的最大或最小允許距離。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,由管理I/O對(duì)象的I/O子系統(tǒng)指定親和性。
在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,I/O子系統(tǒng)創(chuàng)建與一起工作以執(zhí)行一部分I/O操作的I/o資源對(duì)應(yīng)的I/O對(duì)象(例如I/O對(duì)象A (802A)、I/0對(duì)象N (802N))之間的親和性。例如,與用于虛擬網(wǎng)絡(luò)接口卡所接收到的業(yè)務(wù)的中斷對(duì)應(yīng)的I/O對(duì)象可以具有與處理同一虛擬網(wǎng)絡(luò)接口卡上的數(shù)據(jù)的其它中斷和線程對(duì)應(yīng)的其它I/O對(duì)象的強(qiáng)親和性。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,約束可以指定I/O對(duì)象或I/O對(duì)象組必須綁定到的節(jié)點(diǎn)或節(jié)點(diǎn)組。約束可以用于將I/o對(duì)象或I/O對(duì)象組限制到所批準(zhǔn)的或適當(dāng)?shù)墓?jié)點(diǎn)集合。約束可以用于將一個(gè)I/o對(duì)象或I/O對(duì)象組與其他的相隔離。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,I/o子系統(tǒng)可以使用約束來(lái)強(qiáng)制分離系統(tǒng)上的區(qū)域或容器(container)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,專用CPU標(biāo)記可以指示I/O對(duì)象應(yīng)綁定到具有可用于專用于I/o對(duì)象的CPU的節(jié)點(diǎn)。NUMA I/O框架可以將專用CPU標(biāo)記解釋為絕對(duì)限制,或替代地解釋為優(yōu)選。在本發(fā)明一實(shí)施例中,專用CPU標(biāo)記可以包括指示優(yōu)選強(qiáng)度的其它信息。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,I/O對(duì)象包括與和I/O對(duì)象關(guān)聯(lián)的I/O資源所產(chǎn)生的I/O負(fù)載有關(guān)的信息。具體地說(shuō),I/O對(duì)象可以包括表示將在I/O對(duì)象綁定到的節(jié)點(diǎn)上施加的預(yù)期I/O負(fù)載的值。替代地,I/O對(duì)象可以包括允許NUMA I/O框架從系統(tǒng)上的另外地方獲得與I/O對(duì)象關(guān)聯(lián)的I/O負(fù)載的信息。此外,一旦I/O對(duì)象綁定到節(jié)點(diǎn),就測(cè)量該節(jié)點(diǎn)上的I/O對(duì)象所產(chǎn)生的負(fù)載。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,所測(cè)量的I/O對(duì)象的I/o負(fù)載被稱為有效I/O負(fù)載或I/O對(duì)象有效負(fù)載。測(cè)量可以用于更新表示I/O對(duì)象的預(yù)期I/o負(fù)載的值。在本發(fā)明一實(shí)施例中,一旦綁定I/O對(duì)象,就周期性地進(jìn)行測(cè)量,并且測(cè)量被用于更新I/o對(duì)象的預(yù)期I/O負(fù)載。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,I/O對(duì)象可以作為I/O對(duì)象組(800)提交給NUMAI/O框架。I/O對(duì)象組(800)可以包括應(yīng)用于I/O對(duì)象組(800)內(nèi)的所有I/O對(duì)象的親和性或約束。此外,在本發(fā)明一實(shí)施例中,NUMA I/O框架可以向I/O對(duì)象組(800)內(nèi)的所有I/O對(duì)象應(yīng)用固有的親和性或約束。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,I/O對(duì)象組(800)中的多個(gè)I/O對(duì)象涉及同一I/o資源或I/O資源集合。在本發(fā)明一實(shí)施例中,使用與單個(gè)I/O資源或I/O資源集合相關(guān)聯(lián)的多個(gè)I/o對(duì)象允許I/O對(duì)象組(800)包含多個(gè)I/O資源集合或I/O資源集合的組合。圖9示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的用于將新I/O器件注冊(cè)到NUMA I/O框架的流程圖。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,圖9所示的一個(gè)或多個(gè)步驟可以被省略、重復(fù)和/或按與圖9所示不同的順序執(zhí)行。相應(yīng)地,圖9所示的步驟的具體布置方式不應(yīng)理解為限制本發(fā)明的范圍。在步驟910中,I/O拓?fù)淠K檢測(cè)新I/O器件附連到系統(tǒng)。在步驟912中,I/O拓?fù)淠K創(chuàng)建新I/o器件記錄。在步驟914中,I/O拓?fù)淠K將新I/O器件信息加入到I/O器件記錄。在步驟916中,I/O拓?fù)淠K從地點(diǎn)組模塊或從其它系統(tǒng)資源(例如BIOS、機(jī)器描述等)獲得新I/O器件的位置信息。該信息可以包括未直接連接到I/O器件的對(duì)于I/O器件最接近的節(jié)點(diǎn)。在步驟918中,I/O拓?fù)淠K使用從地點(diǎn)組模塊所獲得的位置信息來(lái)更新I/O器件記錄。圖10示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的I/O子系統(tǒng)服務(wù)于請(qǐng)求的流程圖。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,可以省略、重復(fù)和/或按與圖10所示不同的順序執(zhí)行圖10所示的一個(gè)或多個(gè)步驟。相應(yīng)地,圖10所示的步驟的具體布置方式不應(yīng)理解為限制本發(fā)明的范圍。在步驟1010中,處理將請(qǐng)求發(fā)送到I/O子系統(tǒng),以使用I/O器件。所述請(qǐng)求可以是例如這樣的請(qǐng)求:創(chuàng)建與網(wǎng)絡(luò)接口卡關(guān)聯(lián)的數(shù)據(jù)鏈路,從而其他處理可以穿過(guò)網(wǎng)絡(luò)發(fā)送數(shù)據(jù)。替代地,請(qǐng)求可以是獲取對(duì)存儲(chǔ)器件的訪問(wèn),以更改位于該器件上的數(shù)據(jù)。到來(lái)的請(qǐng)求的其它示例包括來(lái)自網(wǎng)絡(luò)棧的請(qǐng)求(例如創(chuàng)建VNIC)以及來(lái)自文件系統(tǒng)的請(qǐng)求。在步驟1012中,I/O子系統(tǒng)確定服務(wù)于該請(qǐng)求所需的資源。這可以包括例如線程的具體數(shù)量和中斷的具體數(shù)量。在本發(fā)明一實(shí)施例中,該確定是基于先前所服務(wù)的相似請(qǐng)求的需求的。在本發(fā)明一實(shí)施例中,由于分析使用信息,因此所確定的資源可以隨時(shí)間而改變。例如,創(chuàng)建處理與物理網(wǎng)絡(luò)之間的連接的I/O子系統(tǒng)可以配置為創(chuàng)建指定數(shù)量的用于線程的I/o對(duì)象以及指定數(shù)量的用于中斷的I/O對(duì)象,以用于所創(chuàng)建的類型的連接。I/O子系統(tǒng)可以進(jìn)一步配置為指定線程不應(yīng)在分離節(jié)點(diǎn)上執(zhí)行,因?yàn)檫@樣做可能導(dǎo)致對(duì)于連接不可接受量的緩慢性或數(shù)據(jù)丟失。為此,I/o子系統(tǒng)可以通過(guò)指定I/O對(duì)象之間的強(qiáng)親和性來(lái)表示這點(diǎn)。在步驟1014中,I/O子系統(tǒng)創(chuàng)建用于所需資源的I/O對(duì)象。在步驟1016中,I/O子系統(tǒng)將I/o對(duì)象發(fā)送到NUMA I/O框架。在本發(fā)明一實(shí)施例中,通過(guò)援引親和性內(nèi)核API的方法調(diào)用來(lái)創(chuàng)建I/O對(duì)象。在步驟1018中,I/O子系統(tǒng)指定供NUMA I/O框架使用的I/O對(duì)象之間的親和性。在步驟1020中,NUMA I/O框架基于策略和親和性而將I/O對(duì)象綁定到節(jié)點(diǎn)。關(guān)于圖10和圖11詳細(xì)說(shuō)明步驟1020。圖11示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的用于確定I/O對(duì)象組總負(fù)載的流程圖。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,可以省略、重復(fù)和/或按與圖11所示不同的順序執(zhí)行圖11所示的一個(gè)或多個(gè)步驟。相應(yīng)地,圖11所示的步驟的具體布置方式不應(yīng)理解為限制本發(fā)明的范圍。雖然關(guān)于圖11所討論的步驟描述為由負(fù)載平衡模塊執(zhí)行,但在本發(fā)明一實(shí)施例中,NUMA I/O框架可以直接執(zhí)行這些步驟。在步驟1110中,負(fù)載平衡模塊接收I/O對(duì)象組。在步驟1112中,NUMA I/O框架選擇第一 I/O對(duì)象,從而與I/O對(duì)象關(guān)聯(lián)的預(yù)期I/O負(fù)載尚未加入到I/O對(duì)象組總負(fù)載(被稱為未標(biāo)記的I/O對(duì)象)。在步驟1114中,所選擇的I/O對(duì)象的預(yù)期I/O負(fù)載加入到I/O對(duì)象組總負(fù)載。在步驟1116中,對(duì)所選擇的I/O對(duì)象進(jìn)行標(biāo)記。在本發(fā)明一實(shí)施例中,對(duì)I/O對(duì)象進(jìn)行標(biāo)記,從而其預(yù)期I/O負(fù)載將不會(huì)被加入到I/O對(duì)象組總負(fù)載超過(guò)一次。在步驟1118中,負(fù)載平衡模塊確定是否任何未標(biāo)記的I/O對(duì)象余留在I/O對(duì)象組中。如果至少一個(gè)未標(biāo)記的I/o對(duì)象余留在I/O對(duì)象組中,則流程返回到步驟1112。如果沒(méi)有未標(biāo)記的I/o對(duì)象余留在I/O對(duì)象組中,則在步驟1120中,負(fù)載平衡模塊將I/O對(duì)象組總負(fù)載提供給NUMA I/O框架。圖12示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的用于通過(guò)NUMAI/0框架綁定I/O對(duì)象的流程圖。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,可以省略、重復(fù)和/或按與圖12所示不同的順序執(zhí)行圖12所示的一個(gè)或多個(gè)步驟。相應(yīng)地,圖12所示的步驟的具體布置方式不應(yīng)理解為限制本發(fā)明的范圍。在步驟1210中,NUMA I/O框架接收將I/O對(duì)象組綁定到NUMA節(jié)點(diǎn)集合的請(qǐng)求。在步驟1212中,NUMA I/O框架獲得對(duì)于I/O對(duì)象組中的每個(gè)I/O對(duì)象的I/O對(duì)象親和性。在本發(fā)明一實(shí)施例中,假定在I/O對(duì)象組中的所有I/O對(duì)象之間的親和性。在步驟1214中,NUMAI/0框架確定I/O對(duì)象組約束。在本發(fā)明一實(shí)施例中,親和性和約束嵌入在所接收到的I/O對(duì)象中。在步驟1216中,NUMA I/O框架從負(fù)載平衡模塊獲得I/O對(duì)象組總負(fù)載。在步驟1218中,NUMA I/O框架利用關(guān)于I/O對(duì)象親和性和約束的信息以及關(guān)于I/o對(duì)象獲得的任何其它限制或指示(包括專用CPU標(biāo)記的存在)來(lái)確定節(jié)點(diǎn)選擇要求。在本發(fā)明一實(shí)施例中,節(jié)點(diǎn)選擇要求指定綁定I/o對(duì)象組將要考慮的節(jié)點(diǎn)或節(jié)點(diǎn)集合必須滿足的條件集合。這些條件可以包括距I/o器件設(shè)定距離內(nèi)的節(jié)點(diǎn)的具體布置。在本發(fā)明一實(shí)施例中,所述條件可以包括選擇節(jié)點(diǎn)的I/o負(fù)載容量。在本發(fā)明一實(shí)施例中,節(jié)點(diǎn)選擇要求可以僅被多于一個(gè)的節(jié)點(diǎn)所滿足。例如,如果I/O對(duì)象組中的一個(gè)I/O對(duì)象具有專用CPU標(biāo)記,I/O對(duì)象組中沒(méi)有其他對(duì)象可被置于同一節(jié)點(diǎn)上,則節(jié)點(diǎn)選擇要求將需要要求使用多于一個(gè)的節(jié)點(diǎn)。因此,節(jié)點(diǎn)選擇要求可以需要I/O對(duì)象組綁定到節(jié)點(diǎn)或節(jié)點(diǎn)的組合,二者都可以被稱為節(jié)點(diǎn)集合或節(jié)點(diǎn)的集合。因此,節(jié)點(diǎn)集合可以由單個(gè)節(jié)點(diǎn)或節(jié)點(diǎn)組合構(gòu)成。在本發(fā)明一實(shí)施例中,只要I/O對(duì)象組存在,用于I/O對(duì)象組的節(jié)點(diǎn)選擇要求就一直存在。在本發(fā)明一實(shí)施例中,系統(tǒng)的節(jié)點(diǎn)上的I/o負(fù)載可以不同,從而NUMA I/O框架將I/O對(duì)象組重新綁定到不同的節(jié)點(diǎn)集合。在此情況下,I/O對(duì)象組移動(dòng)到的節(jié)點(diǎn)集合也必須滿足相同的節(jié)點(diǎn)選擇要求。在步驟1220中,NUMA I/O框架使用負(fù)載平衡模塊來(lái)確定主優(yōu)選NUMA節(jié)點(diǎn)集合。具體地說(shuō),NUMA I/O框架詢問(wèn)負(fù)載平衡模塊以確定具有至少等于I/O對(duì)象組總負(fù)載的I/O負(fù)載容量的節(jié)點(diǎn)集合。在本發(fā)明一實(shí)施例中,NUMA I/O框架也可以詢問(wèn)I/O拓?fù)淠K以確定具有必要I/O負(fù)載容量的哪個(gè)或哪些節(jié)點(diǎn)最接近于I/O器件。在本發(fā)明一實(shí)施例中,主優(yōu)選NUMA節(jié)點(diǎn)集合是包括必要I/O負(fù)載容量的最接近于I/O器件的節(jié)點(diǎn)集合。替代地,NUMA I/O框架可以確定主優(yōu)選NUMA節(jié)點(diǎn)集合是具有大于必要I/O負(fù)載容量的最高I/O負(fù)載容量的節(jié)點(diǎn)集合。在本發(fā)明一實(shí)施例中,使用這些因素的組合來(lái)確定主優(yōu)選NUMA節(jié)點(diǎn)集
入
口 ο在步驟1222中,NUMA I/O框架確定是否存在I/O對(duì)象組中的I/O對(duì)象可以綁定到的多于一個(gè)的主優(yōu)選NUMA節(jié)點(diǎn)集合。具體地說(shuō),NUMA I/O框架確定是否任何主優(yōu)選NUMA節(jié)點(diǎn)集合都滿足節(jié)點(diǎn)選擇要求(即,是否可用)。如果存在多于一個(gè)的可用主優(yōu)選NUMA節(jié)點(diǎn)集合,則在步驟1224中,基于選擇策略而選擇主優(yōu)選NUMA節(jié)點(diǎn)集合之一。在本發(fā)明一實(shí)施例中,當(dāng)存在兩個(gè)節(jié)點(diǎn)或節(jié)點(diǎn)集合都可以同樣地滿足節(jié)點(diǎn)選擇要求時(shí),根據(jù)選擇策略選擇滿意的主優(yōu)選NUMA節(jié)點(diǎn)集合之一。在本發(fā)明一實(shí)施例中,選擇策略規(guī)定選擇具有最高I/O負(fù)載容量的節(jié)點(diǎn)集合(如果存在變化)。在本發(fā)明一實(shí)施例中,選擇策略規(guī)定選擇最接近于I/O器件的節(jié)點(diǎn)集合(如果存在變化)。在本發(fā)明一實(shí)施例中,選擇策略指定隨機(jī)地選擇一個(gè)主優(yōu)選NUMA節(jié)點(diǎn)集合。替代地,選擇策略可以獨(dú)立于用于確定主優(yōu)選NUMA節(jié)點(diǎn)集合的系統(tǒng)目標(biāo)而促進(jìn)其它系統(tǒng)目標(biāo)。如果沒(méi)有多于一個(gè)的主優(yōu)選NUMA節(jié)點(diǎn)集合可用,則在步驟1226中,NUMA I/O框架確定是否存在滿足節(jié)點(diǎn)選擇要求的一個(gè)主優(yōu)選NUMA節(jié)點(diǎn)集合。如果存在一個(gè)主優(yōu)選NUMA節(jié)點(diǎn)集合,則在步驟1228中,選擇該主優(yōu)選NUMA節(jié)點(diǎn)集合。
如果不存在主優(yōu)選NUMA節(jié)點(diǎn)集合,則在步驟1230中,NUMAI/0框架確定次優(yōu)選NUMA節(jié)點(diǎn)集合。具體地說(shuō),NUMA I/O框架詢問(wèn)負(fù)載平衡模塊以獲得具有至少等于I/O對(duì)象組總負(fù)載的I/O負(fù)載容量的節(jié)點(diǎn)集合。根據(jù)該節(jié)點(diǎn)列表,將主優(yōu)選節(jié)點(diǎn)集合標(biāo)記為不可用。從其余節(jié)點(diǎn)的列表確定次優(yōu)選節(jié)點(diǎn)集合。在本發(fā)明一實(shí)施例中,次優(yōu)選NUMA節(jié)點(diǎn)集合是來(lái)自包括必要I/O負(fù)載容量的最接近I/o器件的其余節(jié)點(diǎn)的列表的節(jié)點(diǎn)集合。在本發(fā)明一實(shí)施例中,NUMA I/O框架可以詢問(wèn)地點(diǎn)組模塊以確定直接連接到最接近于I/O器件的節(jié)點(diǎn)的一個(gè)或多個(gè)節(jié)點(diǎn)。替代地,NUMAI/O框架可以來(lái)自其余節(jié)點(diǎn)的該列表的次優(yōu)選NUMA節(jié)點(diǎn)集合是具有大于必要I/O負(fù)載容量的最高I/O負(fù)載容量的節(jié)點(diǎn)集合。在本發(fā)明一實(shí)施例中,使用這些因素的組合從其余節(jié)點(diǎn)的列表確定次優(yōu)選NUMA節(jié)點(diǎn)集合。在本發(fā)明一實(shí)施例中,如果沒(méi)有主優(yōu)選NUMA節(jié)點(diǎn)集合可用,則系統(tǒng)等待,直到初始確定的主優(yōu)選NUMA節(jié)點(diǎn)集合之一變?yōu)榭捎?。此外,如果沒(méi)有主優(yōu)選NUMA節(jié)點(diǎn)集合可用,則NUMA I/O框架可以將I/O對(duì)象組綁定到不滿足所有節(jié)點(diǎn)選擇要求的節(jié)點(diǎn)集合。例如,如果I/O對(duì)象組中的一個(gè)I/O對(duì)象包括專用CPU標(biāo)記,NUMAI/0框架可以確定I/O對(duì)象組中的所有I/O對(duì)象都可以綁定到相同節(jié)點(diǎn),而不管專用CPU標(biāo)記的存在。在步驟1232中,次優(yōu)選NUMA節(jié)點(diǎn)集合提升為主優(yōu)選NUMA節(jié)點(diǎn)集合,流程返回到步驟1222。一旦選擇了主優(yōu)選NUMA節(jié)點(diǎn)集合,則在步驟1234中,I/O對(duì)象組中的一個(gè)或多個(gè)I/O對(duì)象就綁定到所選擇的主優(yōu)選NUMA節(jié)點(diǎn)集合。圖13示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例的用于調(diào)整I/O對(duì)象組的大小的流程圖。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,可以省略、重復(fù)和/或按與圖13所示不同的順序執(zhí)行圖13所示的一個(gè)或多個(gè)步驟。相應(yīng)地,圖13所示的步驟的具體布置方式不應(yīng)理解為限制本發(fā)明的范圍。在步驟1310中,NUMA I/O框架從負(fù)載平衡模塊獲得更新的I/O對(duì)象組總負(fù)載。更新的I/o對(duì)象組總負(fù)載可以包括例如每個(gè)I/O對(duì)象施加給其綁定到的節(jié)點(diǎn)上的I/O負(fù)載的較新測(cè)量以及I/o對(duì)象組總負(fù)載的重新計(jì)算。NUMA I/O框架還確定I/O對(duì)象組大小(gp,I/O對(duì)象組中I/O對(duì)象的數(shù)量)。在步驟1312中,NUMA I/O框架使用關(guān)于I/O對(duì)象親和性和約束的信息以及關(guān)于I/o對(duì)象所獲得的任何其它限制或指示(包括專用CPU標(biāo)記的存在)來(lái)確定節(jié)點(diǎn)選擇要求。在步驟1314中,NUMA I/O框架詢問(wèn)負(fù)載平衡模塊以獲得系統(tǒng)上每個(gè)節(jié)點(diǎn)的更新后的系統(tǒng)I/O負(fù)載測(cè)量。在本發(fā)明一實(shí)施例中,該更新后的I/O負(fù)載測(cè)量包括系統(tǒng)上每個(gè)節(jié)點(diǎn)的I/O負(fù)載容量和資源利用情況。在步驟1316中,NUMA I/O框架將大小策略應(yīng)用于I/O對(duì)象組總負(fù)載、節(jié)點(diǎn)選擇要求和系統(tǒng)I/o負(fù)載測(cè)量,以確定I/O對(duì)象目標(biāo)大小。在本發(fā)明一實(shí)施例中,大小策略規(guī)定每個(gè)I/O對(duì)象組應(yīng)包括多少I(mǎi)/O對(duì)象(即I/O對(duì)象組目標(biāo)大小)。例如,大小策略可以指定計(jì)算I/O對(duì)象組目標(biāo)大小以使得I/O對(duì)象組總負(fù)載與I/O對(duì)象組目標(biāo)大小之間的特定比率得到維持。此外,大小策略可以指定取決于節(jié)點(diǎn)選擇要求和系統(tǒng)I/o負(fù)載測(cè)量而計(jì)算I/O對(duì)象組目標(biāo)大小。在本發(fā)明一實(shí)施例中,大小策略還可以考慮與I/o對(duì)象組關(guān)聯(lián)的I/O子系統(tǒng)的類型,并且可以賦予一個(gè)I/o對(duì)象組超過(guò)另一 I/O對(duì)象組的優(yōu)先級(jí)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,關(guān)于與I/o對(duì)象組關(guān)聯(lián)的資源的數(shù)量而不是I/O對(duì)象組內(nèi)的I/O對(duì)象的數(shù)量來(lái)計(jì)算I/o對(duì)象組目標(biāo)大小。在步驟1318中,NUMA I/O框架對(duì)當(dāng)前I/O對(duì)象組大小與I/O對(duì)象目標(biāo)大小進(jìn)行比較。在步驟1320中,NUMA I/O框架確定當(dāng)前I/O對(duì)象組大小與I/O對(duì)象目標(biāo)大小之間的差是否超過(guò)閾值。在本發(fā)明一實(shí)施例中,閾值是I/O對(duì)象組大小與I/O對(duì)象目標(biāo)大小之間的最大容忍差的量化。在本發(fā)明一實(shí)施例中,可以設(shè)置閾值以避免以低效的速率改變I/O對(duì)象組的大小(B卩,太頻繁而不必要地浪費(fèi)資源)。在本發(fā)明一實(shí)施例中,可以取決于I/O對(duì)象組的屬性(例如關(guān)聯(lián)的I/O子系統(tǒng)、與I/O對(duì)象對(duì)應(yīng)的I/O資源的類型等)而使用不同的閾值。在本發(fā)明一實(shí)施例中,閾值可以考慮I/O對(duì)象組總負(fù)載隨時(shí)間的預(yù)期易變性,并且響應(yīng)于該預(yù)期而應(yīng)用寬容的閾值。如果在步驟1320中,NUMA I/O框架確定尚未超過(guò)閾值,則流程結(jié)束。如果在步驟1320中,NUMA I/O框架確定已經(jīng)超過(guò)閾值,則NUMA I/O框架確定I/O對(duì)象組目標(biāo)大小大于當(dāng)前I/O對(duì)象組大小。如果I/O對(duì)象組目標(biāo)大小大于當(dāng)前I/O對(duì)象組大小,則在步驟1324中,NUMA I/O框架指令關(guān)聯(lián)的I/O子系統(tǒng)將I/O對(duì)象組中的I/O對(duì)象的數(shù)量增加到I/O對(duì)象組目標(biāo)大小。在本發(fā)明一實(shí)施例中,增加I/O對(duì)象組中的I/O對(duì)象的數(shù)量可以包括:初始化附加I/O對(duì)象,以及將其加入到I/O對(duì)象組。然而,如果I/O對(duì)象組目標(biāo)大小不大于當(dāng)前I/O對(duì)象組大小,則在步驟1326中,NUMA I/O框架指令關(guān)聯(lián)的I/O子系統(tǒng)將I/O對(duì)象組中的I/O對(duì)象的數(shù)量減少到I/O對(duì)象組目標(biāo)大小。在本發(fā)明一實(shí)施例中,減少I(mǎi)/O對(duì)象組中的I/O對(duì)象的數(shù)量可以包括:從I/O對(duì)象組移除I/O對(duì)象,以及釋放對(duì)與該I/O對(duì)象關(guān)聯(lián)的資源的引用。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,NUMA I/O框架指令I(lǐng)/O子系統(tǒng)改變與I/O對(duì)象組關(guān)聯(lián)的I/O資源的數(shù)量。在本發(fā)明一實(shí)施例中,I/O子系統(tǒng)確定如何改變I/O對(duì)象組中的I/O對(duì)象的數(shù)量以滿足NUMA I/O框架指令。圖14A和圖14B示出根據(jù)本發(fā)明一實(shí)施例的示例性系統(tǒng)和時(shí)間線。如圖14A所示,系統(tǒng)包括節(jié)點(diǎn)A (1400A)、節(jié)點(diǎn)B (1400B)、節(jié)點(diǎn)C (1400C)和節(jié)點(diǎn)D (1400D)o節(jié)點(diǎn)A(1400A)經(jīng)由IC A (1402A)連接到節(jié)點(diǎn)B (1400B),并且經(jīng)由IC B (1402B)連接到節(jié)點(diǎn)C(1400C)o 節(jié)點(diǎn) Β(1400Β)經(jīng)由 IC A (1402Α)連接到節(jié)點(diǎn) A (1400Α),并且經(jīng)由 IC CC1402C)連接到節(jié)點(diǎn)D (1400D)o節(jié)點(diǎn)C (1400C)經(jīng)由IC B (1402Β)連接到節(jié)點(diǎn)A (1400Α),并且經(jīng)由IC D (1402D)連接到節(jié)點(diǎn)D (1400D)o節(jié)點(diǎn)D (1400D)經(jīng)由IC C (1402C)連接到節(jié)點(diǎn)B (1400Β),并且經(jīng)由IC D (1402D)連接到節(jié)點(diǎn)C (1400C)o繼續(xù)討論圖14Α,節(jié)點(diǎn)A (1400Α)操作上連接到I/O器件組A (1404Α),節(jié)點(diǎn)B(1400Β)操作上連接到I/O器件組B (1404Β)。此外,節(jié)點(diǎn)C (1400C)和節(jié)點(diǎn)D (1400D)都操作上連接到I/O器件(1404C)。I/O器件C (1404C)包括物理網(wǎng)絡(luò)接口卡(NIC) (1406)。圖14B示出圖14A中的各元件之間的示例性交互的時(shí)間線。為了示例的目的,假設(shè)I/o對(duì)象組綁定到節(jié)點(diǎn)A (1400A)和節(jié)點(diǎn)B (1400B)構(gòu)成的節(jié)點(diǎn)集合。假設(shè)三個(gè)I/O對(duì)象構(gòu)成I/O對(duì)象組(即I/O對(duì)象組大小為三):1/0對(duì)象Χ、Ι/0對(duì)象Y和I/O對(duì)象Z。進(jìn)一步假設(shè)I/O對(duì)象X綁定到節(jié)點(diǎn)A (1400A), I/O對(duì)象Y和I/O對(duì)象Z綁定到節(jié)點(diǎn)B (1400B)。還假設(shè)NUMA I/O框架使用聲明在I/O對(duì)象組目標(biāo)大小與I/O對(duì)象組總負(fù)載之間應(yīng)保持1:3的比率的大小策略。最后,假設(shè)NUMA I/O框架使用被I/O對(duì)象組目標(biāo)大小與當(dāng)前I/O對(duì)象組大小之間的任何差超過(guò)的閾值。在步驟1420中,NUMA I/O框架(1408 )詢問(wèn)負(fù)載平衡模塊以從負(fù)載平衡模塊獲得更新后的I/o對(duì)象組總負(fù)載。為了示例的目的,假設(shè)I/O對(duì)象X具有7的當(dāng)前有效I/O負(fù)載,I/O對(duì)象Y具有6的當(dāng)前有效I/O負(fù)載,I/O對(duì)象Z具有5的當(dāng)前有效I/O負(fù)載。因此,更新后的I/O對(duì)象組總負(fù)載將被確定為18。在步驟1422中,NUMA I/O框架(1408)使用關(guān)于I/O對(duì)象X、I/O對(duì)象Y和I/O對(duì)象Z的信息來(lái)確定節(jié)點(diǎn)選擇要求。為了示例的目的,假設(shè)節(jié)點(diǎn)選擇要求規(guī)定I/O對(duì)象組可以綁定到一個(gè)節(jié)點(diǎn)或兩個(gè)直接連接的節(jié)點(diǎn)的節(jié)點(diǎn)集合。在步驟1424中,NUMA I/O框架(1408)詢問(wèn)負(fù)載平衡模塊(1410)以獲得用于系統(tǒng)上的每個(gè)節(jié)點(diǎn)的更新后的系統(tǒng)I/O負(fù)載測(cè)量。在步驟1426中,NUMA I/O框架(1408)將大小策略應(yīng)用于18的I/O對(duì)象組總負(fù)載和節(jié)點(diǎn)選擇要求(注意,示例性大小策略不考慮系統(tǒng)I/o負(fù)載)。因?yàn)镮/O對(duì)象組總負(fù)載是18,所以I/O對(duì)象目標(biāo)大小被計(jì)算為6,以保持I/O對(duì)象組目標(biāo)大小與I/O對(duì)象組總負(fù)載之間的1:3的比率。在步驟1428中,6的I/O對(duì)象目標(biāo)大小與3的當(dāng)前I/O對(duì)象大小進(jìn)行比較。在步驟1428中,NUMA I/O框架確定I/O對(duì)象目標(biāo)大小與當(dāng)前I/O對(duì)象大小之間的差超過(guò)O的閾值,6的I/O對(duì)象目標(biāo)大小大于3的當(dāng)前I/O對(duì)象大小。在步驟1430中,NUMA I/O框架(1408)指令I(lǐng)/O子系統(tǒng)(1412)將I/O對(duì)象組的大小從3個(gè)I/O對(duì)象增加到6個(gè)I/O對(duì)象。在步驟1432中,I/O子系統(tǒng)(1412)創(chuàng)建新I/O對(duì)象。在步驟1434中,I/O子系統(tǒng)(1412)將新I/O對(duì)象傳送到NUMA I/O框架(1408)以綁定到節(jié)點(diǎn)集合。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,根據(jù)負(fù)載來(lái)增加I/O對(duì)象組的大小確保了根據(jù)需要和使用度來(lái)分配資源。減少分配給I/o對(duì)象組的資源避免了重疊對(duì)象的出現(xiàn),其可能競(jìng)爭(zhēng)CPU周期并且由此減小總系統(tǒng)效率。此外,在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,可以確保有限的硬件資源(例如硬件環(huán)(ring))分配給用于高效使用這些資源的I/O對(duì)象組,并且避免過(guò)度利用或利用不足??梢栽趯?shí)現(xiàn)NUMA架構(gòu)(1500)(或等同物)的基本上任何類型的計(jì)算機(jī)上實(shí)現(xiàn)本發(fā)明的實(shí)施例。例如,包括兩個(gè)或更多處理器(1502)、關(guān)聯(lián)的存儲(chǔ)器(1504)、儲(chǔ)存器件(1506)、兩個(gè)或更多I/O器件(未示出)以及如今的計(jì)算機(jī)典型的許多其它元件和功能的聯(lián)網(wǎng)計(jì)算機(jī)系統(tǒng)。聯(lián)網(wǎng)的計(jì)算機(jī)也可以包括輸入裝置(例如鍵盤(pán)(1508)和鼠標(biāo)(1510))以及輸出裝置(例如監(jiān)視器(1512))。聯(lián)網(wǎng)的計(jì)算機(jī)系統(tǒng)經(jīng)由網(wǎng)絡(luò)接口連接而連接到局域網(wǎng)(LAN)或廣域網(wǎng)。本領(lǐng)域技術(shù)人員應(yīng)理解,這些輸入和輸出裝置可以采取其它形式。此外,本領(lǐng)域技術(shù)人員應(yīng)理解,上述計(jì)算機(jī)的一個(gè)或多個(gè)元件可以位于遠(yuǎn)程處并且通過(guò)網(wǎng)絡(luò)連接到其它元件。此外,用于執(zhí)行本發(fā)明實(shí)施例的軟件指令可以存儲(chǔ)在非瞬時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上,諸如壓縮盤(pán)(CD)、磁盤(pán)、帶、物理盤(pán)或任何其它非瞬時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。雖然已經(jīng)關(guān)于有限數(shù)量的實(shí)施例描述了本發(fā)明,但受益于本公開(kāi)的本領(lǐng)域技術(shù)人員應(yīng)理解,可以設(shè)計(jì)出不脫離在此所公開(kāi)的本發(fā)明的范圍的其它實(shí)施例。相應(yīng)地,本發(fā)明的范圍應(yīng)僅由所附權(quán)利要求限定。
權(quán)利要求
1.一種非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),包括軟件指令,該軟件指令在由處理器運(yùn)行時(shí)執(zhí)行一種方法,所述方法包括: 非一致存儲(chǔ)器訪問(wèn)(NUMA)輸入/輸出(I/O)框架將I/O對(duì)象組綁定到系統(tǒng)上的多個(gè)NUMA節(jié)點(diǎn)中的NUMA節(jié)點(diǎn); 獲得所述I/O對(duì)象組的I/O對(duì)象組大?。? 基于所述I/O對(duì)象組的I/O對(duì)象組總負(fù)載來(lái)確定I/O對(duì)象組目標(biāo)大??; 所述NUMA I/O框架對(duì)所述I/O對(duì)象組目標(biāo)大小與所述I/O對(duì)象組大小進(jìn)行比較;所述NUMA I/O框架確定所述I/O對(duì)象組目標(biāo)大小與所述I/O對(duì)象組大小之間的差超過(guò)閾值;以及 所述NUMA I/O框架指令與所述I/O對(duì)象組相關(guān)聯(lián)的I/O子系統(tǒng)改變所述I/O對(duì)象組大小,其中所述I/O子系統(tǒng)響應(yīng)于所述指令而改變所述I/O對(duì)象組大小。
2.如權(quán)利要求1所述的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),其中,所述I/O對(duì)象組包括第一I/O對(duì)象和第二 I/O對(duì)象,其中所述第一 I/O對(duì)象包括定義所述第一 I/O對(duì)象與所述第二 I/O對(duì)象之間的關(guān)系的親和性。
3.如權(quán)利要求1所述的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),其中,所述I/O對(duì)象組大小是與所述I/O對(duì)象組內(nèi)的I/O對(duì)象的數(shù)量對(duì)應(yīng)的值。
4.如權(quán)利要求1所述的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),其中,所述I/O對(duì)象組目標(biāo)大小是與所述I/o對(duì)象組內(nèi)的I/O對(duì)象的優(yōu)選數(shù)量對(duì)應(yīng)的值。
5.如權(quán)利要求1所述 的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),其中,使用與處理所述I/O對(duì)象組所需的處理資源量對(duì)應(yīng)的值來(lái)計(jì)算所述I/o對(duì)象組總負(fù)載。
6.如權(quán)利要求1所述的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),其中,確定所述I/O對(duì)象組目標(biāo)大小與所述I/o對(duì)象組大小之間的差超過(guò)閾值表明處理所述I/O對(duì)象組的NUMA節(jié)點(diǎn)是從由以下各項(xiàng)構(gòu)成的組選擇的一項(xiàng):利用不足的和過(guò)度利用的。
7.如權(quán)利要求1所述的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),其中,改變所述I/O對(duì)象組大小包括從由以下各項(xiàng)構(gòu)成的組選擇的一項(xiàng):將I/o對(duì)象加入所述I/O對(duì)象組,從所述I/O對(duì)象組移除所述I/o對(duì)象,以及釋放對(duì)與所述I/O對(duì)象對(duì)應(yīng)的資源的引用。
8.一種系統(tǒng),包括: 多個(gè)非一致存儲(chǔ)器訪問(wèn)(NUMA)節(jié)點(diǎn),包括: NUMA節(jié)點(diǎn),包括處理器和存儲(chǔ)器; NUMA I/O框架,運(yùn)行在所述多個(gè)NUMA節(jié)點(diǎn)中的至少一個(gè)上,被配置為: 將I/O對(duì)象組綁定到所述NUMA節(jié)點(diǎn); 獲得所述I/O對(duì)象組的I/O對(duì)象組大??; 基于所述I/O對(duì)象組的I/O對(duì)象組總負(fù)載來(lái)確定I/O對(duì)象組目標(biāo)大?。? 對(duì)所述I/O對(duì)象組目標(biāo)大小與所述I/O對(duì)象組大小進(jìn)行比較; 響應(yīng)于確定所述I/o對(duì)象組目標(biāo)大小與所述I/O對(duì)象組大小之間的差超過(guò)閾值而將所述I/o對(duì)象組目標(biāo)大小發(fā)送到與所述I/O對(duì)象組關(guān)聯(lián)的I/O子系統(tǒng);以及 指令所述I/o子系統(tǒng)使用所述I/O對(duì)象組目標(biāo)大小來(lái)改變所述I/O對(duì)象組大??;以及 所述I/o子系統(tǒng),運(yùn)行在所述多個(gè)NUMA節(jié)點(diǎn)中的至少一個(gè)上,被配置為: 接收所述I/O對(duì)象組目標(biāo)大小;接收改變所述I/O對(duì)象組大小的指令;以及 使用所述I/o對(duì)象組目標(biāo)大小來(lái)改變所述I/O對(duì)象組大小,其中在改變之后,所述I/O對(duì)象組大小等于所述I/o對(duì)象組目標(biāo)大小。
9.如權(quán)利要求8所述的系統(tǒng),其中,所述I/O對(duì)象組包括第一I/O對(duì)象和第二 I/O對(duì)象,其中所述第一 I/o對(duì)象包括定義所述第一 I/O對(duì)象與所述第二 I/O對(duì)象之間的關(guān)系的親和性。
10.如權(quán)利要求9所述的系統(tǒng),其中,改變所述I/O對(duì)象組大小包括: 初始化第三I/o對(duì)象; 將所述第三I/o對(duì)象加入到所述I/O對(duì)象組;以及 將把所述第三I/o對(duì)象綁定到所述系統(tǒng)上的所述多個(gè)NUMA節(jié)點(diǎn)之一的請(qǐng)求發(fā)送到所述NUMA I/O框架。
11.如權(quán)利要求9所述的系統(tǒng),其中,改變所述I/O對(duì)象組大小包括: 選擇所述第一 I/O對(duì)象; 從所述I/O對(duì)象組移除所述第一 I/O對(duì)象;以及 釋放對(duì)與所述第一 I/O對(duì)象對(duì)應(yīng)的資源的引用。
12.如權(quán)利要求 8所述的系統(tǒng),其中,所述I/O對(duì)象組大小是與所述I/O對(duì)象組內(nèi)的I/O對(duì)象的數(shù)量對(duì)應(yīng)的值。
13.如權(quán)利要求8所述的系統(tǒng),其中,所述I/O對(duì)象組目標(biāo)大小是與所述I/O對(duì)象組內(nèi)的I/o對(duì)象的優(yōu)選數(shù)量對(duì)應(yīng)的值,其中使用與處理所述I/O對(duì)象組所需的處理資源量對(duì)應(yīng)的值來(lái)計(jì)算所述I/O對(duì)象組總負(fù)載。
14.如權(quán)利要求8所述的系統(tǒng),其中,確定所述I/O對(duì)象組目標(biāo)大小與所述I/O對(duì)象組大小之間的差超過(guò)閾值表明所述NUMA節(jié)點(diǎn)是從由以下各項(xiàng)構(gòu)成的組選擇的一項(xiàng):利用不足的和過(guò)度利用的。
15.一種用于將輸入/輸出(I/O)對(duì)象綁定到節(jié)點(diǎn)的方法,所述方法包括: 非一致存儲(chǔ)器訪問(wèn)(NUMA)輸入/輸出(I/O)框架將I/O對(duì)象組綁定到系統(tǒng)上的多個(gè)NUMA節(jié)點(diǎn)中的NUMA節(jié)點(diǎn),其中所述I/O對(duì)象組包括與第一線程對(duì)應(yīng)的第一 I/O對(duì)象以及與中斷對(duì)應(yīng)的第二 I/O對(duì)象; 獲得所述I/O對(duì)象組的I/O對(duì)象組大??; 基于所述第一 I/O對(duì)象的第一 I/O對(duì)象有效負(fù)載以及所述第二 I/O對(duì)象的第二 I/O對(duì)象有效負(fù)載來(lái)確定I/o對(duì)象組目標(biāo)大小; 所述NUMA I/O框架對(duì)所述I/O對(duì)象組目標(biāo)大小與所述I/O對(duì)象組大小進(jìn)行比較;所述NUMA I/O框架確定所述I/O對(duì)象組目標(biāo)大小與所述I/O對(duì)象組大小之間的差超過(guò)閾值;以及 所述NUMA I/O框架指令與所述I/O對(duì)象組關(guān)聯(lián)的網(wǎng)絡(luò)媒體訪問(wèn)連接(MAC)層改變所述I/O對(duì)象組大小,其中所述網(wǎng)絡(luò)MAC層響應(yīng)于所述指令而改變所述I/O對(duì)象組大小。
16.如權(quán)利要求15所述的方法,其中,改變所述I/O對(duì)象組大小包括: 所述網(wǎng)絡(luò)MAC層初始化與第二線程對(duì)應(yīng)的第三I/O對(duì)象; 將所述第三I/O對(duì)象加入到所述I/O對(duì)象組;以及 將把所述第三I/O對(duì)象綁定到所述系統(tǒng)上的所述多個(gè)NUMA節(jié)點(diǎn)之一的請(qǐng)求發(fā)送到所述NUMA I/O框架。
17.如權(quán)利要求15所述的方法,其中,改變所述I/O對(duì)象組大小包括: 所述網(wǎng)絡(luò)MAC層選擇所述第一 I/O對(duì)象; 所述網(wǎng)絡(luò)MAC層從所述I/O對(duì)象組移除所述第一 I/O對(duì)象;以及 所述網(wǎng)絡(luò)MAC層釋放對(duì)與所述第一 I/O對(duì)象對(duì)應(yīng)的資源的引用。
18.如權(quán)利要求15所述的方法,其中,所述I/O對(duì)象組與在所述多個(gè)NUMA節(jié)點(diǎn)之一上執(zhí)行的虛擬網(wǎng)絡(luò)接口卡關(guān)聯(lián)。
19.如權(quán)利要求15所述的方法,其中,所述I/O對(duì)象組目標(biāo)大小是與所述I/O對(duì)象組內(nèi)的I/O對(duì)象的優(yōu)選數(shù)量對(duì)應(yīng)的值,其中使用與處理所述I/O對(duì)象組所需的處理資源量對(duì)應(yīng)的值來(lái)計(jì)算所述I/O對(duì)象組總負(fù)載。
20.如權(quán)利要求15所述的方法,其中,確定所述I/O對(duì)象組目標(biāo)大小與所述I/O對(duì)象組大小之間的差超過(guò)閾值包括:確定與所述第一線程對(duì)應(yīng)的第一 I/O對(duì)象貢獻(xiàn)于所述NUMA節(jié)點(diǎn)的利用不足。`
全文摘要
一種用于將輸入/輸出(I/O)對(duì)象綁定到節(jié)點(diǎn)的方法。所述方法包括將I/O對(duì)象組綁定到系統(tǒng)上的多個(gè)NUMA節(jié)點(diǎn)中的NUMA節(jié)點(diǎn);獲得所述I/O對(duì)象組的I/O對(duì)象組大小;以及基于所述I/O對(duì)象組的I/O對(duì)象組總負(fù)載來(lái)確定I/O對(duì)象組目標(biāo)大小。所述方法還包括所述NUMA I/O框架對(duì)所述I/O對(duì)象組目標(biāo)大小和所述I/O對(duì)象組總負(fù)載進(jìn)行比較;所述NUMA I/O框架確定所述I/O對(duì)象組目標(biāo)大小與所述I/O對(duì)象組總負(fù)載之間的差超過(guò)閾值;所述NUMA I/O框架指令與所述I/O對(duì)象組關(guān)聯(lián)的I/O子系統(tǒng)改變所述I/O對(duì)象組大小,其中所述I/O子系統(tǒng)響應(yīng)于所述指令而改變所述I/O對(duì)象組大小。
文檔編號(hào)G06F9/50GK103210374SQ201180052400
公開(kāi)日2013年7月17日 申請(qǐng)日期2011年9月8日 優(yōu)先權(quán)日2010年9月17日
發(fā)明者N·G·德勞克斯, R·庫(kù)恩哈盼 申請(qǐng)人:甲骨文國(guó)際公司