亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

非一致存儲器訪問i/o框架的制作方法

文檔序號:6362168閱讀:116來源:國知局
專利名稱:非一致存儲器訪問i/o框架的制作方法
非一致存儲器訪問I/o框架
背景技術(shù)
一些現(xiàn)代計算系統(tǒng)架構(gòu)利用物理上和概念上分離的節(jié)點(diǎn)來改變計算硬件的速度。在這些架構(gòu)中,輸入/輸出器件可以位于計算機(jī)上的各種物理位置中。分離節(jié)點(diǎn)上的不同應(yīng)用和處理可以使用每個輸入/輸出器件。在這些架構(gòu)上執(zhí)行的內(nèi)核元件可以負(fù)責(zé)促進(jìn)輸A/輸出器件與物理上遠(yuǎn)離該器件的應(yīng)用之間的通信。

發(fā)明內(nèi)容
大體上,在一方面,本發(fā)明涉及一種非暫時性計算機(jī)可讀介質(zhì),其包括軟件指令,所述軟件指令在由處理器運(yùn)行時執(zhí)行一種方法。所述方法包括:輸入/輸出(I/o)子系統(tǒng)從處理接收使用I/o器件的請求;確定服務(wù)于所述請求的第一資源;生成與所述第一資源對應(yīng)的第一 I/o對象,其中所述第一 I/O對象未被綁定;以及將所述第一 I/O對象發(fā)送到非一致存儲器訪問(NUMA) I/O框架。所述方法還包括:所述NUMA I/O框架選擇多個NUMA節(jié)點(diǎn)中將所述第一 I/O對象綁定到的第一 NUMA節(jié)點(diǎn),以及將所述第一 I/O對象綁定到所述第一 NUMA節(jié)點(diǎn)。所述方法還包括:通過在所述第一 NUMA節(jié)點(diǎn)上處理與所述第一 I/O對象對應(yīng)的所述第一資源來服務(wù)于所述請求。大體上,在一方面,本發(fā)明涉及一種包括非一致性存儲器訪問(NUMA)節(jié)點(diǎn)的系統(tǒng)。所述NUMA節(jié)點(diǎn)包括:第一 NUMA節(jié)點(diǎn),其包括第一處理器和第一存儲器;以及第二 NUMA節(jié)點(diǎn),其包括第二處理器和第二存儲器。所述系統(tǒng)還包括:輸入/輸出(I/O)器件組,其包括I/O器件。所述系統(tǒng)還包括I/O子系統(tǒng),其在所述NUMA節(jié)點(diǎn)中的至少一個上執(zhí)行,并且被配置為:從在所述第一 NUMA節(jié)點(diǎn)上執(zhí)行的處理接收使用所述I/O器件的請求,確定服務(wù)于所述請求所需的第一資源,以及生成與所述第一資源對應(yīng)的第一 I/O對象,其中所述第一 I/O對象未被綁定。所述系統(tǒng)還包括:NUMA I/O框架,其在所述多個NUMA節(jié)點(diǎn)中的至少一個上執(zhí)行,并且被配置為:從所述I/O子系統(tǒng)接收所述第一 I/O對象,選擇所述第二 NUMA節(jié)點(diǎn),以及將所述第一 I/O對象綁定到所述第二 NUMA節(jié)點(diǎn)。通過在所述第二 NUMA節(jié)點(diǎn)上處理與所述第一 I/O對象對應(yīng)的所述第一資源來服務(wù)于所述請求。大體上,在一方面,本發(fā)明涉及一種將輸入/輸出(I/O)對象綁定到節(jié)點(diǎn)的方法。所述方法包括:網(wǎng)絡(luò)媒體訪問連接(MAC)層從處理接收打開網(wǎng)絡(luò)連接的請求,確定服務(wù)于所述請求的線程,生成與所述線程對應(yīng)的第一 I/O對象,其中所述第一 I/O對象未被綁定,以及將所述第一 I/O對象發(fā)送到非一致性存儲器訪問(NUMA)I/0框架。所述網(wǎng)絡(luò)MAC層與物理網(wǎng)絡(luò)接口卡(NIC)關(guān)聯(lián)。所述方法還包括:所述NUMA I/O框架選擇將所述第一 I/O對象綁定到的第一 NUMA節(jié)點(diǎn),以及將所述第一 I/O對象綁定到所述第一 NUMA節(jié)點(diǎn)。所述方法還包括:通過在所述第一NUMA節(jié)點(diǎn)上處理與所述第一 I/O對象對應(yīng)的所述線程來服務(wù)于所述請求。本發(fā)明的其它方面將從以下描述和所附權(quán)利要求變得顯然。


