欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在非一致存儲器訪問架構(gòu)上使用處理位置來綁定io資源的制作方法

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

發(fā)明內(nèi)容
通常,在一方面,本發(fā)明涉及一種計算機可讀介質(zhì),其包括軟件指令,該指令在被處理器執(zhí)行時執(zhí)行一方法。所述方法包括:1/0 (輸入輸出)子系統(tǒng)從處理接收使用I/O器件的請求;所述I/o子系統(tǒng)確定用于服務(wù)該請求的資源;所述I/O子系統(tǒng)生成與所述資源對應(yīng)的第一 I/o對象,其中所述第一 I/O對象是未綁定的;以及所述I/O子系統(tǒng)生成proc對象,其中所述proc對象包括對請求使用所述I/O器件的處理的引用。所述方法還包括:所述I/O子系統(tǒng)將所述第一 I/O對象和所述proc對象發(fā)送到非一致存儲器訪問(NUMA) I/O框架;所述NUMA I/O框架使用所述proc對象來確定所述處理正在第一 NUMA節(jié)點上執(zhí)行;所述NUMA I/O框架基于確定所述處理正在所述第一NUMA節(jié)點上執(zhí)行而選擇所述第一NUMA節(jié)點;所述NUMA I/O框架基于所述選擇而將所述第一 I/O對象綁定到所述第一 NUMA節(jié)點;以及通過在所述第一 NUMA節(jié)點上處理與所述第一 I/O對象對應(yīng)的資源來服務(wù)于所述請求。通常,在一方面,本發(fā)明涉及一種系統(tǒng)。所述系統(tǒng)包括多個非一致存儲器訪問(NUMA)節(jié)點,其包括包含第一處理器和第一存儲器的第一 NUMA節(jié)點。所述系統(tǒng)還包括I/O器件組,其包括I/O器件。所述系統(tǒng)還包括:1/0子系統(tǒng),在所述多個NUMA節(jié)點中的至少一個上執(zhí)行,配置為:從在所述第一NUMA節(jié)點上執(zhí)行的處理接收使用所述I/O器件的請求;生成包括對請求使用所述I/O器件的處理的引用的proc對象;確定服務(wù)于所述請求所需的第一資源;以及生成與所述第一資源對應(yīng)的第一 1/0對象,其中所述第一 1/0對象是未綁定的。所述系統(tǒng)還包括:NUMA 1/0框架,在所述多個NUMA節(jié)點中的至少一個上執(zhí)行,配置為:從所述1/0子系統(tǒng)接收所述第一 1/0對象;從所述1/0子系統(tǒng)接收所述proc對象;使用所述proc對象來確定所述處理正在所述第一 NUMA節(jié)點上執(zhí)行;基于確定所述處理正在所述第一 NUMA節(jié)點上執(zhí)行而選擇所述第一 NUMA節(jié)點;以及將所述第一 1/0對象綁定到所述第一 NUMA節(jié)點,其中通過在所述第一 NUMA節(jié)點上處理與所述第一 1/0對象對應(yīng)的所述第一資源來服務(wù)于所述請求。通常,在一方面,本發(fā)明涉及一種用于將1/0對象綁定到節(jié)點的方法。所述方法包括:網(wǎng)絡(luò)棧從處理接收創(chuàng)建到I/o器件的連接的請求;所述網(wǎng)絡(luò)棧確定服務(wù)于所述請求的線程;所述網(wǎng)絡(luò)棧生成與所述線程對應(yīng)的第一 I/o對象,其中,所述第一 1/0對象是未綁定的;以及所述網(wǎng)絡(luò)棧生成proc對象,其中所述proc對象包括對發(fā)送創(chuàng)建所述連接的請求的所述處理的引用。所述方法還包括:所述網(wǎng)絡(luò)棧將所述第一 1/0對象和所述proc對象發(fā)送到非一致存儲器訪問(NUMA) 1/0框架;所述NUMA 1/0框架使用所述proc對象確定所述處理正在多個NUMA節(jié)點中的第一 NUMA節(jié)點上執(zhí)行;所述NUMA 1/0框架基于確定所述處理正在所述第一 NUMA節(jié)點上執(zhí)行而選擇所述第一 NUMA節(jié)點;所述NUMA I/O框架基于所述選擇而將所述第一 I/O對象綁定到所述第一 NUMA節(jié)點;以及通過在所述第一 NUMA節(jié)點上執(zhí)行與所述第一 I/O對象對應(yīng)的所述線程來服務(wù)于所述連接。