圖1示出根據(jù)本發(fā)明的一個或多個實(shí)施例的系統(tǒng)。圖2示出根據(jù)本發(fā)明的一個或多個實(shí)施例的NUMA節(jié)點(diǎn)。圖3示出根據(jù)本發(fā)明的一個或多個實(shí)施例的I/O器件組。圖4示出根據(jù)本發(fā)明的一個或多個實(shí)施例的系統(tǒng)。圖5示出根據(jù)本發(fā)明的一個或多個實(shí)施例的I/O拓?fù)淠K。圖6示出根據(jù)本發(fā)明的一個或多個實(shí)施例的地點(diǎn)組模塊。圖7示出根據(jù)本發(fā)明的一個或多個實(shí)施例的負(fù)載平衡模塊。圖8示出根據(jù)本發(fā)明的一個或多個實(shí)施例的I/O對象組。圖9示出根據(jù)本發(fā)明的一個或多個實(shí)施例的流程圖。圖10示出根據(jù)本發(fā)明的一個或多個實(shí)施例的流程圖。圖11示出根據(jù)本發(fā)明的一個或多個實(shí)施例的流程圖。圖12A示出根據(jù)本發(fā)明的一個或多個實(shí)施例的示例性系統(tǒng)。圖12B示出根據(jù)本發(fā)明的一個或多個實(shí)施例的示例性時間線。圖13示出根據(jù)本發(fā)明的一個或多個實(shí)施例的系統(tǒng)。
具體實(shí)施例方式將參照附圖描述本發(fā)明的示例性實(shí)施例。附圖中相似的項以相同的附圖標(biāo)記示出。在本發(fā)明實(shí)施例中,闡述大量具體細(xì)節(jié)以提供對本發(fā)明的更透徹理解。然而對本領(lǐng)域技術(shù)人員而言將顯然的是,可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐本發(fā)明。在其它實(shí)例中,并未詳細(xì)描述公知特征,以免模糊本發(fā)明。大體上,本發(fā)明的實(shí)施例涉及用于管理具有非一致存儲器訪問(NUMA)架構(gòu)的系統(tǒng)上的輸入/輸出(I/o)資源的框架。更特別地,本發(fā)明的實(shí)施例涉及用于創(chuàng)建NUMA系統(tǒng)上的節(jié)點(diǎn)與連接到系統(tǒng)的I/O資源之間的抽象層的方法和系統(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每個節(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))連接到一個或多個其它節(jié)點(diǎn)。每個節(jié)點(diǎn)(節(jié)點(diǎn)A (100A)、節(jié)點(diǎn)B(100B)、節(jié)點(diǎn)C (100C)和節(jié)點(diǎn)N (100N))也操作上連接到一個或多個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))(見圖3)。該系統(tǒng)還包括I/O子系統(tǒng)(106)和NUMAI/O框架(108)。在本發(fā)明的一個或多個實(shí)施例中,圖1描述的系統(tǒng)架構(gòu)可以操作為具有NUMA架構(gòu)的系統(tǒng)。在本發(fā)明的一個或多個實(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ī)總線或數(shù)據(jù)鏈路。在本發(fā)明的一個或多個實(shí)施例中,I/O子系統(tǒng)(106)(又稱為I/O框架)提供系統(tǒng)處理與各種系統(tǒng)I/o功能之間的抽象層。具體地說,I/O子系統(tǒng)(106)可以對利用該框架的軟件實(shí)體如何與彼此通信進(jìn)行多種控制,并且可以包括用于另外其他系統(tǒng)目的(例如電源管理、消耗方優(yōu)先級等)的機(jī)制。I/O子系統(tǒng)(例如I/O子系統(tǒng)(106))的示例包括但不限于存儲棧、InfiniBand ULP (InfiniBand是InfiniBand貿(mào)易協(xié)會的注冊商標(biāo))以及網(wǎng)絡(luò)MAC層。在本發(fā)明的一個或多個實(shí)施例中,每個I/O子系統(tǒng)從其它軟件實(shí)體接收使用或訪問其關(guān)聯(lián)的I/o器件的請求。在本發(fā)明的一個或多個實(shí)施例中,每個I/O子系統(tǒng)包括管理服務(wù)于該請求所需的I/o資源的功能。I/O受管理資源可以包括例如線程、中斷(interrupt)以及軟件接收環(huán)(ring)。此外,I/O子系統(tǒng)(106)可以通過初始化與受管理資源對應(yīng)的I/O對象來管理其關(guān)聯(lián)資源。(見圖8)。此外,由一個或多個I/O子系統(tǒng)(106)管理的I/O資源可以在單個節(jié)點(diǎn)(例如節(jié)點(diǎn)A (IOOA))上、在多個節(jié)點(diǎn)(例如節(jié)點(diǎn)A (IOOA)和節(jié)點(diǎn)B (IOOB))上或在單個系統(tǒng)內(nèi)的所有節(jié)點(diǎn)上存在或運(yùn)行。I/O子系統(tǒng)(106)中的每個也可以在單個節(jié)點(diǎn)(例如節(jié)點(diǎn)A (IOOA))上、在多個節(jié)點(diǎn)(例如節(jié)點(diǎn)A (IOOA)和節(jié)點(diǎn)B (IOOB))上或在單個系統(tǒng)內(nèi)的所有節(jié)點(diǎn)上運(yùn)行。相應(yīng)地,為了示范,I/O子系統(tǒng)(106)和NUMA I/O框架(108)在圖1中示為在系統(tǒng)上的其它元件的外部。在本發(fā)明的一個或多個實(shí)施例中,NUMA I/O框架(108)是I/O子系統(tǒng)(106)與下面的NUMA架構(gòu)(例如圖1所示的系統(tǒng))之間的抽象層。NUMA I/O框架(108)承擔(dān)確定何處以及如何處理I/O對象(例如對I/O資源的引用)的所有責(zé)任。具體地說,NUMA I/O框架管理由I/O子系統(tǒng)(106)管理的I/O資源的物理位置。在本發(fā)明的一個或多個實(shí)施例中,NUMA I/O框架使用實(shí)施來推動系統(tǒng)目標(biāo)的策略或信息收集模塊來確定I/O對象的安置(見圖 4-7)。在本發(fā)明的一個或多個實(shí)施例中,NUMA I/O框架(108)將I/O資源綁定到系統(tǒng)上的一個或多個節(jié)點(diǎn)。將I/o資源綁定到節(jié)點(diǎn)可以包括:向內(nèi)核調(diào)度器通知將要在I/O資源綁定到的一個或多個節(jié)點(diǎn)上執(zhí)行與I/o資源關(guān)聯(lián)的指令。在本發(fā)明的一個或多個實(shí)施例中,一旦I/O資源綁定到一個或多個節(jié)點(diǎn)(例如經(jīng)由I/O對象),源自該I/O資源的指令或消息就被調(diào)度為用于在其綁定到的節(jié)點(diǎn)上執(zhí)行,直到存在NUMA I/O框架(108)的進(jìn)一步干預(yù)。在本發(fā)明的一個實(shí)施例中,I/O資源可以綁定到節(jié)點(diǎn)的子集(例如經(jīng)由I/O對象)。作為綁定I/O資源的一部分,NUMA I/O框架(108)可以提供關(guān)于節(jié)點(diǎn)子集的內(nèi)核調(diào)度器信息。內(nèi)核調(diào)度器然后可以選擇在節(jié)點(diǎn)子集中的哪個節(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 )連接到存儲器(208 )的中央處理單元(CPU) (204)和高速緩存(cache ) (206 )。系統(tǒng)中的其它節(jié)點(diǎn)中的每個(節(jié)點(diǎn)B (200B)、節(jié)點(diǎn)N (200C))可以包括與節(jié)點(diǎn)A (200A)中所描述的那些基本相似的元件。在本發(fā)明的一個或多個實(shí)施例中,存儲器(208)包括本地應(yīng)用存儲器和本地內(nèi)核存儲器。可以分配一部分本地內(nèi)核存儲器,以供系統(tǒng)側(cè)軟件元件(例如I/o子系統(tǒng)、NUMA I/O框架等)使用。在本發(fā)明一實(shí)施例中,存儲器(208)在對于節(jié)點(diǎn)A (200A)上的CPU (204)特定的存儲器管理器的控制之下,節(jié)點(diǎn)B (200B)的存儲器(未示出)在對于節(jié)點(diǎn)B (200B)的CPU (未示出)特定的存儲器管理器的控制之下。換言之,上述架構(gòu)與所有CPU從單個存儲器管理器競爭存儲器的架構(gòu)相比可以更高效地操作。可以在除了上述系統(tǒng)架構(gòu)之外的系統(tǒng)架構(gòu)上實(shí)施本發(fā)明的其它實(shí)施例。在本發(fā)明的一個或多個實(shí)施例中,每個節(jié)點(diǎn)(節(jié)點(diǎn)A (200A)、節(jié)點(diǎn)B (200B)、節(jié)點(diǎn)N(200B))可以操作地連接到一個或多個I/O器件組。如圖2所示的那樣,節(jié)點(diǎn)A (200A)操作上連接到一個或多個I/O器件組(10器件組A (212A)、I/0器件組N(212N))。在本發(fā)明一實(shí)施例中,I/O器件組中的一個或多個(例如I/O器件組A (212A)、I/0器件組N (212N))可以經(jīng)由IC連接到一個或多個節(jié)點(diǎn)。在本發(fā)明的一個或多個實(shí)施例中,NUMA節(jié)點(diǎn)可以包括CPU (例如CPU (204)),而不包括存儲器。替代地,在本發(fā)明一實(shí)施例中,NUMA節(jié)點(diǎn)可以包括存儲器(例如存儲器(208)),但不包括CPU。圖3示出根據(jù)本發(fā)明一實(shí)施例的I/O器件組。如圖3所示,I/O器件組(300)包括一個或多個I/o器件(10器件A (302A)、I/0器件N (302N)),其操作上連接到I/O總線(304),I/O總線(304)進(jìn)而操作上連接到I/O橋(306)。I/O橋(306)操作上連接到一個或多個節(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ī)系統(tǒng)的資源,其可以由在系統(tǒng)上執(zhí)行的程序使用,以用于信息輸入和/或信息輸出。這種器件的示例可以包括但不限于盤驅(qū)動器、網(wǎng)絡(luò)接口卡、打印機(jī)、通用串行總線(USB)等。本領(lǐng)域技術(shù)人員應(yīng)理解,存在這里未列出的其它I/O器件。圖4示出根據(jù)本發(fā)明一實(shí)施例的系統(tǒng)。具體地說,圖4示出根據(jù)本發(fā)明一實(shí)施例在系統(tǒng)的一個或多個節(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ū)動器(410))。I/O子系統(tǒng)也可以從管理工具(412)接收I/O對象約束或限制信息。在本發(fā)明的一個或多個實(shí)施例中,NUMA I/O框架(400)利用多個專用模塊來執(zhí)行具體任務(wù)和收集信息。這些模塊包括NUMA內(nèi)核存儲器分配模塊(414)、I/O負(fù)載平衡模塊(416)、NUMA地點(diǎn)(1cality)組模塊(418)和I/0拓?fù)淠K(420)。以下詳細(xì)描述這些元件中的每一個。在本發(fā)明的一個或多個實(shí)施例中,消耗方(消耗方(406))指的是利用或試圖利用系統(tǒng)的I/o資源的處理和程序。消耗方可以在內(nèi)核級別操作(例如,作為操作系統(tǒng)的一部分),或可以在用戶級別操作(例如,作為應(yīng)用的一部分)。I/o資源可以包括I/O器件(例如I/O器件(408))、處理資源(例如圖2中的CPU (204)和存儲器(208))以及促進(jìn)處理與I/O器件之間的通信的其它系統(tǒng)元件(例如中斷、接收環(huán)、監(jiān)聽方等),并且可以包括物理或虛擬元件。在本發(fā)明的一個或多個實(shí)施例中,I/O子系統(tǒng)(402)管理服務(wù)于從消耗方(406)接收到的訪問I/o器件(408)的請求所需的I/O資源。這些請求可以包括打開到I/O器件(408)的連接的調(diào)用,或經(jīng)由適當(dāng)?shù)腎/O子系統(tǒng)(402)以其他方式訪問I/O器件(408)。I/O子系統(tǒng)(402)還可以包括如下功能:初始化或?qū)嵗疘/O對象,以及將I/O對象與I/O資源關(guān)聯(lián)。具體地說,I/o子系統(tǒng)(402)可以創(chuàng)建包括對I/O資源的引用的I/O對象,其可以然后被提供給NUMA I/O框架(400)作為綁定I/O資源的請求的一部分(見圖8)。在本發(fā)明一實(shí)施例中,NUMA I/O框架(400)從I/O子系統(tǒng)(402)接收I/O對象。可以經(jīng)由內(nèi)核親和性API (404)接收I/O對象,內(nèi)核親和性API (404)為I/O子系統(tǒng)(402)提供接口以將I/O對象注冊到NUMA I/O框架(400)。此外,注冊到NUMA I/O框架(400)的I/O對象可以包括關(guān)于I/O對象分組、I/O對象之間的親和性以及與I/O對象關(guān)聯(lián)的任何約束的信息。NUMA I/O框架(400)使用親和性來確定I/O對象應(yīng)綁定到的適當(dāng)?shù)囊粋€或多個節(jié)點(diǎn)。(例如,物理上彼此靠近的節(jié)點(diǎn)、物理上靠近所指定的I/O器件的節(jié)點(diǎn)等)。在本發(fā)明的一個或多個實(shí)施例中,I/O對象以一個或多個I/O對象組(見圖8)發(fā)送到NUMA I/O框架(400)。在本發(fā)明一實(shí)施例中,NUMA I/O框架(400)將I/O對象綁定到節(jié)點(diǎn)。在本發(fā)明一實(shí)施例中,綁定I/o對象指的是將I/O對象所引用的I/O資源發(fā)布的任務(wù)(例如處理中斷、執(zhí)行線程)分配給系統(tǒng)上的一個或多個節(jié)點(diǎn)。在本發(fā)明的一個或多個實(shí)施例中,NUMA I/O框架(400)使用I/O對象內(nè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ù)一個或多個目的來綁定I/O對象。例如,NUMA I/O框架(400)可以綁定I/O對象以使得整個系統(tǒng)的性能最大化。替代地,NUMA I/O框架(400)可以按照最高效地使用系統(tǒng)資源的方式來綁定I/O對象。NUMA I/O框架(400)也可以綁定I/O對象以使得執(zhí)行一個或所有處理的速度最大化。NUMA I/O框架(400)可以按照使得正使用的I/O器件與綁定到關(guān)聯(lián)的I/O對象的節(jié)點(diǎn)之間的距離最小化的方式來綁定I/O對象。在本發(fā)明的一個或多個實(shí)施例中,內(nèi)核存儲器分配模塊(414)允許NUMA I/O框架(400)分配來自任何附連節(jié)點(diǎn)的內(nèi)核存儲器(例如來自圖2中節(jié)點(diǎn)A (200A)中的存儲器(208))。在本發(fā)明一實(shí)施例中,負(fù)載平衡模塊(416)監(jiān)視每個節(jié)點(diǎn)執(zhí)行的工作量,并且考慮到資源管理和I/O拓?fù)?即節(jié)點(diǎn)相對于彼此的位置)而對節(jié)點(diǎn)之間的工作進(jìn)行動態(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)包括一個或多個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))收集到的信息來為系統(tǒng)上的每個I/O器件(例如圖4中的I/O器件(408))創(chuàng)建I/O器件記錄。每個I/O器件記錄(例如I/O器件記錄A (502A)、I/0器件記錄N (502N))包括指示哪些系統(tǒng)節(jié)點(diǎn)直接連接到I/o器件的信息。替代地,在本發(fā)明的一個或多個實(shí)施例中,由I/O拓?fù)淠K(500)可訪問的系統(tǒng)上的其它內(nèi)核元件創(chuàng)建和維護(hù)I/o器件記錄。關(guān)于系統(tǒng)上的每個I/O器件的位置的信息可以被稱為I/o拓?fù)洹T诒景l(fā)明的一個或多個實(shí)施例中,I/O拓?fù)淠K(500)包括如下功能:對NUMA I/O框架的詢問進(jìn)行響應(yīng),從而對于給定的I/O器件,I/O拓?fù)淠K(500)返回直接連接到該I/O器件的一個或多個節(jié)點(diǎn)。在本發(fā)明一實(shí)施例中,這些節(jié)點(diǎn)被稱為優(yōu)選節(jié)點(diǎn)。圖6示出根據(jù)本發(fā)明一實(shí)施例的地點(diǎn)組模塊。如圖6所示,地點(diǎn)組模塊(600)包括一個或多個地點(diǎn)組(例如節(jié)點(diǎn)A地點(diǎn)組(602A)、節(jié)點(diǎn)N地點(diǎn)組(602N))。每個地點(diǎn)組維護(hù)關(guān)于系統(tǒng)上的節(jié)點(diǎn)的信息。該信息可以包括在系統(tǒng)上該節(jié)點(diǎn)相對于其它節(jié)點(diǎn)的位置(即,哪些節(jié)點(diǎn)與該節(jié)點(diǎn)直接相鄰)。關(guān)于系統(tǒng)上的每個節(jié)點(diǎn)的位置的信息可以被稱為NUMA拓?fù)?。在本發(fā)明一實(shí)施例中,節(jié)點(diǎn)或I/O器件之間的距離指的是兩個元件之間的物理距離。在本發(fā)明一實(shí)施例中,該距離可以指的是兩個元件之間的節(jié)點(diǎn)數(shù)(又稱為“跳”)。此外,在本發(fā)明一實(shí)施例中,可以關(guān)于數(shù)據(jù)從一個節(jié)點(diǎn)行進(jìn)到另一節(jié)點(diǎn)所需的時間(又稱為節(jié)點(diǎn)之間的等待時間(latency ))來表示節(jié)點(diǎn)之間的距離。在本發(fā)明的一個或多個實(shí)施例中,地點(diǎn)組模塊(600)包括如下功能:對NUMA I/O框架的詢問進(jìn)行響應(yīng),從而對于給定的節(jié)點(diǎn),地點(diǎn)組模塊(600 )返回直接連接到該節(jié)點(diǎn)的一個或多個節(jié)點(diǎn)。在本發(fā)明一實(shí)施例中,這些節(jié)點(diǎn)被稱為優(yōu)選節(jié)點(diǎn)。圖7示出根據(jù)本發(fā)明一實(shí)施例的負(fù)載平衡模塊。如圖7所示,負(fù)載平衡模塊(700)包括一個或多個負(fù)載監(jiān)視器(例如節(jié)點(diǎn)A負(fù)載監(jiān)視器(702A)、節(jié)點(diǎn)N負(fù)載監(jiān)視器(702N))。每個負(fù)載監(jiān)視器(例如節(jié)點(diǎn)A負(fù)載監(jiān)視器(702A)、節(jié)點(diǎn)N負(fù)載監(jiān)視器(702N))維護(hù)關(guān)于對應(yīng)節(jié)點(diǎn)利用和I/O負(fù)載容量的信息(例如CPU利用、存儲器利用等)。具體地說,每個負(fù)載監(jiān)視器(例如節(jié)點(diǎn)A負(fù)載監(jiān)視器(702A)、節(jié)點(diǎn)N負(fù)載監(jiān)視器(702N))獲得指定度規(guī)(metric)的周期性測量(例如CPU利用、存儲器利用等),并且使用測量來計算節(jié)點(diǎn)的I/O負(fù)載。在本發(fā)明一實(shí)施例中,I/O負(fù)載包括反映所測量的度規(guī)的趨勢方向的指示符(例如在過去的10個周期上增大的CPU利用)。此外,在本發(fā)明一實(shí)施例中,每個負(fù)載監(jiān)視器(例如節(jié)點(diǎn)A負(fù)載監(jiān)視器(702A)、節(jié)點(diǎn)N負(fù)載監(jiān)視器(702N))包括如下功能:隨時間跟蹤度規(guī),并且檢測I/O負(fù)載的模式(例如CPU利用在星期一下午2點(diǎn)至5點(diǎn)之間最大)。I/O負(fù)載還用于計算節(jié)點(diǎn)I/O負(fù)載容量。圖8示出根據(jù)本發(fā)明一實(shí)施例的I/O對象組。如圖8所示,I/O對象組(800)包括一個或多個I/o對象(例如I/O對象A (802A)、I/0對象N (802N))。在本發(fā)明的一個或多個實(shí)施例中,I/O對象是封裝對應(yīng)的I/O資源的句柄或?qū)?yīng)的I/O資源的引用的軟件結(jié)構(gòu)。每個I/O對象可以還包括與其它I/O對象的一個或多個親和性、關(guān)于I/O對象綁定的約束、以及專用CPU標(biāo)記。在本發(fā)明的一個或多個實(shí)施例中,親和性是I/O對象之間的關(guān)系強(qiáng)度的數(shù)量指示(例如無關(guān)系、弱關(guān)系、強(qiáng)關(guān)系、負(fù)關(guān)系等)。兩個I/O對象(I/O對象A (802A)、I/O對象N(802N))之間的親和性定義I/O對象可以或應(yīng)綁定到的節(jié)點(diǎn)之間的最大或最小允許距離。在本發(fā)明的一個或多個實(shí)施例中,親和性由管理I/O對象的I/O子系統(tǒng)指定。在本發(fā)明的一個或多個實(shí)施例中,I/O子系統(tǒng)創(chuàng)建與一起工作以執(zhí)行一部分I/O操作的I/o資源對應(yīng)的I/O對象(例如I/O對象A (802A)、I/0對象N (802N))之間的親和性。例如,與用于虛擬網(wǎng)絡(luò)接口卡所接收到的業(yè)務(wù)的中斷對應(yīng)的I/O對象可以具有與處理同一虛擬網(wǎng)絡(luò)接口卡上的數(shù)據(jù)的其它中斷和線程對應(yīng)的其它I/O對象的強(qiáng)親和性。在本發(fā)明的一個或多個實(shí)施例中,約束可以指定I/O對象或I/O對象組必須綁定到的節(jié)點(diǎn)或節(jié)點(diǎn)組。約束可以用于將I/o對象或I/O對象組限制到所批準(zhǔn)的或適當(dāng)?shù)墓?jié)點(diǎn)集合。約束可以用于將一個I/o對象或I/O對象組與其他的相隔離。在本發(fā)明的一個或多個實(shí)施例中,I/o子系統(tǒng)可以使用約束來強(qiáng)制分離系統(tǒng)上的區(qū)域或容器(container)。在本發(fā)明的一個或多個實(shí)施例中,專用CPU標(biāo)記可以指示I/O對象應(yīng)綁定到具有可用于專用于I/o對象的CPU的節(jié)點(diǎn)。NUMA I/O框架可以將專用CPU標(biāo)記解釋為絕對限制,或替代地解釋為優(yōu)選。在本發(fā)明一實(shí)施例中,專用CPU標(biāo)記可以包括指示優(yōu)選強(qiáng)度的其它信息。圖9示出根據(jù)本發(fā)明的一個或多個實(shí)施例的用于將新I/O器件注冊到NUMA I/O框架的流程圖。在本發(fā)明的一個或多個實(shí)施例中,圖9所示的一個或多個步驟可以被省略、重復(fù)和/或按與圖9所示不同的順序執(zhí)行。相應(yīng)地,圖9所示的步驟的具體布置方式不應(yīng)理解為限制本發(fā)明的范圍。在步驟910中,I/O拓?fù)淠K檢測(或者以其他方式被通知)新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器件的位置信息。該信息可以包括未直接連接至IJ I/O器件的對于I/O器件最接近的節(jié)點(diǎn)。在步驟918中,I/O拓?fù)淠K使用從地點(diǎn)組模塊所獲得的位置信息來更新I/O器件記錄。圖10示出根據(jù)本發(fā)明的一個或多個實(shí)施例的I/O子系統(tǒng)服務(wù)于請求的流程圖。在本發(fā)明的一個或多個實(shí)施例中,可以省略、重復(fù)和/或按與圖10所示不同的順序執(zhí)行圖10所示的一個或多個步驟。相應(yīng)地,圖10所示的步驟的具體布置方式不應(yīng)理解為限制本發(fā)明的范圍。在步驟1010中,處理將請求發(fā)送到I/O子系統(tǒng),以使用I/O器件。所述請求可以是例如這樣的請求:創(chuàng)建與網(wǎng)絡(luò)接口卡關(guān)聯(lián)的數(shù)據(jù)鏈路。替代地,請求可以是獲取對存儲器件的訪問,以更改位于該器件上的數(shù)據(jù)。到來的請求的其它示例包括來自網(wǎng)絡(luò)棧的請求(例如創(chuàng)建VNIC)以及來自文件系統(tǒng)的請求。在步驟1012中,I/O子系統(tǒng)確定服務(wù)于該請求所需的資源。這可以包括例如線程的具體數(shù)量和中斷的具體數(shù)量。在本發(fā)明一實(shí)施例中,該確定是基于先前所服務(wù)的相似請求的需求的。在本發(fā)明一實(shí)施例中,由于分析使用信息,因此所確定的資源可以隨時間而改變。例如,創(chuàng)建處理與物理網(wǎng)絡(luò)之間的連接的I/O子系統(tǒng)可以配置為創(chuàng)建指定數(shù)量的用于線程的I/o對象以及指定數(shù)量的用于中斷的I/O對象,以用于所創(chuàng)建的類型的連接。I/O子系統(tǒng)可以進(jìn)一步配置為指定線程不應(yīng)在分離節(jié)點(diǎn)上執(zhí)行,因?yàn)檫@樣做可能導(dǎo)致對于連接不可接受量的緩慢性或數(shù)據(jù)丟失。為此,I/o子系統(tǒng)可以通過指定I/O對象之間的強(qiáng)親和性來表示這點(diǎn)。在步驟1014中,I/O子系統(tǒng)創(chuàng)建用于必要資源的I/O對象。在步驟1016中,I/O子系統(tǒng)將I/o對象發(fā)送到NUMA I/O框架。在本發(fā)明一實(shí)施例中,通過援引親和性內(nèi)核API的方法調(diào)用來創(chuàng)建I/O對象。在步驟1018中,I/O子系統(tǒng)指定供NUMA I/O框架使用的I/O對象之間的親和性。在步驟1020中,NUMA I/O框架基于策略和親和性而將I/O對象綁定到節(jié)點(diǎn)。關(guān)于圖11詳細(xì)說明步驟1020。圖11示出根據(jù)本發(fā)明的一個或多個實(shí)施例的通過NUMA I/O框架綁定I/O對象的流程圖。在本發(fā)明的一個或多個實(shí)施例中,可以省略、重復(fù)和/或按與圖11所示不同的順序執(zhí)行圖11所示的一個或多個步驟。相應(yīng)地,圖9所示的步驟的具體布置方式不應(yīng)理解為限制本發(fā)明的范圍。在步驟1110中,NUMA I/O框架接收將I/O對象組綁定到NUMA節(jié)點(diǎn)集合的請求。在步驟1112中,NUMA I/O框架獲得I/O對象組中的每個I/O對象的I/O對象親和性。在本發(fā)明一實(shí)施例中,假定I/O對象組中的所有I/O對象之間的親和性。在步驟1114中,NUMAI/O框架確定I/O對象組約束。在本發(fā)明一實(shí)施例中,親和性和約束嵌入在所接收到的I/O對象中。在步驟1116中,NUMA I/O框架利用關(guān)于I/O對象親和性和約束的信息以及關(guān)于I/O對象所獲得的任何其它限制或指示(包括專用CPU標(biāo)記的存在)來確定節(jié)點(diǎn)選擇要求。在本發(fā)明一個實(shí)施例中,節(jié)點(diǎn)選擇要求指定節(jié)點(diǎn)或節(jié)點(diǎn)集合必須滿足以被考慮用于綁定I/O對象組的條件集合。這樣的條件可以包括離I/o器件在設(shè)定距離內(nèi)的節(jié)點(diǎn)的具體布置。在本發(fā)明一實(shí)施例中,所述條件可以包括每個節(jié)點(diǎn)的I/O負(fù)載容量。在步驟1118中,NUMA I/O框架使用節(jié)點(diǎn)選擇要求和I/O拓?fù)淠K來確定主優(yōu)選NUMA節(jié)點(diǎn)集合。在本發(fā)明一實(shí)施例中,主優(yōu)選NUMA節(jié)點(diǎn)集合是滿足所有節(jié)點(diǎn)選擇要求的節(jié)點(diǎn)或節(jié)點(diǎn)組。在本發(fā)明一實(shí)施例中,節(jié)點(diǎn)選擇要求可以僅被多于一個的節(jié)點(diǎn)所滿足。例如,如果I/O對象組中的一個I/O對象具有專用CPU標(biāo)記,并且故此I/O對象組中沒有其他對象可以置于相同節(jié)點(diǎn)上,則節(jié)點(diǎn)選擇要求將需要要求使用多于一個的節(jié)點(diǎn)。因此,滿足節(jié)點(diǎn)選擇要求的節(jié)點(diǎn)或節(jié)點(diǎn)的組合可以被稱為節(jié)點(diǎn)集合。相似地,節(jié)點(diǎn)集合可以包括僅單個節(jié)點(diǎn)或節(jié)點(diǎn)的組合。在本發(fā)明一實(shí)施例中,NUMA節(jié)點(diǎn)集合基于其接近于關(guān)聯(lián)的I/O器件而被確定為主優(yōu)選NUMA節(jié)點(diǎn)集合。在步驟1120中,NUMA I/O框架確定是否有多于一個的主優(yōu)選NUMA節(jié)點(diǎn)集合可以供I/O對象組中的I/O對象綁定。在本發(fā)明一實(shí)施例中,當(dāng)多于一個的NUMA節(jié)點(diǎn)集合滿足節(jié)點(diǎn)選擇要求并且每個都距關(guān)聯(lián)I/O器件相等的物理距離時,可以有多于一個的主優(yōu)選NUMA節(jié)點(diǎn)集合。如果存在多于一個的可用主優(yōu)選NUMA節(jié)點(diǎn)集合,則在步驟1122中,基于選擇策略而選擇主優(yōu)選NUMA節(jié)點(diǎn)集合之一。在本發(fā)明一實(shí)施例中,當(dāng)存在都同樣滿足節(jié)點(diǎn)選擇要求的兩個節(jié)點(diǎn)或節(jié)點(diǎn)集合時,根據(jù)選擇策略來選擇滿意的主優(yōu)選NUMA節(jié)點(diǎn)集合之一。在本發(fā)明一實(shí)施例中,選擇策略指定隨機(jī)地選擇一個主優(yōu)選NUMA節(jié)點(diǎn)集合。替代地,選擇策略可以推動與確定主優(yōu)選NUMA節(jié)點(diǎn)集合的系統(tǒng)目標(biāo)無關(guān)的系統(tǒng)目標(biāo)。如果存在多于一個的主優(yōu)選NUMA節(jié)點(diǎn)集合,則在步驟1124中,NUMA I/O框架確定是否存在一個主優(yōu)選NUMA節(jié)點(diǎn)集合。如果存在一個主優(yōu)選NUMA節(jié)點(diǎn)集合,則在步驟1126中,選擇該主優(yōu)選NUMA節(jié)點(diǎn)集合。如果不存在主優(yōu)選NUMA節(jié)點(diǎn)集合,則在步驟1128中,NUMA I/O框架使用地點(diǎn)組模塊基于節(jié)點(diǎn)選擇要求來確定次優(yōu)選NUMA節(jié)點(diǎn)集合。具體地說,在本發(fā)明一實(shí)施例中,NUMA I/O框架詢問地點(diǎn)組模塊以確定最接近于主優(yōu)選節(jié)點(diǎn)集合的節(jié)點(diǎn)或節(jié)點(diǎn)集合。次優(yōu)選NUMA節(jié)點(diǎn)集合是滿足節(jié)點(diǎn)選擇要求并且處于處理I/O對象組中的I/O對象的次最佳位置中的一個或多個節(jié)點(diǎn)。在本發(fā)明一實(shí)施例中,如果不存在可用的主優(yōu)選NUMA節(jié)點(diǎn)集合,則系統(tǒng)等待,直到初始確定的主優(yōu)選NUMA節(jié)點(diǎn)集合之一變?yōu)榭捎?。此外,如果沒有主優(yōu)選NUMA節(jié)點(diǎn)集合可用,則NUMA I/O框架可以將I/O對象組綁定到不滿足所有節(jié)點(diǎn)選擇要求的節(jié)點(diǎn)集合。例如,如果I/O對象組中的一個I/O對象包括專用CPU標(biāo)記,NUMAI/0框架可以確定I/O對象組中的所有I/O對象都可以綁定到相同節(jié)點(diǎn),而不管專用CPU標(biāo)記的存在。在步驟1130中,次優(yōu)選NUMA節(jié)點(diǎn)集合被提升到主優(yōu)選NUMA節(jié)點(diǎn)集合,流程返回到步驟1120。一旦選擇了主優(yōu)選NUMA節(jié)點(diǎn)集合,則在步驟1132中,I/O對象組中的一個或多個I/O對象就綁定到所選擇的主優(yōu)選NUMA節(jié)點(diǎn)集合。圖12A和圖12B示出根據(jù)本發(fā)明一實(shí)施例的示例性系統(tǒng)和時間線。如圖12A所示,系統(tǒng)包括節(jié)點(diǎn)A (1200A)、節(jié)點(diǎn)B (1200B)、節(jié)點(diǎn)C (1200C)和節(jié)點(diǎn)D (1200D)。節(jié)點(diǎn)A(1200A)經(jīng)由IC A (1202A)連接到節(jié)點(diǎn)B (1200B),并且經(jīng)由IC B (1202B)連接到節(jié)點(diǎn)C(1200C)。節(jié)點(diǎn) B(1200B)經(jīng)由 IC A (1200A)連接到節(jié)點(diǎn) A (1202A),并且經(jīng)由 IC CC1202C)連接到節(jié)點(diǎn)D (1200D)。節(jié)點(diǎn)C (1200C)經(jīng)由IC B (1202B)連接到節(jié)點(diǎn)A (1200A),并且經(jīng)由IC D (1202D)連接到節(jié)點(diǎn)D (1200D)。節(jié)點(diǎn)D (1200D)經(jīng)由IC C (1202C)連接到節(jié)點(diǎn)B (1200B),并且經(jīng)由IC D (1202D)連接到節(jié)點(diǎn)C (1200C)。繼續(xù)圖12A的論述,節(jié)點(diǎn)A (1200A)操作上連接到I/O器件組A (1204A),節(jié)點(diǎn)B(1200B)操作上連接到I/O器件組B (1204B)。此外,節(jié)點(diǎn)C (1200C)和節(jié)點(diǎn)D (1200D)都操作上連接到I/O器件C (1204C)。I/O器件C (1204C)包括物理網(wǎng)絡(luò)接口卡(NIC) (1206)。圖12B示出圖12B中的元件之間的示例性交互的時間線。具體地說,圖12B中的時間線描述在請求在處理與接收系統(tǒng)之間創(chuàng)建網(wǎng)絡(luò)連接的節(jié)點(diǎn)A上執(zhí)行的處理。為了示例的目的,假設(shè)接收系統(tǒng)在圖12A的示例性系統(tǒng)外部,從而網(wǎng)絡(luò)連接需要物理NIC。為了示例的目的,進(jìn)一步假設(shè)圖12B中的I/O子系統(tǒng)(1208)是負(fù)責(zé)在用戶級別和內(nèi)核級別處理與網(wǎng)絡(luò)目的地(例如,網(wǎng)絡(luò)MAC層)之間建立網(wǎng)絡(luò)連接的I/O子系統(tǒng)。在步驟1220中,節(jié)點(diǎn)A (1200A)上的處理將建立與網(wǎng)絡(luò)目的地的網(wǎng)絡(luò)連接的請求發(fā)送到I/O子系統(tǒng)(1208)。在步驟1222中,I/O子系統(tǒng)(1208)選擇在建立和連接中使用的NIC (1206),并且確定打開節(jié)點(diǎn)A (1200A)上的處理與NIC (1206)之間的連接所需的I/O資源。為了該示例的目的,假設(shè)I/O子系統(tǒng)確定一個線程和一個中斷是所需的I/O資源。在步驟1224中,I/O子系統(tǒng)(1208)創(chuàng)建用于該線程的I/O對象以及用于該中斷的I/O對象。在步驟1226中,I/O子系統(tǒng)(1208)將I/O對象作為I/O組發(fā)送到NUMA I/O框架(1210),并且指定對I/O對象組的約束,從而I/O對象組內(nèi)沒有I/O對象可以置于節(jié)點(diǎn)D (1200D)上。I/O子系統(tǒng)(1208)還指定I/O對象之間的親和性,從而I/O對象應(yīng)置于同一節(jié)點(diǎn)上,并且向NUMA I/O框架(1210)通知該親和性。在步驟1228中,NUMA I/O框架(1210)利用關(guān)于I/O對象親和性和約束的信息以及關(guān)于I/o對象所獲得的任何其它限制或指示來確定節(jié)點(diǎn)選擇要求。在該示例中,NUMA I/O框架(1210)所確定的節(jié)點(diǎn)選擇要求詳述所選擇的節(jié)點(diǎn)必須能夠執(zhí)行兩個I/O對象,并且必須不是節(jié)點(diǎn)D (1220D)。在步驟1230中,NUMA I/O框架(1210)詢問I/O拓?fù)淠K(1212)以確定最接近于NIC (1206)的一個或多個節(jié)點(diǎn)。I/O拓?fù)淠K(1212)響應(yīng)指出(未示出)節(jié)點(diǎn)C (1200C)和節(jié)點(diǎn)D (1200D)直接連接到I/O器件組C (1204C)和NIC (1206)。因此,節(jié)點(diǎn)C (1200C)和節(jié)點(diǎn)D (1200D)是主優(yōu)選節(jié)點(diǎn)。在步驟1232中,NUMA I/O框架(1210)將節(jié)點(diǎn)選擇要求應(yīng)用于主優(yōu)選節(jié)點(diǎn)。NUMAI/O框架(1210)確定:因?yàn)閷/O對象組的約束,所以不可以選擇節(jié)點(diǎn)D (1200D)。為了示例的目的,假設(shè)節(jié)點(diǎn)C (1200C)不能夠執(zhí)行線程和中斷二者。因此,NUMA I/O框架(1210)確定沒有主優(yōu)選NUMA節(jié)點(diǎn)集合可用。在步驟1234中,NUMA I/O框架(1210)詢問地點(diǎn)組模塊(1214)以確定最接近于主優(yōu)選節(jié)點(diǎn)的一個或多個節(jié)點(diǎn)。地點(diǎn)組模塊(1214)進(jìn)行響應(yīng)(未示出),通知NUMA I/O框架(1210)節(jié)點(diǎn)A (1200A)和節(jié)點(diǎn)B (1200B)直接連接到主優(yōu)選節(jié)點(diǎn)(節(jié)點(diǎn)C (1200C)和節(jié)點(diǎn)D (1200D))。因此,節(jié)點(diǎn)A (1200A)和節(jié)點(diǎn)B (1200B)是次優(yōu)選節(jié)點(diǎn)。在步驟1236中,NUMA I/O框架(1210)將節(jié)點(diǎn)選擇要求應(yīng)用于次優(yōu)選節(jié)點(diǎn)。為了示例的目的,假設(shè)節(jié)點(diǎn)A (1200A)和節(jié)點(diǎn)B (1200B)都被確定為滿足節(jié)點(diǎn)選擇要求。NUMAI/O框架(1210)然后將節(jié)點(diǎn)A (1200A)和節(jié)點(diǎn)B (1200B)都提升到主優(yōu)選節(jié)點(diǎn)集合。在步驟1238中,NUMA I/O框架(1210)確定兩個主優(yōu)選NUMA節(jié)點(diǎn)集合可用。假設(shè)選擇策略規(guī)定選擇最接近于調(diào)用處理的節(jié)點(diǎn),并且如果它們都距調(diào)用處理相等距離,則隨機(jī)地選擇一個節(jié)點(diǎn)。NUMAI/0框架(1210)將選擇策略應(yīng)用于主優(yōu)選節(jié)點(diǎn)集合,并且選擇最接近于調(diào)用處理的節(jié)點(diǎn)A (1200A)。在步驟1240中,NUMA I/O框架(1210)將I/O對象綁定到節(jié)點(diǎn)A (1200A),并且向內(nèi)核調(diào)度器(1216)通知該綁定。在步驟1242中,內(nèi)核調(diào)度器(1216)將與該I/O對象關(guān)聯(lián)的指令引導(dǎo)為在節(jié)點(diǎn)A (1200A)上處理。可以在實(shí)現(xiàn)NUMA架構(gòu)(1300)(或等同物)的基本上任何類型的計算機(jī)上實(shí)現(xiàn)本發(fā)明的實(shí)施例。例如,包括兩個或更多處理器(1302)、關(guān)聯(lián)的存儲器(1304)、儲存器件(1306)、兩個或更多I/O器件(未示出)以及如今的計算機(jī)典型的許多其它元件和功能的聯(lián)網(wǎng)計算機(jī)系統(tǒng)。聯(lián)網(wǎng)的計算機(jī)也可以包括輸入裝置(例如鍵盤(1308)和鼠標(biāo)(1310))以及輸出裝置(例如監(jiān)視器(1312))。聯(lián)網(wǎng)的計算機(jī)系統(tǒng)經(jīng)由網(wǎng)絡(luò)接口連接而連接到局域網(wǎng)(LAN)或廣域網(wǎng)。本領(lǐng)域技術(shù)人員應(yīng)理解,這些輸入和輸出裝置可以采取其它形式。此外,本領(lǐng)域技術(shù)人員應(yīng)理解,上述計算機(jī)的一個或多個元件可以位于遠(yuǎn)程處并且通過網(wǎng)絡(luò)連接到其它元件。此外,用于執(zhí)行本發(fā)明實(shí)施例的軟件指令可以存儲在非瞬時計算機(jī)可讀存儲介質(zhì)上,諸如壓縮盤(CD)、磁盤、帶、物理盤或任何其它非瞬時計算機(jī)可讀存儲介質(zhì)。雖然已經(jīng)關(guān)于有限數(shù)量的實(shí)施例描述了本發(fā)明,但受益于本公開的本領(lǐng)域技術(shù)人員應(yīng)理解,可以設(shè)計出不脫離在此所公開的本發(fā)明的范圍的其它實(shí)施例。相應(yīng)地,本發(fā)明的范圍應(yīng)僅由所附權(quán)利要求限定。
權(quán)利要求
1.一種非暫時性計算機(jī)可讀介質(zhì),包括軟件指令,該軟件指令在由處理器運(yùn)行時執(zhí)行一種方法,所述方法包括: 輸入/輸出(I/O)子系統(tǒng)從處理接收使用I/O器件的請求; 所述I/o子系統(tǒng)確定用于服務(wù)于所述請求的第一資源; 所述I/o子系統(tǒng)生成與所述第一資源對應(yīng)的第一 I/O對象,其中所述第一 I/O對象未被綁定; 所述I/o子系統(tǒng)將所述第一 I/O對象發(fā)送到非一致存儲器訪問(NUMA) I/O框架; 所述NUMA I/O框架選擇多個NUMA節(jié)點(diǎn)中所述第一 I/O對象將要綁定到的第一 NUMA節(jié)點(diǎn); 所述NUMA I/O框架將所述第一 I/O對象綁定到所述第一 NUMA節(jié)點(diǎn);以及通過在所述第一 NUMA節(jié)點(diǎn)上處理與所述第一 I/O對象對應(yīng)的所述第一資源來服務(wù)于所述請求。
2.如權(quán)利要求1所述的非暫時性計算機(jī)可讀介質(zhì),其中,所述方法還包括: 所述I/O子系統(tǒng)確定服務(wù)于所述請求所需的第二資源; 所述I/O子系統(tǒng)生成與所述第二資源對應(yīng)的第二 I/O對象,其中所述第二 I/O對象未被綁定; 所述I/o子系統(tǒng)將所述第二 I/O對象發(fā)送到所述NUMA I/O框架; 所述I/O子系統(tǒng)將所述第一 I/O對象與所述第二 I/O對象之間的親和性發(fā)送到所述NUMA I/O 框架; 所述NUMA I/O框架使用所述親和性來選擇所述多個NUMA節(jié)點(diǎn)中所述第二 I/O對象將要綁定到的第二 NUMA節(jié)點(diǎn);以及 所述NUMA I/O框架將所述第二 I/O對象綁定到所述第二 NUMA節(jié)點(diǎn), 其中,服務(wù)于所述請求包括在所述第二 NUMA節(jié)點(diǎn)上處理與所述第二 I/O對象對應(yīng)的所述第二資源。
3.如權(quán)利要求2所述的非暫時性計算機(jī)可讀介質(zhì),其中,所述第一I/O對象和所述第二I/O對象與I/O對象組相關(guān)聯(lián)。
4.如權(quán)利要求3所述的非暫時性計算機(jī)可讀介質(zhì),其中,所述I/O對象組與約束相關(guān)聯(lián),其中選擇所述第二 NUMA節(jié)點(diǎn)包括由所述NUMA I/O框架使用所述約束。
5.如權(quán)利要求2所述的非暫時性計算機(jī)可讀介質(zhì),其中,所述第一NUMA節(jié)點(diǎn)和所述第二 NUMA節(jié)點(diǎn)操作上連接到第三NUMA節(jié)點(diǎn),其中所述第三NUMA節(jié)點(diǎn)操作上連接到所述I/O器件。
6.如權(quán)利要求1所述的非暫時性計算機(jī)可讀介質(zhì),其中,將所述第一I/O對象發(fā)送到所述NUMA I/O框架包括: 所述I/O子系統(tǒng)向所述NUMA I/O框架發(fā)送指定所選擇的NUMA節(jié)點(diǎn)包括專用于與所述第一 I/O對象對應(yīng)的所述資源的可用處理器的親和性。
7.如權(quán)利要求1所述的非暫時性計算機(jī)可讀介質(zhì),其中,所述第一資源包括從包括線程和中斷的組所選擇的資源。
8.一種系統(tǒng) ,包括: 多個非一致存儲器訪問(NUMA)節(jié)點(diǎn),包括:第一 NUMA節(jié)點(diǎn),包括第一處理器和第一存儲器; 第二 NUMA節(jié)點(diǎn),包括第二處理器和第二存儲器; 輸入/輸出(I/O)器件組,包括I/O器件; I/O子系統(tǒng),在所述多個NUMA節(jié)點(diǎn)中的至少一個上運(yùn)行,被配置為: 從在所述第一 NUMA節(jié)點(diǎn)上執(zhí)行的處理接收使用所述I/O器件的請求; 確定服務(wù)于所述請求所需的第一資源;以及 生成與所述第一資源對應(yīng)的第一 I/O對象,其中所述第一 I/O對象未被綁定;以及 NUMA I/O框架,在所述多個NUMA節(jié)點(diǎn)中的至少一個上運(yùn)行,被配置為: 從所述I/O子系統(tǒng)接收所述第一 I/O對象; 選擇所述第二 NUMA節(jié)點(diǎn);以及 將所述第一 I/O對象綁定到所述第二 NUMA節(jié)點(diǎn), 其中,通過在所述第二 NUMA節(jié)點(diǎn)上處理與所述第一 I/O對象對應(yīng)的所述第一資源來服務(wù)于所述請求。
9.如權(quán)利要求8所述的系統(tǒng),還包括: I/O拓?fù)淠K,在所述多個NUMA節(jié)點(diǎn)中的至少一個上運(yùn)行,被配置為: 響應(yīng)于從所述NUMA I/O框架接收到`I/O器件標(biāo)識符,提供對所述多個NUMA節(jié)點(diǎn)中的第三NUMA節(jié)點(diǎn)的引用, 其中,所述第三NUMA節(jié)點(diǎn)直接連接到包括所述I/O器件的所述I/O器件組,且 其中,使用所述I/O器件標(biāo)識符來識別所述第三NUMA節(jié)點(diǎn)。
10.如權(quán)利要求8所述的系統(tǒng),還包括: 地點(diǎn)組模塊,在所述多個NUMA節(jié)點(diǎn)中的至少一個上運(yùn)行,被配置為: 響應(yīng)于從所述NUMA I/O框架接收到NUMA節(jié)點(diǎn)標(biāo)識符,提供對所述多個NUMA節(jié)點(diǎn)中的第三NUMA節(jié)點(diǎn)的引用,其中所述第三NUMA節(jié)點(diǎn)直接連接到與所接收到的NUMA節(jié)點(diǎn)標(biāo)識符對應(yīng)的NUMA節(jié)點(diǎn)。
11.如權(quán)利要求8所述的系統(tǒng), 其中,所述I/O子系統(tǒng)進(jìn)一步被配置為: 確定服務(wù)于所述請求所需的第二資源;以及 生成與所述第二資源對應(yīng)的第二 I/O對象,其中所述第二 I/O對象未被綁定; 其中,所述NUMA I/O框架進(jìn)一步被配置為: 從所述I/O子系統(tǒng)接收所述第二 I/O對象; 基于所述第一 I/O對象與所述第二 I/O對象之間的親和性來選擇所述第一 NUMA節(jié)點(diǎn);以及 將所述第二 I/O對象綁定到所述第一 NUMA節(jié)點(diǎn),且 其中,通過在所述第一 NUMA節(jié)點(diǎn)上處理與所述第二 I/O對象對應(yīng)的所述第二資源來服務(wù)于所述請求。
12.如權(quán)利要求8所述的系統(tǒng),其中,所述多個NUMAI/O節(jié)點(diǎn)還包括第三NUMA節(jié)點(diǎn),其中所述I/O器件組操作上連接到所述第三NUMA節(jié)點(diǎn)。
13.如權(quán)利要求12所述的系統(tǒng),其中,所述I/O器件組操作上連接到所述第二NUMA節(jié)點(diǎn)。
14.如權(quán)利要求8所述的系統(tǒng),其中,所述I/O器件是從包括網(wǎng)絡(luò)接口卡和持久性數(shù)據(jù)儲存器件的組選擇的器件。
15.一種用于將輸入/輸出(I/O)對象綁定到節(jié)點(diǎn)的方法,所述方法包括: 網(wǎng)絡(luò)媒體訪問連接(MAC)層從處理接收創(chuàng)建數(shù)據(jù)鏈路的請求,其中所述網(wǎng)絡(luò)MAC層與物理網(wǎng)絡(luò)接口卡(NIC)相關(guān)聯(lián); 所述網(wǎng)絡(luò)MAC層確定用于服務(wù)于所述請求的線程; 所述網(wǎng)絡(luò)MAC層生成與所述線程對應(yīng)的第一 I/O對象,其中所述第一 I/O對象未被綁定; 所述網(wǎng)絡(luò)MAC層將所述第一 I/O對象發(fā)送到非一致存儲器訪問(NUMA) I/O框架; 所述NUMA I/O框架選擇多個NUMA節(jié)點(diǎn)中所述第一 I/O對象將要綁定到的第一 NUMA節(jié)點(diǎn); 所述NUMA I/O框架將所述第一 I/O對象綁定到所述第一 NUMA節(jié)點(diǎn);以及通過在所述第一 NUMA節(jié)點(diǎn)上執(zhí)行與所述第一 I/O對象對應(yīng)的所述線程來服務(wù)于所述請求。
16.如權(quán)利要求15所述的方法,還包括: 所述網(wǎng)絡(luò)MAC層確定用于服務(wù)于所述請求的中斷; 所述網(wǎng)絡(luò)MAC層生成與所述中斷對應(yīng)的第二 I/O對象,其中所述第二 I/O對象未被綁定;` 所述網(wǎng)絡(luò)MAC層將所述第二 I/O對象發(fā)送到所述NUMA I/O框架; 所述NUMA I/O框架選擇所述多個NUMA節(jié)點(diǎn)中所述第二 I/O對象將要綁定到的第二NUMA節(jié)點(diǎn);以及 所述NUMA I/O框架將所述第二 I/O對象綁定到所述第二 NUMA節(jié)點(diǎn), 其中,服務(wù)于所述請求包括利用所述中斷將數(shù)據(jù)從所述處理發(fā)送到所述NIC。
17.如權(quán)利要求16所述的方法,其中,所述網(wǎng)絡(luò)MAC層指定所述中斷與所述線程之間的親和性。
18.如權(quán)利要求19所述的方法,其中,所述親和性指定所述線程和所述中斷二者都綁定到單個NUMA節(jié)點(diǎn)。
19.如權(quán)利要求15所述的方法,其中,服務(wù)于所述請求包括利用所述第一線程將數(shù)據(jù)從所述處理發(fā)送到所述NIC。
20.如權(quán)利要求15所述的方法,其中,所述第一NUMA節(jié)點(diǎn)不直接連接到所述NIC,其中所述處理不在所述第一 NUMA節(jié)點(diǎn)上執(zhí)行。
全文摘要
一種用于將輸入/輸出(I/O)對象綁定到節(jié)點(diǎn)的方法,包括子系統(tǒng)從處理接收使用I/O器件的請求;確定用于服務(wù)于所述請求的第一資源;生成與所述第一資源對應(yīng)的第一I/O對象,其中所述第一I/O對象是未綁定的;以及將所述第一I/O對象發(fā)送到非一致存儲器訪問(NUMA)I/O框架。所述方法還包括所述NUMA I/O框架選擇多個NUMA節(jié)點(diǎn)中所述第一I/O對象將要綁定到的第一NUMA節(jié)點(diǎn),并且將所述第一I/O對象綁定到所述第一NUMA節(jié)點(diǎn)。所述方法還包括通過在所述第一NUMA節(jié)點(diǎn)上處理與所述第一I/O對象對應(yīng)的所述第一資源來服務(wù)于所述請求。
文檔編號G06F13/40GK103201722SQ201180052399
公開日2013年7月10日 申請日期2011年8月31日 優(yōu)先權(quán)日2010年9月17日
發(fā)明者N·G·德勞克斯, J·丘, R·庫恩哈盼 申請人:甲骨文國際公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1