圖1示出根據(jù)本發(fā)明的一個或多個實施例的系統(tǒng)。圖2示出根據(jù)本發(fā)明的一個或多個實施例的NUMA節(jié)點。圖3示出根據(jù)本發(fā)明的一個或多個實施例的I/O器件組。圖4示出根據(jù)本發(fā)明的一個或多個實施例的系統(tǒng)。圖5示出根據(jù)本發(fā)明的一個或多個實施例的I/O拓撲模塊。圖6示出根據(jù)本發(fā)明的一個或多個實施例的地點組模塊。圖7示出根據(jù)本發(fā)明的一個或多個實施例的負載平衡模塊。圖8示出根據(jù)本發(fā)明的一個或多個實施例的I/O對象組。圖9示出根據(jù)本發(fā)明的一個或多個實施例的流程圖。圖10示出根據(jù)本發(fā)明的一個或多個實施例的流程圖。圖11示出根據(jù)本發(fā)明的一個或多個實施例的流程圖。圖12示出根據(jù)本發(fā)明的一個或多個實施例的流程圖。圖13示出根據(jù)本發(fā)明的一個或多個實施例的流程圖。圖14A示出根據(jù)本發(fā)明的一個或多個實施例的示例性系統(tǒng)。圖14B示出根據(jù)本發(fā)明的一個或多個實施例的示例性時間線。圖14C示出根據(jù)本發(fā)明的一個或多個實施例的示例性時間線。圖15示出根據(jù)本發(fā)明的一個或多個實施例的系統(tǒng)。
具體實施例方式將參照附圖描述本發(fā)明的示例性實施例。附圖中相似的項以相同的附圖標記示出。在本發(fā)明實施例中,闡述大量具體細節(jié)以提供對本發(fā)明的更透徹理解。然而對本領(lǐng)域技術(shù)人員而言將顯然的是,可以在沒有這些具體細節(jié)的情況下實踐本發(fā)明。在其它實例中,并未詳細描述公知特征,以免模糊本發(fā)明。通常,本發(fā)明的實施例涉及用于管理具有非一致存儲器訪問(NUMA)架構(gòu)的系統(tǒng)上的輸入/輸出(I/o)資源的框架。更特別地,本發(fā)明的實施例涉及用于動態(tài)地安置I/o資源和將I/O資源重新分配給NUMA節(jié)點的方法和系統(tǒng)。圖1示出根據(jù)本發(fā)明一實施例的系統(tǒng)。如圖1所示,該系統(tǒng)包括節(jié)點A(100A)、節(jié)點B (100B)、節(jié)點C (100C)和節(jié)點N (IOON)0每個節(jié)點(節(jié)點A (100A)、節(jié)點B (100B)、節(jié)點 C (100C)和節(jié)點 N (100N))操作上經(jīng)由互連(IC) (IC A (102A)、IC B (102B)、ICC (102C)、IC N (102N))連接到一個或多個其它節(jié)點。每個節(jié)點(節(jié)點A (100A)、節(jié)點B(100B)、節(jié)點C (100C)和節(jié)點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ā)明的一個或多個實施例中,圖1描述的系統(tǒng)架構(gòu)可以操作為具有NUMA架構(gòu)的系統(tǒng)。在本發(fā)明的一個或多個實施例中,IC (IC A (102A)、IC B (102B)、IC C(102C)、IC N (102N))可以實現(xiàn)為能夠在NUMA架構(gòu)系統(tǒng)上的節(jié)點之間傳送數(shù)據(jù)的計算機總線或數(shù)據(jù)鏈路。在本發(fā)明的一個或多個實施例中,I/O子系統(tǒng)(106)(又稱為I/O框架)提供系統(tǒng)處理與各種系統(tǒng)I/o功能之間的抽象層。具體地說,I/O子系統(tǒng)(106)可以對利用該框架的軟件實體如何與彼此通信進行多種控制,并且可以包括用于另外其他系統(tǒng)目的(例如電源管理、消耗方優(yōu)先級等)的機制。I/O子系統(tǒng)(例如I/O子系統(tǒng)(106))的示例包括但不限于存儲棧、網(wǎng)絡(luò)棧、InfiniBand ULP (InfiniBand是InfiniBand貿(mào)易協(xié)會的注冊商標)以及網(wǎng)絡(luò)MAC層。在本發(fā)明的一個或多個實施例中,每個I/O子系統(tǒng)從其它軟件實體接收使用或訪問其關(guān)聯(lián)的I/o器件的請求。在本發(fā)明的一個或多個實施例中,每個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é)點(例如節(jié)點A (100A))上、在多個節(jié)點(例如節(jié)點A (100A)和節(jié)點B (100B))上或在單個系統(tǒng)內(nèi)的所有節(jié)點上存在或運行。I/O子系統(tǒng)(106)中的每個也可以在單個節(jié)點(例如節(jié)點A (100A))上、在多個節(jié)點(例如節(jié)點A (100A)和節(jié)點B (100B))上或在單個系統(tǒng)內(nèi)的所有節(jié)點上運行。相應(yīng)地,為了示范,I/O子系統(tǒng)(106)和NUMA I/O框架(108)在圖1中示為在系統(tǒng)上的其它元件的外部。在本發(fā)明的一個或多個實施例中,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ā)明的一個或多個實施例中,NUMA I/O框架使用為了進一步的系統(tǒng)目標而實施的策略或信息收集模塊來確定I/O對象的安置。在本發(fā)明的一個或多個實施例中,NUMA I/O框架(108)將I/O資源綁定到系統(tǒng)上的一個或多個節(jié)點。將I/o資源綁定到節(jié)點可以包括:向內(nèi)核調(diào)度器通知將要在I/O資源綁定到的一個或多個節(jié)點上執(zhí)行與I/o資源關(guān)聯(lián)的指令。在本發(fā)明的一個或多個實施例中,一旦I/O資源綁定到一個或多個節(jié)點(例如經(jīng)由I/O對象),源自該I/O資源的指令或消息就被調(diào)度為用于在其綁定到的節(jié)點上執(zhí)行,直到存在NUMA I/O框架(108)的進一步干預(yù)。在本發(fā)明的一個實施例中,I/O資源可以綁定到節(jié)點的子集(例如經(jīng)由I/O對象)。作為綁定I/O資源的一部分,NUMA I/O框架(108)可以提供關(guān)于節(jié)點子集的內(nèi)核調(diào)度器信息。內(nèi)核調(diào)度器然后可以選擇在節(jié)點子集中的哪個節(jié)點上調(diào)度指令或消息以用于執(zhí)行。圖2示出根據(jù)本發(fā)明一實施例的節(jié)點。如圖2所示,節(jié)點A (200A)操作上經(jīng)由IC(IC A (202A)、IC N (202N))連接到節(jié)點 B (200B)和節(jié)點 N (200N)。節(jié)點 A (200A)包括經(jīng)由總線(210 )連接到存儲器(208 )的中央處理單元(CPU) (204)和高速緩存(cache ) (206 )。系統(tǒng)中的其它節(jié)點中的每個(節(jié)點B (200B)、節(jié)點N (200C))可以包括與節(jié)點A (200A)中所描述的那些基本相似的元件。在本發(fā)明的一個或多個實施例中,存儲器(208)包括本地應(yīng)用存儲器和本地內(nèi)核存儲器??梢苑峙湟徊糠直镜貎?nèi)核存儲器,以供系統(tǒng)側(cè)軟件元件(例如I/o子系統(tǒng)、NUMA I/O框架等)使用。在本發(fā)明一實施例中,存儲器(208)在對于節(jié)點A (200A)上的CPU (204)特定的存儲器管理器的控制之下,節(jié)點B (200B)的存儲器(未示出)在對于節(jié)點B (200B)的CPU (未示出)特定的存儲器管理器的控制之下。換言之,上述架構(gòu)與所有CPU從單個存儲器管理器競爭存儲器的架構(gòu)相比可以更高效地操作??梢栽诔松鲜鱿到y(tǒng)架構(gòu)之外的系統(tǒng)架構(gòu)上實施本發(fā)明的其它實施例。在本發(fā)明的一個或多個實施例中,可以用變化的頻率來接收利用CPU (204)和存儲器(208)在節(jié)點A (200A)上執(zhí)行的處理和其它指令集。例如,如果節(jié)點具有每秒處理10條指令的能力,但每秒僅接收5條指令,則該節(jié)點被稱為是利用不足的。如果同一節(jié)點替代地每秒接收12條指令,則該節(jié)點被稱為是利用過度的。節(jié)點的I/O負載容量指的是節(jié)點在不變得利用過度的情況下可以處理的額外指令量的量化(例如,利用不足的節(jié)點相對于節(jié)點的總處理能力將具有高I/O負載容量)。在本發(fā)明的一個或多個實施例中,每個節(jié)點(節(jié)點A (200A)、節(jié)點B (200B)、節(jié)點N(200B))可以操作地連接到一個或多個I/O器件組。如圖2所示的那樣,節(jié)點A (200A)操作上連接到一個或多個I/O器件組(10器件組A (212A)、I/0器件組N(212N))。在本發(fā)明一實施例中,I/O器件組中的一個或多個(例如I/O器件組A (212A)、I/0器件組N (212N))可以經(jīng)由IC連接到一個或多個節(jié)點。在本發(fā)明的一個或多個實施例中,NUMA節(jié)點可以包括CPU (例如CPU (204)),而不包括存儲器。替代地,在本發(fā)明一實施例中,NUMA節(jié)點可以包括存儲器(例如存儲器(208)),但不包括CPU。圖3示出根據(jù)本發(fā)明一實施例的I/O器件組。如圖3所示,I/O器件組(300)包括一個或多個I/o器件(10器件A (302A)、I/0器件N (302N)),其操作上連接到I/O總線(304),I/O總線(304)進而操作上連接到I/O橋(306)。I/O橋(306)操作上連接到一個或多個節(jié)點(節(jié)點A (308A)、節(jié)點N (308N))(例如圖1中的節(jié)點A (100A))。在本發(fā)明一實施例中,I/O器件(10器件A (302A)、I/O器件N (302N))指的是連接到計算機系統(tǒng)的資源,其可以由在系統(tǒng)上執(zhí)行的程序使用,以用于信息輸入和/或信息輸出。這種器件的示例可以包括但不限于盤驅(qū)動器、網(wǎng)絡(luò)接口卡、打印機、通用串行總線(USB)等。本領(lǐng)域技術(shù)人員應(yīng)理解,存在這里未列出的其它I/O器件。圖4示出根據(jù)本發(fā)明一實施例的系統(tǒng)。具體地說,圖4示出根據(jù)本發(fā)明一實施例在系統(tǒng)的一個或多個節(jié)點(例如圖1中的節(jié)點A (200A)、節(jié)點B (200B)和節(jié)點N (200N))上執(zhí)行的軟件實體之間的交互。如圖4所示,系統(tǒng)包括NUMA I/O框架(400),其直接地或經(jīng)由內(nèi)核親和性API (404)與I/O子系統(tǒng)(402)進行通信。I/O子系統(tǒng)(402)促進消耗方(406)與I/O器件(408)之間的通信(經(jīng)由器件驅(qū)動器(410))。I/O子系統(tǒng)也可以從管理工具(412)接收I/O對象約束或限制信息。在本發(fā)明的一個或多個實施例中,NUMA I/O框架(400)利用多個專用模塊來執(zhí)行具體任務(wù)和收集信息。這些模塊包括NUMA內(nèi)核存儲器分配模塊(414)、I/O負載平衡模塊(416)、NUMA地點(1cality)組模塊(418)和I/0拓撲模塊(420)。以下詳細描述這些元件中的每一個。在本發(fā)明的一個或多個實施例中,消耗方(消耗方(406))指的是利用或試圖利用系統(tǒng)的I/O資源的處理和程序。消耗方可以在內(nèi)核級別操作(例如,作為操作系統(tǒng)的一部分),或可以在用戶級別操作(例如,作為應(yīng)用的一部分)。I/o資源可以包括I/O器件(例如I/O器件(408))、處理資源(例如圖2中的CPU (204)和存儲器(208))以及促進處理與I/O器件之間的通信的其它系統(tǒng)元件(例如中斷、接收環(huán)、監(jiān)聽方等),并且可以包括物理或虛擬元件。在本發(fā)明的一個或多個實施例中,I/O子系統(tǒng)(402)管理服務(wù)于從消耗方(406)接收到的訪問I/O器件(408)的請求所需的I/O資源。這些請求可以包括調(diào)用以打開到I/O器件(408)的連接、或建立經(jīng)由適當(dāng)I/O子系統(tǒng)(402)的數(shù)據(jù)鏈路。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對象,其可以然后被提供給NUMAI/O框架(400)作為綁定I/O資源的請求的一部分(見圖8)。在本發(fā)明一實施例中,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é)點。(例如,物理上彼此靠近的節(jié)點、物理上靠近所指定的I/O器件的節(jié)點等)。在本發(fā)明的一個或多個實施例中,I/O對象以一個或多個I/O對象組(見圖8)發(fā)送到NUMA I/O框架(400)。在本發(fā)明一實施例中,NUMA I/O框架(400)將I/O對象綁定到節(jié)點。在本發(fā)明一實施例中,綁定I/o對象指的是將I/O對象所引用的I/O資源發(fā)布的任務(wù)(例如處理中斷、執(zhí)行線程)分配給系統(tǒng)上的一個或多個節(jié)點。在本發(fā)明的一個或多個實施例中,NUMA I/O框架(400)使用I/O對象內(nèi)的信息(例如親和性)以及來自系統(tǒng)上的其它模塊的信息和這些模塊的功能以完成綁定。下面分別關(guān)于圖5、圖6和圖7討論負載平衡模塊(416)、地點組模塊(418)和I/O拓撲模塊(420)。在本發(fā)明一實施例中,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é)點之間的距離最小化的方式來綁定I/O對象。在本發(fā)明的一個或多個實施例中,內(nèi)核存儲器分配模塊(414)允許NUMA I/O框架(400)分配來自任何附連節(jié)點的內(nèi)核存儲器(例如來自圖2中節(jié)點A (200A)中的存儲器(208))。在本發(fā)明一實施例中,負載平衡模塊(416)監(jiān)視每個節(jié)點執(zhí)行的工作量??紤]到資源管理和I/O拓撲(即節(jié)點相對于彼此的位置),NUMA I/O框架使用該信息來對節(jié)點之間的工作進行動態(tài)平衡。在本發(fā)明一實施例中,系統(tǒng)節(jié)點進行的工作量或處理速率被稱為節(jié)點的I/O負載。圖5示出根據(jù)本發(fā)明一實施例的I/O拓撲模塊。如圖5所示,I/O拓撲模塊(500)包括一個或多個I/o器件記錄(I/O器件記錄A (502A)、I/O器件記錄N (502N))。I/O拓撲模塊(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é)點直接連接到I/o器件的信息。替代地,在本發(fā)明的一個或多個實施例中,由I/O拓撲模塊(500)可訪問的系統(tǒng)上的其它內(nèi)核元件創(chuàng)建和維護I/o器件記錄。關(guān)于系統(tǒng)上的每個I/O器件的位置的信息可以被稱為I/o拓撲。在本發(fā)明的一個或多個實施例中,I/O拓撲模塊(500)包括如下功能:對NUMA I/O框架的詢問進行響應(yīng),從而對于給定的I/O器件,I/O拓撲模塊(500)返回直接連接到該I/O器件的一個或多個節(jié)點。在本發(fā)明一實施例中,這些節(jié)點被稱為優(yōu)選節(jié)點。圖6示出根據(jù)本發(fā)明一實施例的地點組模塊。如圖6所示,地點組模塊(600)包括一個或多個地點組(例如節(jié)點A地點組(602A)、節(jié)點N地點組(602N))。每個地點組維護關(guān)于系統(tǒng)上的節(jié)點的信息。該信息可以包括在系統(tǒng)上該節(jié)點相對于其它節(jié)點的位置(即,哪些節(jié)點與該節(jié)點直接相鄰)。關(guān)于系統(tǒng)上的每個節(jié)點的位置的信息可以被稱為NUMA拓撲。在本發(fā)明一實施例中,節(jié)點或I/O器件之間的距離指的是兩個元件之間的物理距離。在本發(fā)明一實施例中,該距離可以指的是兩個元件之間的節(jié)點數(shù)(又稱為“跳”)。此外,在本發(fā)明一實施例中,可以關(guān)于數(shù)據(jù)從一個節(jié)點行進到另一節(jié)點所需的時間(又稱為節(jié)點之間的等待時間(latency))來表示節(jié)點之間的距離。在本發(fā)明的一個或多個實施例中,地點組模塊(600)包括如下功能:對NUMA I/O框架的詢問進行響應(yīng),從而對于給定的節(jié)點,地點組模塊(600 )返回直接連接到該節(jié)點的一個或多個節(jié)點。在本發(fā)明一實施例中,這些節(jié)點被稱為優(yōu)選節(jié)點。圖7示出根據(jù)本發(fā)明一實施例的負載平衡模塊。如圖7所示,負載平衡模塊(700)包括一個或多個負載監(jiān)視器(例如節(jié)點A負載監(jiān)視器(702A)、節(jié)點N負載監(jiān)視器(702N))。每個負載監(jiān)視器(例如節(jié)點A負載監(jiān)視器(702A)、節(jié)點N負載監(jiān)視器(702N))維護關(guān)于對應(yīng)節(jié)點利用和I/O負載容量的信息(例如CPU利用、存儲器利用等)。具體地說,每個負載監(jiān)視器(例如節(jié)點A負載監(jiān)視器(702A)、節(jié)點N負載監(jiān)視器(702N))獲得指定度規(guī)(metric)的周期性測量(例如CPU利用、存儲器利用等),并且使用測量來計算節(jié)點的I/O負載。在本發(fā)明一實施例中,I/O負載包括反映所測量的度規(guī)的趨勢方向的指示符(例如在過去的10個周期上增大的CPU利用)。此外,在本發(fā)明一實施例中,每個負載監(jiān)視器(例如節(jié)點A負載監(jiān)視器(702A)、節(jié)點N負載監(jiān)視器(702N))包括如下功能:隨時間跟蹤度規(guī),并且檢測I/O負載的模式(例如CPU利用在星期一下午2點至5點之間最大)。I/O負載還用于計算節(jié)點I/O負載容量。圖8示出根據(jù)本發(fā)明一實施例的I/O對象組。如圖8所示,I/O對象組(800)包括一個或多個I/O對象(例如I/O對象A (802A)、I/0對象N (802N))和Proc對象(804)。在本發(fā)明的一個或多個實施例中,I/O對象是封裝對應(yīng)的I/O資源的句柄或?qū)?yīng)的I/O資源的引用的軟件結(jié)構(gòu)。每個I/O對象可以還包括與其它I/O對象的一個或多個親和性、關(guān)于I/O對象綁定的約束、以及專用CPU標記。在本發(fā)明的一個或多個實施例中,Proc對象(例如Proc對象(804))是將封裝對I/o子系統(tǒng)從其接收請求的處理或應(yīng)用的引用的軟件結(jié)構(gòu)。在本發(fā)明一實施例中,與Proc對象(804)對應(yīng)的處理或應(yīng)用在I/O子系統(tǒng)創(chuàng)建或初始化Proc對象(804)之前被綁定到節(jié)點。在本發(fā)明一實施例中,I/O子系統(tǒng)和NUMA I/O框架使用Proc對象(804)來維護關(guān)于其請求正被I/O對象組(800)中的I/O對象(例如I/O對象A (802A)、I/0對象N (802N))所服務(wù)的處理或應(yīng)用的位置信息。在本發(fā)明的一個或多個實施例中,Proc對象(804)包括用于對應(yīng)處理的標識符。在本發(fā)明一實施例中,NUMA I/O框架可以重新分配或重新綁定I/O對象組(800)中的一些或所有I/O對象(例如I/O對象A(802A)、I/0對象N(802N))。一旦發(fā)生該情況,NUMA I/O框架就可以將該標識符傳送到內(nèi)核調(diào)度器,并且通知內(nèi)核調(diào)度器還應(yīng)將與Proc對象(804)對應(yīng)的處理重新分配給與其它I/O對象相同的一個或多個NUMA節(jié)點。在本發(fā)明的一個或多個實施例中,每當(dāng)將I/O對象組中的I/O對象中的一個或多個重新分配或重新綁定到不同NUMA節(jié)點時,NUMA I/O框架就確定是否通知內(nèi)核調(diào)度器還應(yīng)重新分配與Proc對象(804)對應(yīng)的處理。在本發(fā)明一實施例中,基于處理重新分配策略來進行該確定。處理重新分配策略可以例如規(guī)定:當(dāng)I/O對象組中重新分配的I/O對象的數(shù)量超過閾值時,應(yīng)指示內(nèi)核調(diào)度器重新分配與該I/O對象組中的Proc對象對應(yīng)的處理。替代地,處理重新分配策略可以規(guī)定:當(dāng)在未也執(zhí)行與Proc對象對應(yīng)的處理的NUMA節(jié)點上執(zhí)行I/O對象總負載的預(yù)定百分比時,應(yīng)指示內(nèi)核調(diào)度器將處理重新分配給該NUMA節(jié)點。本領(lǐng)域技術(shù)人員應(yīng)理解,本發(fā)明不限于以上列出的處理重新分配策略。在本發(fā)明的一個或多個實施例中,親和性是I/O對象之間以及I/O對象(例如I/O對象A (802A)、I/O對象N (802N))與Proc對象(例如Proc對象(804))之間的關(guān)系強度(例如無關(guān)系、弱關(guān)系、強關(guān)系、消極關(guān)系等)的數(shù)量指示。兩個I/O對象(I/O對象A(802A)、I/O對象N (802N))之間或I/O對象(例如I/O對象A (802A)、I/O對象N (802N))與Proc對象(例如Proc對象(804))之間的親和性定義這兩個對象可以或應(yīng)綁定到的節(jié)點之間的最大或最小允許距離。在本發(fā)明的一個或多個實施例中,管理I/O對象(例如I/O對象A(802A)、I/O對象N (802N))和Proc對象(例如Proc對象(804))的I/O子系統(tǒng)指定親和性。在本發(fā)明的一個或多個實施例中,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對象的強親和性。在本發(fā)明的一個或多個實施例中,I/O子系統(tǒng)創(chuàng)建I/O對象(例如I/O對象A(802A)、I/O對象N (802N))與Proc對象(804)之間的親和性,以指定處理與I/O對象(例如I/O對象A(802A)、I/0對象N(802N))對應(yīng)的I/O資源的節(jié)點與處理與Proc對象(804)對應(yīng)的處理或應(yīng)用的節(jié)點之間的親和性。例如,創(chuàng)建連接的I/O子系統(tǒng)可以指定應(yīng)在與請求連接的處理相同的節(jié)點上處理用于連接的中斷,并且I/O對象組中的所有其它I/O對象可以綁定到任何相鄰節(jié)點。在該示例中,I/O子系統(tǒng)將指定Proc對象與和與中斷對應(yīng)的I/O對象之間的強親和性,以及Proc對象與I/O對象組中的其它I/O對象之間的較弱親和性。在本發(fā)明的一個或多個實施例中,約束可以指定I/O對象或I/O對象組必須綁定到的節(jié)點或節(jié)點組。約束可以用于將I/o對象或I/O對象組限制到所批準的或適當(dāng)?shù)墓?jié)點集合。約束可以用于將一個I/o對象或I/O對象組與其他的相隔離。在本發(fā)明的一個或多個實施例中,I/o子系統(tǒng)可以使用約束來強制分離系統(tǒng)上的區(qū)域或容器(container)。在本發(fā)明的一個或多個實施例中,專用CPU標記可以指示I/O對象應(yīng)綁定到具有可用于專用于I/o對象的CPU的節(jié)點。NUMA I/O框架可以將專用CPU標記解釋為絕對限制,或替代地解釋為優(yōu)選。在本發(fā)明一實施例中,專用CPU標記可以包括指示優(yōu)選強度的其它信息。在本發(fā)明的一個或多個實施例中,I/O對象包括與和I/O對象關(guān)聯(lián)的I/O資源所產(chǎn)生的I/O負載有關(guān)的信息。具體地說,I/O對象可以包括表示將在I/O對象綁定到的節(jié)點上施加的預(yù)期I/O負載的值。替代地,I/O對象可以包括允許NUMA I/O框架從系統(tǒng)上的另外地方獲得與I/O對象關(guān)聯(lián)的I/O負載的信息。此外,一旦I/O對象綁定到節(jié)點,就測量該節(jié)點上的I/O對象所產(chǎn)生的負載。在本發(fā)明的一個或多個實施例中,所測量的I/O對象的I/o負載被稱為有效I/O負載或I/O對象有效負載。測量可以用于更新表示I/O對象的預(yù)期I/o負載的值。在本發(fā)明一實施例中,一旦綁定I/O對象,就周期性地進行測量,并且測量被用于更新I/o對象的有效I/O負載。在本發(fā)明的一個或多個實施例中,I/O對象可以作為I/O對象組(800)提交給NUMAI/O框架。I/O對象組(800)可以包括應(yīng)用于I/O對象組(800)內(nèi)的所有I/O對象的親和性或約束。此外,在本發(fā)明一實施例中,NUMA I/O框架可以向I/O對象組(800)內(nèi)的所有I/O對象應(yīng)用固有的親和性或約束。圖9示出根據(jù)本發(fā)明的一個或多個實施例的用于將新I/O器件注冊到NUMA I/O框架的流程圖。在本發(fā)明的一個或多個實施例中,圖9所示的一個或多個步驟可以被省略、重復(fù)和/或按與圖9所示不同的順序執(zhí)行。相應(yīng)地,圖9所示的步驟的具體布置方式不應(yīng)理解為限制本發(fā)明的范圍。在步驟910中,I/O拓撲模塊檢測新I/O器件附連到系統(tǒng)。在步驟912中,I/O拓撲模塊創(chuàng)建新I/o器件記錄。在步驟914中,I/O拓撲模塊將新I/O器件信息加入到I/O器件記錄。在步驟916中,I/O拓撲模塊從地點組模塊或從其它系統(tǒng)資源(例如BIOS、機器描述等)獲得新I/O器件的位置信息。該信息可以包括未直接連接到I/O器件的對于I/O器件最接近的節(jié)點。在步驟918中,I/O拓撲模塊使用從地點組模塊所獲得的位置信息來更新I/O器件記錄。圖10示出根據(jù)本發(fā)明的一個或多個實施例的I/O子系統(tǒng)服務(wù)于請求的流程圖。在本發(fā)明的一個或多個實施例中,可以省略、重復(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ù)鏈路,從而處理可以穿過網(wǎng)絡(luò)發(fā)送并且傳輸數(shù)據(jù)。替代地,請求可以是獲取對存儲器件的訪問,以更改位于該器件上的數(shù)據(jù)。到來的請求的其它示例包括來自網(wǎng)絡(luò)棧的請求(例如創(chuàng)建VNIC)以及來自文件系統(tǒng)的請求。在步驟1012中,I/O子系統(tǒng)確定服務(wù)于該請求所需的資源。這可以包括例如線程的具體數(shù)量和中斷的具體數(shù)量。在本發(fā)明一實施例中,該確定是基于先前所服務(wù)的相似請求的需求的。在本發(fā)明一實施例中,由于分析使用信息,因此所確定的資源可以隨時間而改變。例如,創(chuàng)建處理與數(shù)據(jù)存儲器件之間的連接的I/O子系統(tǒng)可以配置為創(chuàng)建指定數(shù)量的用于線程的I/o對象以及指定數(shù)量的用于中斷的I/O對象,以用于所創(chuàng)建的類型的連接。I/o子系統(tǒng)可以進一步配置為指定線程不應(yīng)在分離節(jié)點上執(zhí)行,因為這樣做可能導(dǎo)致對于連接不可接受量的緩慢性或數(shù)據(jù)丟失。為此,I/o子系統(tǒng)可以通過指定I/O對象之間的強親和性來表示這點。在步驟1014中,I/O子系統(tǒng)創(chuàng)建用于所需資源的I/O對象。在步驟1016中,I/O子系統(tǒng)創(chuàng)建與進行請求的處理對應(yīng)的Proc對象。在步驟1018中,I/O子系統(tǒng)將I/O對象和Proc對象發(fā)送到NUMA I/O框架。在本發(fā)明一實施例中,通過援引親和性內(nèi)核API的方法調(diào)用來創(chuàng)建I/O對象。在步驟1020中,I/O子系統(tǒng)指定供NUMA I/O框架使用的I/O對象之間的親和性。在步驟1022中,NUMA I/O框架基于策略和親和性而將I/O對象綁定到節(jié)點。關(guān)于圖10和圖11詳細說明步驟1020。圖11示出根據(jù)本發(fā)明的一個或多個實施例的用于確定I/O對象組總負載的流程圖。在本發(fā)明的一個或多個實施例中,可以省略、重復(fù)和/或按與圖11所示不同的順序執(zhí)行圖11所示的一個或多個步驟。相應(yīng)地,圖11所示的步驟的具體布置方式不應(yīng)理解為限制本發(fā)明的范圍。雖然關(guān)于圖11所討論的步驟描述為由負載平衡模塊執(zhí)行,但在本發(fā)明一實施例中,NUMA I/O框架可以直接執(zhí)行這些步驟。在步驟1110中,負載平衡模塊接收I/O對象組。在步驟1112中,NUMA I/O框架選擇第一 I/O對象,從而與I/O對象關(guān)聯(lián)的有效I/O負載尚未加入到I/O對象組總負載(被稱為未標記的I/O對象)。在步驟1114中,所選擇的I/O對象的有效I/O負載加入到I/O對象組總負載。在步驟1116中,對所選擇的I/O對象進行標記。在本發(fā)明一實施例中,對I/O對象進行標記,從而其有效I/O負載將不會被加入到I/O對象組總負載超過一次。在步驟1118中,負載平衡模塊確定是否任何未標記的I/O對象余留在I/O對象組中。如果至少一個未標記的I/o對象余留在I/O對象組中,則流程返回到步驟1112。如果沒有未標記的I/o對象余留在I/O對象組中,則在步驟1120中,負載平衡模塊將I/O對象組總負載提供給NUMA I/O框架。圖12示出根據(jù)本發(fā)明的一個或多個實施例的用于通過NUMA I/O框架綁定I/O對象的流程圖。在本發(fā)明的一個或多個實施例中,可以省略、重復(fù)和/或按與圖12所示不同的順序執(zhí)行圖12所示的一個或多個步驟。相應(yīng)地,圖12所示的步驟的具體布置方式不應(yīng)理解為限制本發(fā)明的范圍。在步驟1210中,NUMA I/O框架接收將I/O對象組綁定到NUMA節(jié)點集合的請求。在步驟1212中,NUMA I/O框架獲得對于I/O對象組中的每個I/O對象的I/O對象親和性以及該對象組中的Proc對象與I/O對象之間的親和性。在本發(fā)明一實施例中,在I/O對象組中的所有I/O對象之間以及每個I/O對象與Proc對象之間假定親和性。在步驟1214中,NUMA I/O框架確定I/O對象組約束。在本發(fā)明一實施例中,親和性和約束嵌入在所接收到的I/O對象中。在步驟1216中,NUMA I/O框架從負載平衡模塊獲得I/O對象組總負載。在步驟1218中,NUMA I/O框架利用關(guān)于I/O對象和Proc對象親和性和約束的信息以及關(guān)于I/o對象獲得的任何其它限制或指示(包括專用CPU標記的存在)來確定節(jié)點選擇要求。在本發(fā)明一實施例中,節(jié)點選擇要求指定綁定I/o對象組將要考慮的節(jié)點或節(jié)點集合必須滿足的條件集合。這些條件可以包括距I/o器件設(shè)定距離內(nèi)的節(jié)點的具體布置。在本發(fā)明一實施例中,所述條件可以包括選擇節(jié)點的I/O負載容量。在本發(fā)明一實施例中,節(jié)點選擇要求可以僅被多于一個的節(jié)點所滿足。例如,如果I/O對象組中的一個I/O對象具有專用CPU標記,I/O對象組中沒有其他對象可被置于同一節(jié)點上,則節(jié)點選擇要求將需要要求使用多于一個的節(jié)點。因此,節(jié)點選擇要求可以需要I/O對象組綁定到節(jié)點或節(jié)點的組合,二者都可以被稱為節(jié)點集合或節(jié)點的集合。因此,節(jié)點集合可以由單個節(jié)點或節(jié)點組合構(gòu)成。在本發(fā)明一實施例中,只要I/O對象組存在,用于I/O對象組的節(jié)點選擇要求就一直存在。在本發(fā)明一實施例中,系統(tǒng)的節(jié)點上的I/o負載可以不同,從而NUMA I/O框架將I/O對象組重新綁定到不同的節(jié)點集合。在此情況下,I/O對象組移動到的節(jié)點集合也必須滿足相同的節(jié)點選擇要求。在步驟1220中,NUMA I/O框架使用負載平衡模塊來確定主優(yōu)選NUMA節(jié)點集合。具體地說,NUMA I/O框架詢問負載平衡模塊以確定具有至少等于I/O對象組總負載的I/
O負載容量的節(jié)點集合。在本發(fā)明一實施例中,NUMA I/O框架也可以詢問I/O拓撲模塊以確定具有必要I/O負載容量的哪個或哪些節(jié)點最接近于I/O器件。在本發(fā)明一實施例中,主優(yōu)選NUMA節(jié)點集合是包括必要I/O負載容量的最接近于I/O器件的節(jié)點集合。替代地,NUMA I/O框架可以確定主優(yōu)選NUMA節(jié)點集合是具有大于必要I/O負載容量的最高I/O負載容量的節(jié)點集合。在本發(fā)明一實施例中,使用這些因素的組合來確定主優(yōu)選NUMA節(jié)點集

口 ο在步驟1222中,NUMA I/O框架確定是否存在I/O對象組中的I/O對象可以綁定到的多于一個的主優(yōu)選NUMA節(jié)點集合。具體地說,NUMA I/O框架確定是否任何主優(yōu)選NUMA節(jié)點集合都滿足節(jié)點選擇要求(即,是否可用)。如果存在多于一個的可用主優(yōu)選NUMA節(jié)點集合,則在步驟1224中,基于選擇策略而選擇主優(yōu)選NUMA節(jié)點集合之一。在本發(fā)明一實施例中,當(dāng)存在兩個節(jié)點或節(jié)點集合都可以同樣地滿足節(jié)點選擇要求時,根據(jù)選擇策略選擇滿意的主優(yōu)選NUMA節(jié)點集合之一。在本發(fā)明一實施例中,選擇策略規(guī)定選擇具有最高I/O負載容量的節(jié)點集合(如果存在變化)。在本發(fā)明一實施例中,選擇策略規(guī)定選擇最接近于I/O器件的節(jié)點集合(如果存在變化)。在本發(fā)明一實施例中,選擇策略指定隨機地選擇一個主優(yōu)選NUMA節(jié)點集合。替代地,選擇策略可以獨立于用于確定主優(yōu)選NUMA節(jié)點集合的系統(tǒng)目標而促進其它系統(tǒng)目標。如果沒有多于一個的主優(yōu)選NUMA節(jié)點集合可用,則在步驟1226中,NUMA I/O框架確定是否存在滿足節(jié)點選擇要求的一個主優(yōu)選NUMA節(jié)點集合。如果存在一個主優(yōu)選NUMA節(jié)點集合,則在步驟1228中,選擇該主優(yōu)選NUMA節(jié)點集合。如果不存在主優(yōu)選NUMA節(jié)點集合,則在步驟1230中,NUMA I/O框架確定次優(yōu)選NUMA節(jié)點集合。具體地說,NUMA I/O框架詢問負載平衡模塊以獲得具有至少等于I/O對象組總負載的I/O負載容量的節(jié)點集合。根據(jù)該節(jié)點列表,將主優(yōu)選節(jié)點集合標記為不可用。從其余節(jié)點的列表確定次優(yōu)選節(jié)點集合。在本發(fā)明一實施例中,次優(yōu)選NUMA節(jié)點集合是來自包括必要I/O負載容量的最接近I/o器件的其余節(jié)點的列表的節(jié)點集合。在本發(fā)明一實施例中,NUMA I/O框架可以詢問地點組模塊以確定直接連接到最接近于I/O器件的節(jié)點的一個或多個節(jié)點。替代地,NUMAI/O框架可以來自其余節(jié)點的該列表的次優(yōu)選NUMA節(jié)點集合是具有大于必要I/O負載容量的最高I/O負載容量的節(jié)點集合。在本發(fā)明一實施例中,使用這些因素的組合從其余節(jié)點的列表確定次優(yōu)選NUMA節(jié)點集合。在本發(fā)明一實施例中,如果沒有主優(yōu)選NUMA節(jié)點集合可用,則系統(tǒng)等待,直到初始確定的主優(yōu)選NUMA節(jié)點集合之一變?yōu)榭捎?。此外,如果沒有主優(yōu)選NUMA節(jié)點集合可用,則NUMA I/O框架可以將I/O對象組綁定到不滿足所有節(jié)點選擇要求的節(jié)點集合。例如,如果I/O對象組中的一個I/O對象包括專用CPU標記,NUMA I/O框架可以確定I/O對象組中的所有I/O對象都可以綁定到相同節(jié)點,而不管專用CPU標記的存在。在步驟1232中,次優(yōu)選NUMA節(jié)點集合提升為主優(yōu)選NUMA節(jié)點集合,流程返回到步驟1222。一旦選擇了主優(yōu)選NUMA節(jié)點集合,則在步驟1234中,I/O對象組中的一個或多個I/O對象就綁定到所選擇的主優(yōu)選NUMA節(jié)點集合。圖13示出根據(jù)本發(fā)明的一個或多個實施例的通過NUMA I/O框架來綁定I/O對象的流程圖。在本發(fā)明的一個或多個實施例中,可以省略、重復(fù)和/或按與圖13所示不同的順序執(zhí)行圖13所示的一個或多個步驟。相應(yīng)地,圖13所示的步驟的具體布置方式不應(yīng)理解為限制本發(fā)明的范圍。在步驟1310中,NUMA I/O框架從負載平衡模塊獲得更新的I/O對象組總負載。更新的I/o對象組總負載可以包括例如每個I/O對象施加給其綁定到的節(jié)點上的I/O負載的較新測量以及I/o對象組總負載的重新計算。在步驟1312中,NUMA I/O框架使用關(guān)于I/O對象和Proc對象親和性和約束的信息以及關(guān)于I/o對象獲得的任何其它限制或指示(包括專用CPU標記的存在)來確定節(jié)點選擇要求。在步驟1314中,NUMA I/O框架使用節(jié)點選擇要求和負載平衡模塊來確定主優(yōu)選NUMA節(jié)點集合。具體地說,NUMA I/O框架詢問負載平衡模塊以確定具有至少等于重新計算的I/O對象組總負載的I/O負載容量的節(jié)點集合。在本發(fā)明一實施例中,NUMA I/O框架也可以詢問I/O拓撲模塊以確定具有必要I/O負載容量的哪個或哪些節(jié)點最接近于I/O器件。在本發(fā)明一實施例中,I/O對象組當(dāng)前綁定到的節(jié)點集合加入到從負載平衡模塊所獲得的節(jié)點集合列表。在本發(fā)明一實施例中,在確定主優(yōu)選NUMA節(jié)點集合中,考慮I/O對象組當(dāng)前綁定到的節(jié)點集合,就像從節(jié)點集合的當(dāng)前I/O負載減去重新計算的I/O對象組總負載。換句話說,從節(jié)點集合中的每個節(jié)點的總資源利用情況按比例減去重新計算的I/O對象組總負載。在本發(fā)明一實施例中,為了比較而忽略了重新計算的I/O對象組總負載,以防止顛簸(thrashing)。作為示例,假設(shè)主優(yōu)選NUMA節(jié)點集合被確定為具有至少等于重新計算的I/O對象組總負載的I/o負載容量的那些節(jié)點當(dāng)中具有最高I/O負載容量的節(jié)點。進一步假設(shè)將I/O對象組置于該節(jié)點集合上已經(jīng)導(dǎo)致該節(jié)點集合中的節(jié)點的資源利用與其它節(jié)點的資源利用相比相對較高。然而,在沒有I/o對象組的負擔(dān)的情況下,該節(jié)點集合中的節(jié)點可以具有比系統(tǒng)上的其它節(jié)點更高的I/o負載容量。在此情況下,I/O對象組不應(yīng)從其當(dāng)前綁定移動。在本發(fā)明一實施例中,從自負載平衡模塊獲得的節(jié)點列表確定主優(yōu)選NUMA節(jié)點集合(包括當(dāng)前綁定的節(jié)點集合)。在本發(fā)明一實施例中,主優(yōu)選NUMA節(jié)點集合是包括必要I/O負載容量的最接近于I/O器件的節(jié)點集合。替代地,NUMA I/O框架可以確定主優(yōu)選NUMA節(jié)點集合是具有大于必要I/O負載容量的最高I/O負載容量的節(jié)點集合。在本發(fā)明一實施例中,使用這些因素的組合來確定主優(yōu)選NUMA節(jié)點集合。
在步驟1316中,NUMA I/O框架確定當(dāng)前綁定到I/O對象組的節(jié)點集合是否在確定為主優(yōu)選NUMA節(jié)點集合的節(jié)點集合當(dāng)中。如果當(dāng)前綁定的節(jié)點集合在主優(yōu)選NUMA節(jié)點集合當(dāng)中,則系統(tǒng)上沒有其他節(jié)點集合優(yōu)于I/O對象組當(dāng)前綁定到的節(jié)點集合,流程結(jié)束。在本發(fā)明一實施例中,雖然可以存在其他主優(yōu)選NUMA節(jié)點集合,但這些節(jié)點集合全都未被賦予超過當(dāng)前綁定的節(jié)點集合的任何優(yōu)點,因為二者都被確定為主優(yōu)選NUMA節(jié)點集合。此外,先前已經(jīng)確定當(dāng)前綁定的節(jié)點集合滿足節(jié)點選擇要求。將I/O對象組重新綁定到不同的主優(yōu)選NUMA節(jié)點集合將不產(chǎn)生超過保持當(dāng)前安置的明顯優(yōu)點。如果在步驟1316中,NUMA I/O框架確定當(dāng)前綁定節(jié)點集合不在主優(yōu)選NUMA節(jié)點集合當(dāng)中,則在步驟1318中,NUMA I/O框架確定是否存在I/O對象組中的I/O對象可以綁定到的多于一個的主優(yōu)選NUMA節(jié)點集合。在本發(fā)明一實施例中,當(dāng)多于一個的NUMA節(jié)點集合滿足節(jié)點選擇要求并且每個都具有用于處理I/O對象組總負載的等同容量時,可以存在多于一個的主優(yōu)選NUMA節(jié)點集合。如果存在多于一個的可用主優(yōu)選NUMA節(jié)點集合,則在步驟1320中,基于選擇策略而選擇主優(yōu)選NUMA節(jié)點集合之一。如果不存在多于一個的主優(yōu)選NUMA節(jié)點集合,則在步驟1322中,NUMA I/O框架確定是否存在一個主優(yōu)選NUMA節(jié)點集合。如果存在一個主優(yōu)選NUMA節(jié)點集合,則在步驟1324中,選擇主優(yōu)選NUMA節(jié)點集合。如果不存在主優(yōu)選NUMA節(jié)點集合,則在步驟1326中,NUMA I/O框架使用負載平衡模塊來確定次優(yōu)選NUMA節(jié)點集合。具體地說,NUMA I/O框架詢問負載平衡模塊以獲得具有至少等于I/O對象組總負載的I/O負載容量的節(jié)點集合。根據(jù)該節(jié)點列表,將主優(yōu)選節(jié)點集合標記為不可用。從其余節(jié)點的列表確定次優(yōu)選節(jié)點集合。在本發(fā)明一實施例中,次優(yōu)選NUMA節(jié)點集合是來自包括必要I/O負載容量的最接近于I/O器件的其余節(jié)點的列表的節(jié)點集合。在本發(fā)明一實施例中,NUMA I/O框架可以詢問地點組模塊以確定直接連接到最接近于I/O器件的節(jié)點的一個或多個節(jié)點。替代地,NUMA I/O框架可以確定來自其余節(jié)點的列表的次優(yōu)選NUMA節(jié)點集合是具有大于必要I/O負載容量的最高I/O負載容量的節(jié)點集合。在本發(fā)明一實施例中,使用這些因素的組合從其余節(jié)點的列表確定次優(yōu)選NUMA節(jié)點集合。在本發(fā)明一實施例中,如果不存在可用的主優(yōu)選NUMA節(jié)點集合,則系統(tǒng)等待,直到初始確定的主優(yōu)選NUMA節(jié)點集合之一變?yōu)榭捎?。在步驟1328中,次優(yōu)選NUMA節(jié)點集合提升到主優(yōu)選NUMA節(jié)點集合,流程返回到步驟1316。一旦選擇了主優(yōu)選NUMA節(jié)點集合,則在步驟1330中,I/O對象組中的一個或多個I/O對象就綁定到所選擇的主優(yōu)選NUMA節(jié)點集合。在步驟1332中,NUMA I/O框架確定是否通知內(nèi)核調(diào)度器與Proc對象對應(yīng)的處理也應(yīng)綁定到所選擇的主優(yōu)選NUMA節(jié)點集合或系統(tǒng)上的另一 NUMA節(jié)點。在本發(fā)明一實施例中,使用處理重新分配策略來進行該確定。圖14A、圖14B和圖14C示出根據(jù)本發(fā)明一實施例的示例性系統(tǒng)和時間線。如圖14A所示,系統(tǒng)包括節(jié)點A (1400A)、節(jié)點B (1400B)、節(jié)點C (1400C)和節(jié)點D (1400D)o節(jié)點A (1400A)經(jīng)由IC A (1402A)連接到節(jié)點B (1400B),并且經(jīng)由IC B (1402B)連接到節(jié)點C (1400C)o節(jié)點B (1400Β)經(jīng)由IC A (1402Α)連接到節(jié)點A (1400Α),并且經(jīng)由IC C(1402C)連接到節(jié)點 D (1400D)o 節(jié)點 C (1400C)經(jīng)由 IC B (1402Β)連接到節(jié)點 A (1400Α),并且經(jīng)由IC D (1402D)連接到節(jié)點D (1400D)o節(jié)點D (1400D)經(jīng)由IC C (1402C)連接到節(jié)點B (1400B),并且經(jīng)由IC D (1402D)連接到節(jié)點C (1400C)o繼續(xù)討論圖14A,節(jié)點A (1400A)操作上連接到I/O器件組A (1404A),節(jié)點B(1400B)操作上連接到I/O器件組B (1404B)。此外,節(jié)點C (1400C)和節(jié)點D (1400D)都操作上連接到I/O器件(1404C)。I/O器件C (1404C)包括物理網(wǎng)絡(luò)接口卡(NIC) (1406)。圖14B示出圖14A中的元件之間的示例性交互的時間線。具體地說,圖14B中的時間線描述在節(jié)點A上執(zhí)行的處理,請求在處理與接收系統(tǒng)之間創(chuàng)建網(wǎng)絡(luò)連接。為了示例的目的,假設(shè)接收系統(tǒng)在圖14A的示例性系統(tǒng)外部,從而網(wǎng)絡(luò)連接需要物理NIC。描述在同一系統(tǒng)上的兩個處理之間建立網(wǎng)絡(luò)連接的系統(tǒng)的其它實施例將不從該示例明顯變化,但可以涉及虛擬NIC而不是物理NIC。為了示例的目的,進一步假設(shè)圖14B中的I/O子系統(tǒng)(1408)是負責(zé)在用戶級別和內(nèi)核級別處理與附連到系統(tǒng)的I/O器件之間建立數(shù)據(jù)傳送連接的網(wǎng)絡(luò)棧。在步驟1420中,節(jié)點A (1400A)上的處理將請求發(fā)送到I/O子系統(tǒng)(1408),以建立與網(wǎng)絡(luò)目的地的網(wǎng)絡(luò)連接。在步驟1422中,I/O子系統(tǒng)(1408)選擇在建立和連接中使用的NIC (1406),并且確定打開節(jié)點A (1400A)上的處理與NIC (1406)之間的連接所需的I/O資源。為了該示例的目的,假設(shè)I/O子系統(tǒng)確定一個線程和一個中斷是必需的I/O資源。在步驟1424中,I/O子系統(tǒng)(1408)創(chuàng)建用于該線程的I/O對象以及用于該中斷的I/O對象。此外,I/O子系統(tǒng)(1408)創(chuàng)建與節(jié)點A (1400)上的請求處理對應(yīng)的Proc對象。在步驟1426中,I/O子系統(tǒng)(1408)發(fā)送I/O對象和Proc對象作為I/O組。I/O子系統(tǒng)(1408)還指定I/O對象之間的親和性,從而I/O對象應(yīng)置于相同節(jié)點上,并且I/O對象應(yīng)每個被放置在相同節(jié)點或與Proc對象鄰近的節(jié)點上。I/O子系統(tǒng)(1408)然后向NUMA I/O框架(1410)通知親和性。在步驟1428中,NUMA I/O框架(1410)使用關(guān)于I/O對象和Proc對象親和性和約束的信息以及關(guān)于I/o對象所獲得的任何其它限制或指示來確定節(jié)點選擇要求。此外,NUMA I/O框架從每個I/O對象的有效I/O負載確定I/O對象組總負載。對于該示例,NUMAI/O框架(1410)所確定的節(jié)點選擇要求詳述所選擇的節(jié)點必須能夠執(zhí)行兩個I/O對象,并且必須是與執(zhí)行與Proc對象對應(yīng)的處理的節(jié)點相同或相鄰的節(jié)點。在步驟1430中,NUMA I/O框架(1410)詢問負載平衡模塊(1412)以確定具有至少等于所計算的I/o對象組總負載的I/O負載容量的節(jié)點集合。為了該示例的目的,假設(shè)負載平衡模塊(1412)回應(yīng)指出(未示出)節(jié)點D (1200D)和節(jié)點B (1200B)具有必要的I/O負載容量。NUMA I/O框架(1410)也可以詢問I/O拓撲模塊(未示出)以確定最接近于NIC(1406)的一個或多個節(jié)點。I/O拓撲模塊(未示出)回應(yīng)指出節(jié)點C(HOOC)和節(jié)點D(HOOD)直接連接到I/O器件組C (1404C)和NIC (1406)。為了示例的目的,假設(shè)NUMA I/O框架將主優(yōu)選NUMA節(jié)點確定為最接近于具有必要I/O負載容量的I/O器件的節(jié)點。因此,節(jié)點D(1400D)是唯一的主優(yōu)選節(jié)點。在步驟1432中,NUMA I/O框架(1410)將節(jié)點選擇要求應(yīng)用于主優(yōu)選節(jié)點。NUMAI/O框架(1410)確定節(jié)點D (1400D)不是與Proc對象對應(yīng)的處理位于其上的節(jié)點。此外,節(jié)點D(HOOD)也不鄰近于與Proc對象對應(yīng)的處理所位于其上的節(jié)點。因此,NUMA I/O框架(1410)確定沒有主優(yōu)選NUMA節(jié)點集合可用。
在步驟1434中,NUMA I/O框架(1410)詢問地點組模塊(1414)以確定最接近于主優(yōu)選節(jié)點的一個或多個節(jié)點。地點組模塊(1414)回應(yīng)(未示出)通知NUMA I/O框架(1410)節(jié)點A (1400A)和節(jié)點B (1400B)直接連接到主優(yōu)選節(jié)點(節(jié)點C (1400C)和節(jié)點D (1400D))。NUMA I/O框架(1410)然后確定節(jié)點A (1400A)或節(jié)點B (1400B)是否具有至少等于I/o對象組總負載的I/O負載容量。然后假設(shè)節(jié)點A (1400A)和節(jié)點B (1400B)都具有必要的I/O負載容量。因此,節(jié)點A (1400A)和節(jié)點B (1400B)是次優(yōu)選節(jié)點,并且隨后被提升到主優(yōu)選NUMA節(jié)點集合。繼續(xù)步驟1434,NUMA I/O框架(1410)將節(jié)點選擇要求應(yīng)用于次優(yōu)選節(jié)點。NUMAI/O框架(1410)確定節(jié)點A (1400A)和節(jié)點B (1400B)都不是與Proc對象對應(yīng)的處理所位于的節(jié)點。然而,節(jié)點A (1400A)和節(jié)點B (1400B)都鄰近于與Proc對象對應(yīng)的處理所位于的節(jié)點。因此,確定節(jié)點A (1400A)和節(jié)點B (1400B)都滿足節(jié)點選擇要求。此外,假設(shè)選擇策略規(guī)定選擇具有最高當(dāng)前I/O負載容量的節(jié)點。NUMA I/O框架(1410)將選擇策略應(yīng)用于主優(yōu)選節(jié)點集合,并且選擇節(jié)點B (1400B)o在步驟1436中,NUMA I/O框架(1410)將I/O對象綁定到節(jié)點B (1400B),并且向內(nèi)核調(diào)度器(1414)通知該綁定。在步驟1438中,內(nèi)核調(diào)度器(1414)將與I/O對象關(guān)聯(lián)的指令引導(dǎo)為在節(jié)點B (1400B)上處理。圖14C示出圖14A中的元件之間的示例性交互的時間線。具體地說,圖14C中的時間線描述NUMA I/O框架重新平衡圖14A中所描述的系統(tǒng)上的I/O負載。在步驟1460中,NUMA I/O框架(1410)詢問負載平衡模塊(1412)以獲得I/O對象組中的每個I/o對象的當(dāng)前有效I/O負載。在步驟1462中,負載平衡模塊(1412)以I/
O對象組中的每個I/O對象的當(dāng)前有效I/O負載進行響應(yīng)。在步驟1464中,NUMA I/O框架(1410)從I/O對象組中的每個I/O對象的當(dāng)前有效I/O負載重新計算I/O對象組總負載。假設(shè)在給定示例中,使用圖14B中的步驟所打開的連接開始以較高速率傳送數(shù)據(jù),從而I/O對象組中的每個I/O對象的有效I/O負載已經(jīng)增加到兩倍。因此,NUMA I/O框架(1410)必須重新計算I/O對象組總負載。假設(shè)重新計算的I/O對象組總負載被計算為值X。在步驟1466中,NUMA I/O框架(1410)獲得先前確定的節(jié)點選擇要求。在步驟1468中,NUMA I/O框架(1410)詢問負載平衡模塊(1412)以獲得具有至少等于重新計算的I/O對象組總負載X的I/O負載容量的節(jié)點的列表。為了該示例的目的,假設(shè)負載平衡模塊(1412)以詳述節(jié)點A (1400A)具有X+1的當(dāng)前I/O負載容量,節(jié)點C (1400C)具有X+3的當(dāng)前I/O負載容量,節(jié)點D (1400D)具有X+4的當(dāng)前I/O負載容量的列表進行響應(yīng)。NUMAI/O框架(1410)還詢問負載平衡模塊以獲得具有2的當(dāng)前I/O負載容量的節(jié)點B (1400B)的當(dāng)前I/O負載容量。NUMA I/O框架(1410)將節(jié)點B(HOOB)的I/O負載容量計算為當(dāng)前I/O負載容量減去當(dāng)前I/O對象組總負載X。NUMA I/O框架(1410)然后將節(jié)點B (1400B)加入具有必需I/O負載容量的節(jié)點的列表,并且將節(jié)點B (1400B)的當(dāng)前I/O負載容量指定為X+2。在步驟1470中,NUMA I/O框架(1410)詢問I/O拓撲模塊(1416)以確定最接近于NIC (1406)的一個或多個節(jié)點。在步驟1472中,I/O拓撲模塊(1416)響應(yīng)指出節(jié)點C(1400C)和節(jié)點D (1400D)直接連接到I/O器件組C (1404C)和NIC (1406)。為了示例的目的,假設(shè)NUMA I/O框架將主優(yōu)選NUMA節(jié)點確定為與具有必要I/O負載容量的I/o器件最接近的節(jié)點。在進行確定時,因此,因為并無其它節(jié)點具有X+4的I/O負載容量,所以僅節(jié)點D (1400D)是主優(yōu)選節(jié)點。在步驟1474中,NUMA I/O框架(1410)確定I/O對象組綁定到的當(dāng)前節(jié)點(節(jié)點B(1400B))不在主優(yōu)選NUMA節(jié)點當(dāng)中。NUMA I/O框架(1410)然后將節(jié)點選擇要求應(yīng)用于主優(yōu)選節(jié)點。NUMA I/O框架(1410)確定因為對I/O對象組的約束,所以可以不選擇節(jié)點D(1400D)o因此,NUMA I/O框架(1410)確定沒有主優(yōu)選NUMA節(jié)點集合可用。在步驟1476中,NUMA I/O框架(1410)確定次優(yōu)選NUMA節(jié)點集合。為了示例的目的,假設(shè)從具有第二最高I/o負載容量的最接近于I/o器件的節(jié)點確定次優(yōu)選NUMA節(jié)點集合。替代地,可以從最接近于I/O器件的節(jié)點確定次優(yōu)選NUMA節(jié)點集合,而不管是大于必要I/O負載容量的任何I/O負載容量。在步驟1478中,NUMA I/O框架(1410)詢問I/O拓撲模塊(1416)以獲得最接近于I/o器件的節(jié)點的列表,從該列表移除節(jié)點D (1400D).在步驟1480中,I/O拓撲模塊(1416)響應(yīng)指出節(jié)點C (1400C)直接連接到I/O器件組C (1404C)和NIC (1406)。節(jié)點C (1400C)因此被確定為次優(yōu)選NUMA節(jié)點集合,并且提升到主優(yōu)選節(jié)點集合。替代地,如果I/O拓撲模塊(1416)以已經(jīng)摒除的節(jié)點的列表進行響應(yīng),則NUMA I/O框架將詢問地點組模塊以確定最接近于所摒除的節(jié)點的節(jié)點集合。在步驟1482中,NUMA I/O框架(1410)確定I/O對象組綁定到的當(dāng)前節(jié)點(節(jié)點B(1400B))不在主優(yōu)選NUMA節(jié)點當(dāng)中。在步驟1484中,NUMA I/O框架(1410)將節(jié)點選擇要求應(yīng)用于主優(yōu)選節(jié)點集合。在步驟1486中,NUMA I/O框架(1410)確定一個主優(yōu)選節(jié)點集合(節(jié)點C (1400C))可用。在步驟1488中,NUMA I/O框架(1410)將I/O對象綁定到節(jié)點C (1400C),并且向內(nèi)核調(diào)度器(1414)通知該綁定。在步驟1490中,NUMA I/O框架(1410)確定還應(yīng)重新分配與Proc對象對應(yīng)的處理,并且通知內(nèi)核調(diào)度器(1414)。為了示例的目的,假設(shè)確定是根據(jù)如下規(guī)定的處理重新分配策略的:如果已經(jīng)將I/O對象組中的多數(shù)I/
O對象重新分配到并非處理當(dāng)前正在其上執(zhí)行的NUMA節(jié)點的NUMA節(jié)點,則處理應(yīng)被移動。在步驟1492中,內(nèi)核調(diào)度器(1414)將與I/O對象關(guān)聯(lián)的指令引導(dǎo)為在節(jié)點C (1400C)上處理??梢栽趯崿F(xiàn)NUMA架構(gòu)(1500)(或等同物)的基本上任何類型的計算機上實現(xiàn)本發(fā)明的實施例。例如,包括兩個或更多處理器(1502)、關(guān)聯(lián)的存儲器(1504)、儲存器件(1506)、兩個或更多I/O器件(未示出)以及如今的計算機典型的許多其它元件和功能的聯(lián)網(wǎng)計算機系統(tǒng)。聯(lián)網(wǎng)的計算機也可以包括輸入裝置(例如鍵盤(1508)和鼠標(1510))以及輸出裝置(例如監(jiān)視器(1512))。聯(lián)網(wǎng)的計算機系統(tǒng)經(jīng)由網(wǎng)絡(luò)接口連接而連接到局域網(wǎng)(LAN)或廣域網(wǎng)。本領(lǐng)域技術(shù)人員應(yīng)理解,這些輸入和輸出裝置可以采取其它形式。此外,本領(lǐng)域技術(shù)人員應(yīng)理解,上述計算機的一個或多個元件可以位于遠程處并且通過網(wǎng)絡(luò)連接到其它元件。此外,用于執(zhí)行本發(fā)明實施例的軟件指令可以存儲在非瞬時計算機可讀存儲介質(zhì)上,諸如壓縮盤(CD)、磁盤、帶、物理盤或任何其它非瞬時計算機可讀存儲介質(zhì)。雖然已經(jīng)關(guān)于有限數(shù)量的實施例描述了本發(fā)明,但受益于本公開的本領(lǐng)域技術(shù)人員應(yīng)理解,可以設(shè)計出不脫離在此所公開的本發(fā)明的范圍的其它實施例。相應(yīng)地,本發(fā)明的范圍應(yīng)僅由所附權(quán)利要求限定。
權(quán)利要求
1.一種包括軟件指令的非暫時性計算機可讀介質(zhì),所述軟件指令在由處理器執(zhí)行時執(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)生成proc對象,其中所述proc對象包括對請求使用所述I/O器件的處理的引用; 所述I/O子系統(tǒng)將所述第一 I/O對象和所述proc對象發(fā)送到非一致存儲器訪問(NUMA) I/O 框架; 所述NUMA I/O框架使用所述proc對象確定所述處理正在多個NUMA節(jié)點中的第一NUMA節(jié)點上執(zhí)行; 所述NUMA I/O框架基于確定所述處理正在所述第一 NUMA節(jié)點上執(zhí)行而選擇所述第一NUMA節(jié)點; 所述NUMA I/O框架基于所述選 擇而將所述第一 I/O對象綁定到所述第一 NUMA節(jié)點;以及 通過在所述第一 NUMA節(jié)點上處理與所述第一 I/O對象對應(yīng)的資源來服務(wù)于所述請求。
2.如權(quán)利要求1所述的非暫時性計算機可讀介質(zhì),其中,基于所述確定而選擇所述第一NUMA節(jié)點包括: 所述NUMA I/O框架從所述第一 I/O對象獲得I/O對象有效負載; 所述NUMA I/O框架獲得所述多個NUMA節(jié)點中的所述第一 NUMA節(jié)點的I/O負載容量;以及 所述NUMA I/O框架確定所述I/O負載容量大于所述I/O對象有效負載。
3.如權(quán)利要求1所述的非暫時性計算機可讀介質(zhì),其中,將所述第一I/O對象和所述proc對象發(fā)送到所述NUMA I/O框架包括: 指示所述第一 I/O對象與所述proc對象之間的親和性。
4.如權(quán)利要求3所述的非暫時性計算機可讀介質(zhì),其中,所述方法還包括: 所述NUMA I/O框架基于確定所述第一 NUMA節(jié)點與所述多個NUMA節(jié)點中的第二 NUMA節(jié)點之間的關(guān)系滿足所述親和性而選擇所述第二 NUMA節(jié)點; 所述NUMA I/O框架基于選擇所述第二 NUMA節(jié)點而將所述第一 I/O對象綁定到所述第二NUMA節(jié)點; 通過在所述第二 NUMA節(jié)點上處理與所述第一 I/O對象對應(yīng)的資源來服務(wù)于所述請求。
5.如權(quán)利要求4所述的非暫時性計算機可讀介質(zhì),其中,選擇所述第二NUMA節(jié)點包括: 所述NUMA I/O框架從所述第一 I/O對象獲得I/O對象有效負載; 所述NUMA I/O框架獲得所述第二 NUMA節(jié)點的I/O負載容量;以及 所述NUMA I/O框架確定所述I/O負載容量大于所述I/O對象有效負載。
6.如權(quán)利要求1所述的非暫時性計算機可讀介質(zhì),其中,所述proc對象和所述第一I/O對象在I/O對象組中。
7.如權(quán)利要求6所述的非暫時性計算機可讀介質(zhì),其中,所述I/O對象組包括包含第二I/O對象與所述proc對象之間的親和性的所述第二 I/O對象。
8.一種系統(tǒng),包括: 多個非一致存儲器訪問(NUMA)節(jié)點,包括: 第一 NUMA節(jié)點,包括第一處理器和第一存儲器; 輸入/輸出(I/O)器件組,包括I/O器件; I/O子系統(tǒng),在所述多個NUMA節(jié)點中的至少一個上執(zhí)行,所述I/O子系統(tǒng)被配置為: 從在所述第一 NUMA節(jié)點上執(zhí)行的處理接收使用所述I/O器件的請求; 生成包括對請求使用所述I/O器件的所述處理的引用的proc對象; 確定服務(wù)于所述請求所需的第一資源;以及 生成與所述第一資源對應(yīng)的第一 I/O對象,其中所述第一 I/O對象未被綁定;以及 NUMA I/O框架,在所述多個NUMA節(jié)點中的至少一個上執(zhí)行,被配置為: 從所述I/O子系統(tǒng)接收所述第一 I/O對象; 從所述I/o子系統(tǒng)接收所述proc對象; 使用所述proc對象來確定所述處理正在所述第一 NUMA節(jié)點上執(zhí)行; 基于確定所述處理正在所述第一 NUMA節(jié)點上執(zhí)行而選擇所述第一 NUMA節(jié)點;以及 將所述第一 I/O對象綁定到所述第一 NUMA節(jié)點, 其中,通過在所述第一 NUMA節(jié)點上處理與所述第一 I/O對象對應(yīng)的所述第一資源來服務(wù)于所述請求。
9.如權(quán)利要求8所述的系統(tǒng),其中,所述I/O子系統(tǒng)還被配置為: 將所述第一 I/o對象與所述proc對象之間的親和性發(fā)送到所述NUMA I/O框架。
10.如權(quán)利要求9所述的系統(tǒng), 其中,所述多個NUMA節(jié)點還包括: 第二 NUMA節(jié)點,包括第二處理器和第二存儲器;且 其中,所述NUMA I/O框架還被配置為: 接收所述親和性; 基于確定所述第一 NUMA節(jié)點與所述第二 NUMA節(jié)點之間的關(guān)系滿足所述親和性而選擇所述第二 NUMA節(jié)點;以及 基于選擇所述第二 NUMA節(jié)點而將所述第一 I/O對象綁定到所述第二 NUMA節(jié)點。
11.如權(quán)利要求8所述的系統(tǒng), 其中,所述多個NUMA節(jié)點還包括: 第二 NUMA節(jié)點,包括第二處理器和第二存儲器; 其中,所述I/O子系統(tǒng)還被配置為: 確定服務(wù)于所述請求所需的第二資源; 生成與所述第二資源對應(yīng)的第二 I/O對象,其中所述第二 I/O對象未被綁定;以及 將所述第二 I/O對象與所述proc對象之間的親和性發(fā)送到所述NUMA I/O框架;且 其中,所述NUMA I/O框架還被配置為: 從所述I/O子系統(tǒng)接收所述第二 I/O對象; 從所述I/O子系統(tǒng)接收所述親和性;基于確定所述第一 NUMA節(jié)點與所述第二 NUMA節(jié)點之間的關(guān)系滿足所述親和性而選擇所述第二 NUMA節(jié)點;以及 基于選擇所述第二 NUMA節(jié)點而將所述第二 I/O對象綁定到所述第二 NUMA節(jié)點。
12.如權(quán)利要求11所述的系統(tǒng),其中,所述親和性指示所述第一NUMA節(jié)點與所述第二NUMA節(jié)點之間的優(yōu)選關(guān)系。
13.如權(quán)利要求8所述的系統(tǒng),其中,基于所述確定而選擇所述第一NUMA節(jié)點包括: 從所述第一 I/o對象獲得I/O對象有效負載; 獲得所述第一 NUMA節(jié)點的I/O負載容量;以及 所述NUMA I/O框架確定所述I/O負載容量大于所述I/O對象有效負載。
14.如權(quán)利要求8所述的系統(tǒng),其中,所述proc對象和所述第一I/O對象在I/O對象組中。
15.—種將輸入/輸出(I/O)對象綁定到節(jié)點的方法,所述方法包括: 網(wǎng)絡(luò)棧從處理接收創(chuàng)建到I/O器件的連接的請求; 所述網(wǎng)絡(luò)棧確定用于服務(wù)于所述請求的線程; 所述網(wǎng)絡(luò)棧生成與所述線程對應(yīng)的第一 I/O對象,其中所述第一 I/O對象未被綁定;所述網(wǎng)絡(luò)棧生成proc對象,其中所述proc對象包括對發(fā)送創(chuàng)建所述連接的所述請求的所述處理的引用; 所述網(wǎng)絡(luò)棧將所述第一 I/O對象和所述proc對象發(fā)送到非一致存儲器訪問(NUMA)I/O框架; 所述NUMA I/O框架使用所述proc對象來確定所述處理正在多個NUMA節(jié)點中的第一NUMA節(jié)點上執(zhí)行; 所述NUMA I/O框架基于確定所述處理正在所述第一NUMA節(jié)點上執(zhí)行而選擇所述第一NUMA節(jié)點; 所述NUMA I/O框架基于所述選擇而將所述第一 I/O對象綁定到所述第一 NUMA節(jié)點;以及 通過在所述第一 NUMA節(jié)點上執(zhí)行與所述第一 I/O對象對應(yīng)的所述線程來服務(wù)于所述連接。
16.如權(quán)利要求15所述的方法,其中,基于所述確定而選擇所述第一NUMA節(jié)點包括: 所述NUMA I/O框架從所述第一 I/O對象獲得I/O對象有效負載; 所述NUMA I/O框架獲得所述第一 NUMA節(jié)點的I/O負載容量;以及 所述NUMA I/O框架確定所述I/O負載容量大于所述I/O對象有效負載。
17.如權(quán)利要求15所述的方法,其中,將所述第一I/O對象和所述proc對象發(fā)送到所述NUMA I/O框架包括: 指示所述第一 I/O對象與所述proc對象之間的親和性。
18.如權(quán)利要求15所述的方法,還包括: 所述NUMA I/O框架確定所述第一 NUMA節(jié)點不可用; 所述NUMA I/O框架基于確定所述第一 NUMA節(jié)點與所述多個NUMA節(jié)點中的第二 NUMA節(jié)點之間的關(guān)系滿足所述親和性而選擇所述第二 NUMA節(jié)點; 所述NUMA I/O框架基于所述選擇而將所述第一 I/O對象綁定到所述第二 NUMA節(jié)點;以及 通過在所述第二 NUMA節(jié)點上執(zhí)行與所述第一 I/O對象對應(yīng)的所述線程來服務(wù)于所述連接。
19.如權(quán)利要求18所述的方法,其中,確定所述第一NUMA節(jié)點不可用包括: 所述NUMA I/O框架從所述第一 I/O對象獲得I/O對象有效負載; 所述NUMA I/O框架獲得所述第一 NUMA節(jié)點的I/O負載容量;以及 所述NUMA I/O框架確定所述I/O對象有效負載大于所述I/O負載容量。
20.如權(quán)利要求15所述的方法,其中,所述第一I/O對象和所述proc對象在I/O對象組中,其中所述I/o對象組包括第二 I/O對象以及所述第二 I/O對象與所述proc對象之間的第二親和性。
全文摘要
大體上在一方面,本發(fā)明涉及將輸入/輸出(I/O)對象綁定到節(jié)點的方法。所述方法包括從處理接收使用I/O器件的請求;確定服務(wù)于該請求的資源;生成與該資源對應(yīng)的第一I/O對象,該第一I/O對象未被綁定;生成proc對象,該proc對象包括對請求使用所述I/O器件的處理的引用。該方法還包括將第一I/O對象和proc對象發(fā)送到非一致存儲器訪問(NUMA)I/O框架;確定所述處理正在第一NUMA節(jié)點上執(zhí)行;選擇第一NUMA;將第一I/O對象綁定到第一NUMA節(jié)點;以及通過在第一NUMA節(jié)點上處理與第一I/O對象對應(yīng)的資源來服務(wù)于所述請求。
文檔編號G06F9/50GK103189844SQ201180052413
公開日2013年7月3日 申請日期2011年9月8日 優(yōu)先權(quán)日2010年9月17日
發(fā)明者N·G·德勞克斯, R·庫恩哈盼, S·普恩 申請人:甲骨文國際公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
札达县| 镇雄县| 丽江市| 元谋县| 唐山市| 霍林郭勒市| 黑水县| 泰和县| 无锡市| 犍为县| 庄河市| 津南区| 南安市| 双桥区| 张掖市| 西藏| 太保市| 本溪| 文化| 康乐县| 宣汉县| 湖北省| 宣城市| 买车| 汝阳县| 上虞市| 城固县| 封丘县| 陇西县| 保康县| 凉山| 内乡县| 印江| 屏东县| 和林格尔县| 民乐县| 诸暨市| 高陵县| 康平县| 安化县| 商丘市|