專利名稱::用于虛擬機的虛擬非一致存儲器體系結構的制作方法用于虛擬機的虛擬非一致存儲器體系結構
背景技術:
:虛擬化技術考慮了在多個分區之間共享硬件資源,每個分區可以宿有(host)客戶操作系統。通常,虛擬機技術可被使用來整合服務器和增加它們的可移植性。隨著虛擬機變得越來越大且隨著它們的工作負荷增加,輕松地整合它們和/或將它們從一個計算機系統遷移到另一個計算機系統的能力變得更加困難。因此,用于提高整合和/或遷移更大虛擬機的能力的技術是所希望的。
發明內容本公開內容的示例性實施例描述了一種方法。在本例中,該方法包括,但不限于接收對于實例化(instantiate)虛擬機的請求,所述請求包括用于虛擬機的特征;根據所述特征選擇用于虛擬機的虛擬NUMA節點拓撲,該虛擬NUMA節點拓撲包括多個虛擬NUMA節點;在計算機系統上實例化該虛擬機,虛擬機包括多個虛擬NUMA節點;以及根據在該多個虛擬NUMA節點的特定虛擬NUMA節點中的存儲器壓力調節被指派給所述特定虛擬NUMA節點的客戶存儲器的量。除了上述的以外,在形成本公開內容的一部分的權利要求、附圖和文本中描述了其它方面。本公開內容的示例性實施例描述了一種方法。在本例中,該方法包括,但不限于執行虛擬機,該虛擬機具有包括多個虛擬NUMA節點的拓撲,其中虛擬機的拓撲是與計算機系統的物理拓撲相獨立地生成的;確定在該多個虛擬NUMA節點的每個虛擬NUMA節點中的存儲器壓力;以及根據在該多個虛擬NUMA節點的每個虛擬NUMA節點中的存儲器壓力,調節被指派給該多個虛擬NUMA節點的至少一個虛擬NUMA節點的客戶存儲器。除了上述的以外,在形成本公開內容的一部分的權利要求、附圖和文本中描述了其它方面。本公開內容的示例性實施例描述了一種方法。在本例中,該方法包括,但不限于執行第一虛擬機,該虛擬機具有包括多個虛擬NUMA節點的拓撲,該多個虛擬NUMA節點的每個虛擬NUMA節點包括虛擬處理器和客戶物理地址,其中虛擬機的拓撲是與計算機系統的物理拓撲相獨立地生成的;以及將附加的虛擬處理器添加到該多個虛擬NUMA節點中的虛擬NUMA節點。除了上述的以外,在形成本公開內容的一部分的權利要求、附圖和文本中描述了其它方面。本領域技術人員可以意識到,本公開內容的一個或多個各種各樣的方面可包括,但不限于用于實現本公開內容的這里提到的諸方面的電路和/或編程;所述電路和/或編程可以實際上是被配置來根據系統設計者的設計選擇而實現這里提到的諸方面的硬件、軟件和/或固件的任何組合。上述的內容是概要,因此必然包含細節的簡化、一般化和省略。本領域技術人員應意識到,所述概要僅僅是說明性的,且無論如何不會被定為是限制性的。圖1描繪其中可以實施本公開內容的諸方面的示例性計算機系統。圖2描繪用于實踐本公開內容的諸方面的操作環境。圖3描繪用于實踐本公開內容的諸方面的操作環境。圖4描繪在本公開內容的實施例中可以如何安排存儲器。圖5描繪實踐本公開內容的諸方面的示例性操作環境。圖6描繪實踐本公開內容的諸方面的示例性操作環境。圖7描繪實踐本公開內容的諸方面的示例性操作環境。圖8描繪圖示本公開內容的諸方面的示例性框圖。圖9描繪用于實踐本公開內容的諸方面的操作程序。圖10描繪圖9的操作程序的替換實施例。圖11描繪用于實踐本公開內容的諸方面的操作程序。圖12描繪圖11的操作程序的替換實施例。圖13描繪圖12的操作程序的替換實施例。圖14描繪圖12的操作程序的替換實施例。圖15描繪用于實踐本公開內容的諸方面的操作程序。圖16描繪圖15的操作程序的替換實施例。圖17描繪圖16的操作程序的替換實施例。具體實施例方式實施例可以在一個或多個計算機上執行。圖1和以下的討論用來提供對于在其中可以實施本公開內容的適當計算環境的概略的一般性描述。本領域技術人員可以意識到,圖1的計算機系統在某些實施例中可以實現計算機系統200、300、600和700。在這些示例性實施例中,計算機系統可包括圖1上描述的某些或所有的部件以及被配置成實例化本公開內容的諸方面的電路。在本公開內容各處中使用的術語電路可包括硬件部件,諸如硬件中斷控制器、硬驅動、網絡適配器、圖形處理器、基于硬件的視頻/音頻編解碼器,以及被使用來操作這樣的硬件的固件/軟件。在相同的或其它的實施例中,術語電路可包括微處理器,其被配置成通過固件或以某種方式通過開關組(switchset)而執行功能。在相同的或其它的示例性實施例中,術語電路可包括一個或多個邏輯處理器,例如多核通用處理單元的一個或多個核。在本例中,邏輯處理器可以通過軟件指令而被配置,所述軟件指令具體化能夠運行來執行從存儲器一例如RAM、R0M、固件和/或虛擬存儲器一裝載的功能的邏輯。在其中電路包括硬件和軟件的組合的示例性實施例中,實施者可以編寫具體化邏輯的源代碼,其隨后被匯編成可以由邏輯處理器處理的機器可讀代碼。由于本領域技術人員可以意識到現有技術水平已發展到在硬件、軟件、或硬件/軟件的組合之間幾乎沒有差別的程度,所以,對于實現功能來說,硬件相對(versus)軟件的選擇僅僅是一種設計選擇。因此,由于本領域技術人員可以意識到,軟件處理可以轉換成等價的硬件結構、以及硬件結構本身也可以轉換成等價的軟件處理,所以硬件實現相對軟件實現的選擇是一種設計選擇,并留給實施者處理。現在參照圖1,圖上描繪示范性通用計算系統。通用計算系統可包括常規的計算機20等等,其包括邏輯處理器21、系統存儲器22和系統總線23,系統總線23將包括系統存儲器在內的各種系統部件耦合到邏輯處理器21。系統總線23可以是幾種類型的總線結構的任何一種,所述總線結構包括存儲器總線或存儲器控制器、外圍總線和使用各種總線體系結構中任何總線體系結構的本地總線。系統存儲器可包括只讀存儲器(ROM)M和隨機存取存儲器(RAM)25。基本輸入輸出系統沈(BIOS)被存儲在ROMM中,其包含諸如在啟動期間幫助在計算機20內的單元之間傳送信息的基本例行程序。計算機20還可包括硬盤驅動27,用于從硬盤(未示出)讀出或向其寫入;磁盤驅動觀,用于從可拆卸磁盤四讀出或向其寫入;以及光盤驅動30,用于從可拆卸光盤31——諸如CDROM或其它光學介質——讀出或向其寫入。硬盤驅動27、磁盤驅動28和光盤驅動30被顯示為分別通過硬盤驅動接口32、磁盤驅動接口33和光盤驅動接口34而連接到系統總線23。驅動和它們的相關聯的計算機可讀存儲介質提供計算機可讀指令、數據結構、程序模塊和用于計算機20的其它數據的非易失性存儲。雖然這里描述的示范性環境采用硬盤、可拆卸磁盤四和可拆卸光盤31,但本領域技術人員應當意識到,可以存儲計算機可訪問數據的其它類型的計算機可讀存儲介質,諸如盒式磁帶、快閃存儲卡、數字視頻盤、Bernoulli(伯努利)盒式磁帶、隨機存取存儲器(RAM)、只讀存儲器(ROM)等等,也可以在本示范性操作環境下被使用。通常,在某些實施例中,這樣的計算機可讀存儲介質可被使用來存儲體現本公開內容的諸方面的處理器可執行指令。在硬盤、磁盤四、光盤31、ROM24或RAM25上可以存儲若干程序模塊,包括操作系統35、一個或多個應用程序36、其他程序模塊37和程序數據38。用戶可以通過諸如鍵盤40和指示裝置42之類的輸入設備將命令和信息輸入到計算機20。其它輸入設備(未示出)可包括話筒、操縱桿、游戲手柄(gamepad)、碟型衛星天線、掃描器等等。這些和其它輸入設備常常通過被耦合到系統總線的串行端口接口46而被連接到邏輯處理器21,但也可以通過諸如并行端口、游戲端口或通用串行總線(USB)之類的其它接口被連接。顯示器47或其它類型的顯示設備也可以經由諸如視頻適配器48之類的接口被連接到系統總線23。除了顯示器47以外,計算機典型地包括諸如揚聲器和打印機之類的其它外圍輸出設備(未示出)。圖1的示范性系統還包括主機適配器55、小計算機系統接口(SCSI)總線56和被連接到SCSI總線56的外部存儲裝置62。計算機20可以通過使用與一個或多個遠程計算機——諸如遠程計算機49——的邏輯連接而在聯網的環境下運行。遠程計算機49可以是另一個計算機、服務器、路由器、網絡PC、對等設備或其它公共網絡節點,且典型地可包括以上相對于計算機20描述的許多或所有的單元,雖然在圖1上僅僅圖示了存儲器存儲裝置50。圖1所描繪的邏輯連接可包括局域網(LAN)51和廣域網(WAN)52。這樣的聯網環境在辦公室、企業的廣的計算機網絡、內聯網和互聯網中是很平常的。當在LAN聯網環境下被使用時,計算機20可通過網絡接口或適配器53被連接到LAN51。當在WAN聯網環境下被使用時,計算機20典型地可包括調制解調器討或用于建立在諸如互聯網那樣的廣域網52上的通信的其它裝置。調制解調器可以是內部的或外部的一可以經由串行端口接口46被連接到系統總線23。在聯網的環境下,相對于計算機20描繪的程序模塊或部分程序模塊可被存儲在遠程存儲器存儲裝置中。應意識到,所顯示的網絡連接是示范性的,以及可以使用在計算機之間建立通信鏈路的其它手段。而且,雖然設想本公開內容的許多實施例特別適合于計算機化的系統,但本文檔中沒有什么要被確定為將公開內容限制于這樣的實施例。現在參照圖2和3,它們描繪計算機系統的高級別框圖。如圖所示,計算機系統200可包括物理的硬件設備,諸如舉例而言硬驅動的存儲裝置208、網絡接口控制器(NIC)210、圖形卡234、至少一個邏輯處理器212和隨機存取存儲器(RAM)214。計算機系統200還可包括與圖1的計算機20類似的部件。雖然只圖示了一個邏輯處理器,但在其他實施例中,計算機系統200可以具有多個邏輯處理器,例如每個處理器多個執行核,和/或多個處理器,可以每個具有多個執行核。繼續圖2的說明,圖上描繪了超級監視器(hyperviSOr)202,在本領域中它也可以被稱為虛擬機監視器。在所描繪的實施例中,超級監視器202包括可執行指令,用于控制和仲裁對于計算機系統200的硬件的接入。廣義地,超級監視器202可以生成被稱為分區的執行環境,諸如子分區1到子分區N(其中N是大于1的整數)。在實施例中,子分區可被認為是由超級監視器202支持的隔離(isolation)的基本單元,也就是,每個子分區可被映射到一組硬件資源,例如存儲器、設備、邏輯處理器循環等,其處在超級監視器202和/或母分區的控制下。在實施例中,超級監視器202可以是獨立的軟件產品、操作系統的一部分、被嵌入在母板的固件內、專用的集成電路或它們的組合。在描繪的例子中,計算機系統200包括母分區204,它也可以被認為是在開放源社區(opensourcecommunity)中的域0。母分區204可被配置成通過使用虛擬化服務提供器228(VSP)-它們在開放源社區中也被稱為后端驅動器一而提供資源給在子分區I-N中執行的客戶操作系統。在這個示例性體系結構中,母分區204可以選通接入(gateaccess)到底層的(underlying)硬件。廣義地,VSP2可被使用來通過虛擬化服務客戶機(VSC)--它們在開放源社區中也被稱為前端驅動器一使接口對硬件資源復用。每個子分區可包括一個或多個虛擬處理器,諸如客戶操作系統220到222可管理和調度線程來在其上執行的虛擬處理器230到232。通常,虛擬處理器230到232是可執行的指令和相關聯的狀態信息,其提供了具有特定體系結構的物理處理器的表示。例如,一個虛擬機可以具有虛擬處理器,其具有htelx86處理器的特征,而另一個虛擬處理器可具有PowerPC處理器的特征。在本例中,虛擬處理器可被映射到計算機系統的邏輯處理器,使得實現虛擬處理器的指令將由邏輯處理器進行支持(back)。因此,在這些示例性實施例中,多個虛擬處理器可以同時在執行,而例如另一個邏輯處理器正在執行超級監視器指令。一般地說,且正如附圖所例示的,在分區中的虛擬處理器、各種VSC和存儲器的組合可被看作為虛擬機,諸如虛擬機MO242ο通常,客戶操作系統220到222可包括任何操作系統,諸如舉例而言來自MicrOSOft、Apple、開放源社區等等的操作系統。客戶操作系統可包括操作的用戶/內核模式,且可以具有內核,該內核可包括調度器、存儲器管理器等等。每個客戶操作系統220到222可以具有相關聯的文件系統和客戶操作系統本身,文件系統可以具有存儲在其上的應用,諸如電子商務服務器、電子郵件服務器等等。客戶操作系統220-222可以調度線程來在虛擬處理器230-232上執行,且這樣的應用的實例可以被實現。現在參照圖3,圖上圖示可被使用的替換的體系結構。圖3描繪與圖2的那些部件類似的部件,然而,在本示例性實施例中,超級監視器202可包括虛擬化服務提供器2和設備驅動器224,以及母分區204可包含配置實用程序236。在這個體系結構中,超級監視器202可以執行與圖2的超級監視器202相同的或類似的功能。圖3的超級監視器202可以是獨立的軟件產品、操作系統的一部分、被嵌入在母板的固件內,或者超級監視器202的一部分可以由專用集成電路實現。在本例中,母分區204可以具有可被使用來配置超級監視器202的指令,然而,硬件接入請求可以由超級監視器202處理,而不是被傳遞到母分區204。現在參照圖4,圖上圖示在包括虛擬機的實施例中存儲器可以如何安排。例如,諸如計算機系統200那樣的計算機系統可以具有帶有存儲器地址的RAM214。代替將系統物理存儲器地址報告給虛擬機,超級監視器202可以將對于該系統物理地址不同的地址——例如客戶物理地址(GPA)——呈遞給客戶操作系統的存儲器管理器。客戶操作系統然后可以操控客戶物理地址,以及超級監視器202保持由GPA和SPA產生的關系。如圖所示,在實施例中,GPA和SPA可被安排在存儲區中。廣義地,存儲區可以包括存儲器的一頁或多頁。在GPA與SPA之間的關系可以通過影子頁表(shadowpagetable)被保持,諸如,在標題為"EnhancedShadowPageTableAlgorithms”的共同轉讓的美國專利申請No.11/1,665中描述的那些,該專利申請的內容通過引用的方式整體地合并到此處。在運行時,當客戶操作系統將數據存儲在塊1的GPA中時,該數據實際上可被存儲在系統上的不同SPA中,諸如塊6。概略地,圖5描繪用于實踐本公開內容的諸方面的操作環境。例如,若干計算機系統504-510可以在數據中心500處被耦合在一起(雖然只描繪了四個計算機系統,但本領域技術人員可以意識到,數據中心500可包括更多或更少的計算機系統)。所描繪的計算機系統可以具有不同的拓撲,而且,它們可以具有不同的特征,例如,不同的RAM的量、不同的RAM速度、不同的邏輯處理器的量和/或具有不同速度的邏輯處理器。管理系統502可以具有類似于圖1的計算機系統20和/或計算機系統200、300、600或700的部件。也就是,在實施例中,管理系統502可以是包括下面相對于圖6或圖7描述的主題的計算機系統。繼續進行附圖的總體概述,圖6描繪具有對稱的多重處理(multiprocessing)拓撲(SMP)或‘平的(flat)’拓撲的計算機系統600。通常,SMP是包括被連接到單個共享存儲器的多個處理器的計算機體系結構。在這種安排下,存儲器控制器602可以管理去往和來自存儲器的數據的流。存儲器訪問相對于每個邏輯處理器212A-F可以是一致的(uniform),且每個邏輯處理器可以訪問全部范圍的存儲器,即,系統物理地址622-632。這個拓撲對于具有相對較小數目的處理器的計算機系統適用,但當計算機系統包括許多處理器,全部都競爭對共享的存儲器總線的訪問時,系統的性能會降低。而且,計算機系統的復雜性大大地增加,這進而又驅使按每個處理器計的價格上升。概略地,計算機系統600可包括與計算機系統200或300相同的或類似的部件。如圖所示,計算機系統600可以具有經由選通訪問RAM214的存儲器控制器602而被耦合在一起的多個邏輯處理器212A-212F(雖然描繪了六個邏輯處理器,但計算機系統可以具有更多或更少的邏輯處理器)。類似于以上描述的,每個邏輯處理器212A-212F可以具有不同的特征,例如,時鐘速度、高速緩沖存儲器尺寸等等。在這種安排下,存儲器控制器602可以管理去往和來自RAM214的數據的流。超級監視器202可以被實例化,并且它可以控制計算機系統600的硬件。超級監視器202可以管理一個或多個虛擬機240到M2,每個可具有虛擬NUMA節點,諸如虛擬NUMA節點606-612。虛擬NUMA節點606-612可被使用來通過將虛擬拓撲報告到客戶應用或客戶操作系統(諸如客戶操作系統220和222)而組織虛擬機的資源。如圖所示,每個虛擬NUMA節點606-612可以具有一個或多個虛擬處理器230A-D、232A-D和客戶物理地址614-616和618-620。通常,超級監視器202可以用一個或多個邏輯處理器和來自RAM214的系統物理地址對每個虛擬NUMA節點606-612進行支持。也就是,超級監視器202可以設置一個或多個邏輯處理器作為概念處理器(ideaprocessor),它們可被使用來運行虛擬處理器線程。概略地,圖7描繪具有包括NUMA節點702-706的拓撲的計算機系統700。具有NUMA節點的計算機系統通常可被認為是由較小的計算機系統組成的計算機。在本例中,每個NUMA節點606-612可包括一個或多個邏輯處理器和本地存儲器。在NUMA節點里面的存儲器被認為是本地存儲器,在其它NUMA節點中的存儲器被認為是遠程存儲器,因為只有在該NUMA節點里面的存儲器才被連接到相同的存儲器總線。NUMA節點通過高速緩沖存儲器一致性(cachecoherency)域互連而被相互連接,其允許在一個NUMA節點中的處理器以一致的方式訪問在其它NUMA節點中的存儲器。因此,系統物理地址622-632相對于每個處理器是一致的。或換一種說法,系統物理地址20,000對于在計算機系統中的每個處理器是相同的。差別在于,對于某些處理器,存儲器地址20,000是本地存儲器地址,例如在它們的NUMA節點里面,而對于其它處理器,存儲器地址20,000是遠程的,例如在它們的NUMA節點外面。通常,本地存儲器可以比遠程存儲器更快地訪問,以及在本地相對遠程訪問時間之間的關系被稱為NUMA比率。1比2的NUMA比率意味著,與訪問本地系統物理地址相比,訪問特定的遠程系統物理地址要花費兩倍的處理器循環。NUMA通過限制在任一個存儲器總線上的處理器數目而減輕由SMP系統造成的瓶頸,且通常沒有具有相同量的邏輯處理器的SMP計算機系統那么昂貴。計算機系統700可包括與計算機200或300相同的或類似的部件。如圖所示,在這個操作環境下,計算機系統700包括由互連708連接的三個NUMA節點702-706(雖然計算機可以具有更多或更少的NUMA節點)。如圖所例示的,在每個NUMA節點內的處理器的數目可以是可變的,以及每個節點可以具有它自己的RAM。類似于圖7,超級監視器202可以控制計算機系統700的硬件。當客戶操作系統或單片(monolithic)應用引導時,它們可以檢測虛擬機240和M2的拓撲,類似于以上描述的。每個虛擬NUMA節點606-612可被指派以來自可被用來運行虛擬處理器的線程的同一個NUMA節點的一個或多個理想處理器(idealprocessor)和系統物理地址。雖然計算機系統600和700被描繪為包括兩個虛擬機240和M2,但在其他實施例中,它們可以執行更多或更少的虛擬機。而且,雖然每個虛擬機被描繪為具有兩個虛擬NUMA節點,但在其他實施例中,虛擬機可以具有更多或更少的虛擬NUMA節點。另外,雖然虛擬NUMA節點被描繪為具有兩個虛擬處理器,但在其他實施例中,虛擬NUM節點可以具有更多或更少的虛擬處理器。此外每個虛擬NUMA節點可以具有與其它虛擬NUMA節點不同的拓撲,例如,一個虛擬NUMA節點可以具有4個虛擬處理器和8G字節的RAM,而另一個虛擬NUMA節點可以具有2個虛擬處理器和4G字節的RAM。圖8描繪可被使用于本公開內容的諸方面的環境的框圖。如圖所示,圖示了管理被指派給虛擬機的存儲器的部件,該虛擬機可被稱為動態存儲器虛擬化服務提供器802(DMVSP),且該部件可被使用來調節虛擬NUMA節點可訪問的存儲器的量。如圖所示,DMVSP820可以與可被稱為虛擬化服務客戶機一即,動態存儲器虛擬化服務客戶機804和/或806(DMVSC)—的一個或多個氣球膨脹驅動器(ballooningdriver)相關聯(雖然描繪了每個虛擬NUMA節點一個DMVSC,但在其它實施例中,可以使用每個分區一個DMVSC)。廣義地,DMVSC804和/或806可以提供可被DMVSP802使用來調節虛擬NUMA節點的存儲器的信息,以及每個DMVSC也可以幫助調撥(commit)和回收(de-commit)來自與其相關聯的虛擬NUMA節點的存儲器。DMVSC804、806和DMVSP802可以借助于在標題為“PartitionBus”的美國專利申請No.11/128,647中描述的虛擬化總線進行通信,該專利申請的內容通過引用的方式整體地合并到此處。另外,DMVSC和DMVSP的另外的方面在標題為“DynamicVirtualMachineMemoryManagement”的美國專利申請No.12/345,469中描述,該專利申請的內容通過引用的方式整體地合并到此處。繼續進行圖8的說明,描繪了可包括可以管理子分區的工作者進程(workerprocess)812。工作者進程812可以結合可分配存儲器給子分區的虛擬化基礎結構驅動器810(VID)—起工作。例如,VID810可以建立和除去在客戶物理地址與系統物理地址之間的關系。圖8還描繪了可包括諸如客戶操作系統220的客戶操作系統的分區,所述客戶操作系統可包括存儲器管理器808。通常,存儲器管理器808可以應應用的請求來分配存儲器給應用,以及當應用不再需要存儲器時釋放存儲器。以下是描繪進程的實現的一系列流程圖。為了易于理解起見,流程圖被組織成使得初始流程圖經由總體“大圖片(bigpicture)”視點給出實現,且隨后的流程圖提供另外的補充和/或細節。而且,本領域技術人員將會意識到,用虛線畫出的操作程序被認為是可選的。現在轉到圖9,圖上描繪了包括操作900-910的、用于實踐本公開內容的諸方面的操作程序。操作程序從操作900開始,且操作902圖示接收對于實例化虛擬機的請求,該請求包括用于該虛擬機的特征。例如,并參照圖6或7,超級監視器202可以接收對于創建虛擬機——諸如虛擬機MO——的請求。例如,所述請求可以從管理系統502、圖2或3的母分區204等等被接收。所述請求可以是對于新的虛擬機的請求,或者它可以是對于實例化以前保存的虛擬機的請求。當虛擬機240是新的虛擬機時,虛擬機的特征,例如被指派給虛擬機的RAM的量、虛擬處理器的數目、或虛擬機應當具有什么類型的1/0設備,可以由例如管理員設置。繼續進行圖9的描述,操作904顯示根據特征選擇用于該虛擬機的虛擬NUMA節點拓撲,虛擬NUMA節點拓撲包括多個虛擬NUMA節點。例如,在母分區204(和/或超級監視器202)中的進程可以根據所接收的特征來確定用于虛擬機MO的拓撲。例如,母分區204可包括標識用于諸如虛擬NUMA節點606那樣的虛擬NUMA節點的缺省尺寸的信息。在母分區204中的進程可以使用描述該缺省尺寸和想要的特征的信息來確定用于虛擬機240的虛擬NUMA的數目。在特定的例子中,想要的特征可以是具有10G字節的RAM的6處理器虛擬機。如果虛擬NUMA節點的缺省尺寸包括2個虛擬處理器和4G字節的RAM,則管理系統502可以生成指示虛擬機240將包括3個虛擬NUMA節點的配置文件。在實施例中,缺省虛擬NUMA節點尺寸可以由管理員或由管理系統502設置。轉到圖5,管理系統502可以執行一個或多個程序,其可以獲得標識在數據中心500中的計算機系統504-510的物理拓撲的信息,例如,標識每個計算機系統504-510具有多少NUMA節點(如果有的話)、每個計算機系統504-510具有多少RAM、RAM的速度、RAM被如何安排、處理器速度、每個處理器具有多少核等等的信息。通常,虛擬NUMA節點的尺寸影響數據中心500中的虛擬機的操作。例如,隨著虛擬NUMA節點例如在存儲器和/或處理器方面的尺寸增加,虛擬NUMA節點的可移植性減小。換句話說,大的虛擬NUMA節點可能使得遷移虛擬機更困難。出現這種情況是因為虛擬NUMA節點需要被指派到具有足夠的‘平的’資源來實現虛擬NUMA節點的計算機系統或NUMA節點。如果例如虛擬NUMA節點太大,例如,它具有太多的RAM或太多的虛擬處理器,則它不能適應于數據中心500的較小的NUMA節點,因此限制了遷移虛擬機的能力。另外,如果較大的虛擬NUMA節點被簡單地指派到多個較小的NUMA節點,則由于在本地存儲器與遠程存儲器訪問時間之間存在的差別,虛擬機的性能將降低。另一方面,隨著虛擬NUMA節點的尺寸減小,客戶操作系統的性能可能受到不利的影響。這個低效率可能會出現,因為客戶操作系統將試圖分離(segregate)應用和它自己對單個虛擬NUMA節點的執行。客戶操作系統在這種情形下將受到限制,并且性能將降低。因此,在實施例中,管理系統502可以通過確定對于數據中心500的最佳虛擬NUMA節點尺寸,而在可移植性與效率之間權衡利弊。例如,在實施例中,管理系統502的邏輯處理器可以執行程序且確定數據中心中的NUMA節點的平均尺寸,例如,邏輯處理器的平均數目、RAM的平均量等等,并將虛擬NUMA節點的尺寸設置為與系統中的平均NUMA節點相同或小于系統中的平均NUMA節點。在另一個實施例中,程序可被配置成將虛擬NUMA節點的尺寸設置為稍微小于數據中心500中的最小的NUMA節點。在實施例中,虛擬NUMA節點的尺寸可被設置為稍微小于平均尺寸或最小的尺寸,以使得如果計算機系統變為大量地調撥,則一個以上的虛擬NUMA節點可被指派到單個NUMA節點。在特定的例子中,如果最小的NUMA節點具有4個邏輯處理器和8G字節的RAM,則虛擬NUMA節點的尺寸可被設置為例如2個虛擬處理器和4G字節的RAM。操作906顯示在計算機系統上實例化該虛擬機,虛擬機包括多個虛擬NUMA節點。在實施例中,超級監視器202可以由邏輯處理器執行,以及具有多個虛擬NUMA節點的虛擬機可以被實例化。例如,并參照圖6和/或圖7,具有虛擬NUMA節點606-608的虛擬機240可以由計算機系統600或700來實現。也就是,VID810可以用來自RAM的系統物理地址對虛擬機240的客戶物理地址進行支持,以及用一個或多個邏輯處理器對虛擬處理器進行支持。例如,客戶物理地址塊614可以用系統物理地址塊622進行支持,以及客戶物理地址塊616可以用系統物理地址塊6進行支持。超級監視器線程然后可以在對虛擬處理器進行支持的邏輯處理器上被調度,以及可以執行指示虛擬處理器的指令。如圖6和圖7所示,每個虛擬機的拓撲可以與底層硬件的拓撲相獨立地被創建。也就是,每個虛擬機的拓撲是與實現它的計算機系統的底層物理拓撲相分離的。在實施例中,虛擬機BIOS或引導固件可以向單片應用的客戶操作系統描述虛擬機的拓撲,例如,它是否具有虛擬NUMA節點,任何虛擬NUMA節點的尺寸,以及對于虛擬NUMA節點的NUMA比率。數據結構可以被處理并且客戶OS220或應用以及它可以被所述OS或應用使用以利用虛擬NUMA節點的存在。例如,客戶操作系統220可以試圖將不是NUMA感知(NUMAaware)的應用的線程與虛擬NUMA節點建立親緣關系(affinitize),以使得應用的執行保持為本地的。在另一個例子中,數據庫管理程序,諸如SQL服務器,可以分配對于虛擬NUMA節點而言是本地的鎖,并且數據庫可以跨多個虛擬NUMA節點上來分解讀/寫請12求。在再一個例子中,客戶操作系統220可以創建用于虛擬機中的每個虛擬NUMA節點的頁池(pagepool)。繼續進行圖9的說明,操作908顯示根據在多個虛擬NUMA節點的特定虛擬NUMA節點中的存儲器壓力來調節被指派給該特定虛擬NUMA節點的客戶存儲器的量。例如,邏輯處理器,舉例而言圖6或7的邏輯處理器212A,可以執行指示DMVSP802的指令,并且可以調節諸如虛擬NUMA節點606那樣的虛擬NUMA節點可得到的客戶物理地址的量。也就是,可以執行DMVSP802,并且可以根據虛擬NUMA節點正經受的壓力而調撥或回收存儲器。在實施例中,存儲器壓力可以標識客戶操作系統220的性能如何受每個虛擬NUMA節點606-608可得到的存儲器的量影響。這個信息可以在客戶操作系統220的運行時期間由例如像DMVSC804和/或806那樣的DMVSC進行計算,并被發送到DMVSP802。例如,存儲器壓力可以由一系列值來代表,所述值可以標識在虛擬NUMA節點中不同的存儲器壓力水平。隨著虛擬NUMA節點中的資源變得壓力更大,即,隨著對于有效執行在虛擬NUMA節點上的當前工作負荷所需要的存儲器量增加,DMVSC804可以修訂所述值,并把這個信息傳送到DMVSP802。在實施例中,存儲器壓力信息可以由DMVSC804從接收自客戶操作系統220的信息進行計算。例如,DMVSC804可被配置成從存儲器管理器808接收對于虛擬NUMA節點606的操作系統分頁信息。客戶操作系統分頁速率可以通過由存儲器管理器808和高速緩沖存儲器管理器暴露(expose)的兩個計數器來監視,即,分頁速率和高速緩沖存儲器旋轉速率。在同一個或另一個實施例中,DMVSC804可以接收來自存儲器管理器808的、與虛擬NUMA節點606相關聯的物理存儲器通知,并使用這個信息來計算虛擬NUMA節點606的存儲器壓力。例如,存儲器管理器808可以根據與虛擬NUMA節點606相關聯的客戶操作系統220中的活動,來輸出高存儲量通知和低存儲量通知。存儲器管理器808可以根據低存儲量閾值(LMT)和高存儲量閾值(HMT)來觸發這些通知。在特定的示例性實施例中,以信號告知低存儲量資源通知事件的可得到存儲器的缺省水平可以是每4GB大約32MB,到64MB的最大值。以信號告知高存儲量資源通知事件的缺省水平,例如,可以是缺省的低存儲量值的三倍。在這二者之間的中間存儲器可用性水平可以通過在高存儲量閾值和低存儲量閾值水平之間劃分出間隔而被確定。本領域技術人員可以意識到,這些值是示范性,并且可以作出改變而不背離本公開內容的精神。這些通知,連同其它的一起,可以被DMVSC804使用來計算虛擬NUMA節點606的存儲器壓力。例如,每個水平可以與例如0-4的一個值相關聯,以及如果考慮任何其它性能計數器,那么它們也可以與值相關聯。用于每個性能計數器的值然后可被使用來計算虛擬NUMA節點606的當前的存儲器壓力。在特定的例子中,存儲器壓力可以通過取性能計數器值的較高或較低的值而進行計算。在另一個例子中,性能計數器的平均值可被用作為存儲器壓力。在再一個實施例中,可以使用更精巧的算法來計算存儲器壓力,它考慮了先前的性能計數器值,并給每個性能計數器指派一個標量以影響它在計算中的相對權重。當作出調撥存儲器的決定時,DMVSP802可以使用各種各樣的技術,其中的一個技術是熱添加(hot-add)操作。例如,某些操作系統可以支持熱添加,這允許成系列的物理存儲器被添加到正運行的操作系統而不需要系統重新引導。也就是,存儲器管理器808可被配置成支持將存儲器動態添加到正運行的系統。在熱添加環境下,DMVSC804可被配置成接入存儲器管理器808的熱添加接口,以及DMVSC804可以將描述熱添加的GPA和它們與哪個虛擬NUMA節點相關聯的消息發送到客戶操作系統220。存儲器管理器808然后可以使得新的存儲器對于客戶操作系統220、驅動器、應用、或正在虛擬NUMA節點606上運行的任何其它進程是可得到的。例如,在VID810生成在GPA與SPA之間的關系后,DMVSC804可以接收來自DMVSP802的熱添加的存儲器地址。同樣地,熱去除(hot-remove)操作可被使用來從諸如虛擬NUMA節點606那樣的虛擬NUMA節點中回收存儲器地址。例如,DMVSC804可以將指示存儲器已被熱去除的消息發送到客戶操作系統220。DMVSC804可以請求存儲器管理器808提供來自虛擬NUMA節點606的GPA塊以便去除。在本例中,DMVSC804然后可以調用存儲器管理器808的去除API,并從客戶操作系統220中去除GPA。在使用熱去除的實施例中,被去除的存儲器沒有不利于(countagainst)客戶當前的調撥,以及存儲器管理器808可以使用由操作系統用來去除從母板上被物理地去除的存儲器的類似技術,來調節它的內部計數器。在另一個實施例中,可以通過使用氣球膨脹(Ballooning)技術而將存儲器回收到虛擬NUMA節點。也就是,存儲器可以通過使虛擬NUMA節點606中的客戶物理地址與對它們進行支持的物理地址解除關聯(dissociate)而被回收。例如,邏輯處理器212B可以執行指示DMVSC804的指令,并且可以將請求存儲器管理器808保留一定量的存儲器一例如一個或多個存儲區一供DMVSC804使用的消息發送到存儲器管理器808。存儲器管理器808可以鎖定存儲器來供在DMVSC804內的專有使用,以及DMVSC804可以發送存儲器的GPA至IjDMVSP802。在本例中,DMVSP802可以發送GPA到VID810,以及VID810可以在影子頁表中去除用于這些GPA到SPA的條目。在本例中,存儲器管理器808可包括標識GPA仍舊有效的信息,然而,實際上GPA不再由系統物理地址進行支持。在本例中,存儲器管理器808將不使用鎖定的GPA,以及對它們進行支持的SPA可被重新分配。已經解除關聯的客戶物理地址可以與物理地址重新關聯。在本例中,對于調撥存儲頁面的請求可以由VID810接收,以及VID810可以獲得SPA以滿足該請求,并把地址范圍發送到DMVSP802。在實施例中,VID810可被配置成獲得鄰接范圍的SPA,以便提高系統效率。在本例中,VID810可以確定客戶操作系統220具有被鎖定以供與虛擬NUMA節點606相關聯的DMVSC804專有使用的GPA。VID810可以創建在被鎖定的GPA與SPA之間的關系,并發送消息到DMVSP802。DMVSP802然后可以發送消息到DMVSC804,以及DMVSC804可以發送消息給存儲器管理器808,指示GPA可被解鎖并被歸還到與虛擬NUMA節點606相關聯的存儲器管理器808的存儲器池。在實施例中,VID810可以根據GPA是否氣球般膨脹,而確定是使用熱添加技術還是使用氣球膨脹技術。例如,當VID810接收SPA以調撥給虛擬NUMA節點606時,它可以確定是否有任何GPA被DMVSC804鎖定。在有GPA被鎖定的情形下,VID810可以在它熱添加存儲器之前用SPA對它們進行支持。在存儲器被調撥給虛擬NUMA節點606之前,它可以被置零(zero),以及它的相關聯的高速緩沖存儲器線為了安全原因可被清洗。通過使存儲器置零,先前與一個分區相關聯的存儲器的內容不泄漏到另一個分區。現在轉到圖10,圖上描繪圖9的操作程序的替換實施例,其包括附加的操作1010-1020。操作1010顯示確定在多個虛擬NUMA節點的第二虛擬NUMA節點中的存儲器壓力大于預定值;以及將第二虛擬NUMA節點遷移到計算機系統的第二NUMA節點。例如,且轉到圖7,在實施例中,在第二虛擬NUMA節點608中的存儲器壓力可以增加。也就是,指示存儲器壓力的值可以由DMVSP802接收,其指示虛擬NUMA節點608壓力過大。在本例中,虛擬機240或個體虛擬NUMA節點608可以具有目標壓力值,以及當前的壓力值可能比管理員設置的目標值大。目標壓力值可被存儲在可由DMVSP802訪問的數據結構中。然后可以接收運行的虛擬機或虛擬NUMA節點的當前壓力值。DMVSP802可以連續地步進通過(stepthrough)運行的虛擬機或虛擬NUMA節點的列表,并調撥存儲器以便把存儲器壓力值減小到目標值,以及回收存儲器以便把壓力增加到目標值。在例子中,DMVSP802可被配置成確定當前宿有虛擬NUMA節點606和608的NUMA節點,例如NUMA節點702,不能分配足夠的存儲器以便獲得用于這兩個虛擬NUMA節點的目標存儲器壓力值。在本例中,DMVSP802可被配置成發送信號到超級監視器202,以及超級監視器202可被配置成企圖將虛擬NUMA節點之一移出NUMA節點702。超級監視器202可以檢查NUMA節點702-706的當前的工作負荷,并確定例如NUMA節點704可以宿有該虛擬NUMA節點,并分配足夠的資源給它以便將存儲器壓力減小到目標值。在本例中,超級監視器202可被配置成重新指派虛擬NUMA節點608給NUMA節點704。也就是,超級監視器202,與VID810相結合地,可以將客戶物理地址616重新映射到系統物理地址714,以及把邏輯處理器212E和F設置為用于虛擬處理器230C和D的理想處理器。繼續進行圖10的說明,操作1012圖示從特定的虛擬NUMA節點回收客戶存儲器的至少一個存儲區;以及將客戶存儲器的被回收的該至少一個存儲區調撥給第二虛擬NUMA節點。例如,DMVSP802可被配置成從例如虛擬NUMA節點606回收存儲器,以及將該存儲器調撥給虛擬NUMA節點608。在本例中,虛擬NUMA節點606和608可以用單個NUMA節點或‘平的’體系結構進行支持。在本示例性實施例中,當例如沒有可被調撥給虛擬NUMA節點608的可用存儲器可得到時,DMVSP802可以嘗試從虛擬NUMA節點606釋放存儲器。在另一個例子中,DMVSP802可被配置成從例如虛擬NUMA節點610回收存儲器,并把該存儲器調撥給虛擬NUMA節點608。也就是,可以從一個虛擬機取來存儲器,并將它給予另一個虛擬機。在特定的例子中,并參照圖6,虛擬NUMA節點606和608可被映射到計算機系統600的資源。在本例中,DMVSP802可以檢查其它虛擬NUMA節點,例如按照存儲器優先權的次序,例如,從虛擬機MO中的低優先權虛擬NUMA節點開始,或從最低優先權虛擬機開始。如果例如檢測到一個虛擬NUMA節點,諸如虛擬NUMA節點606,具有小于目標閾值的存儲器壓力值,則DMVSP802可以發起存儲器回收,并從虛擬NUMA節點606中去除存儲器。在回收完成后,可以發起調撥操作,以及存儲器可被熱添加到虛擬NUMA節點608,或者氣球般膨脹的客戶物理地址可以與系統物理地址重新關聯。在特定的例子中,且參照圖7,DMVSP802可以例如以存儲器優先權的次序檢查由相同的NUMA節點702進行支持的其它虛擬NUMA節點。如果例如在與虛擬NUMA節點608相同的NUMA節點上的虛擬NUMA節點被檢測到具有小于目標閾值的存儲器壓力值,則DMVSP802可以發起存儲器回收。在回收完成后,可以發起調撥操作,以及存儲器可被熱添加到虛擬NUMA節點608,或者氣球般膨脹的客戶物理地址可以與系統物理地址重新關聯。繼續進行圖10的說明,操作1014描繪確定特定的虛擬NUMA節點的客戶存儲器的至少一個存儲區與系統存儲器解除關聯;以及將客戶存儲器的該至少一個存儲區映射到系統存儲器的至少一個存儲區上。例如,在實施例中,DMVSP802可以由邏輯處理器執行,以及可以作出決定來用SPA624對虛擬NUMA節點606中的GPA進行支持。例如,GPA可以由DMVSC804保留,以及SPA可以被重新分配給另一個虛擬NUMA節點或母分區204。在本例中,對于調撥存儲頁面的請求可以被VID810接收,以及VID810可以獲得SPA以滿足該請求,并發送地址范圍到DMVSP802。在實施例中,VID810可被配置成獲得鄰接范圍的SPA,以便提高系統效率。在NUMA實施例中,VID810可被配置成從正在運行虛擬NUMA節點606的相同的NUMA節點獲得鄰接范圍的SPA。VID810可以創建在鎖定的GPA與SPA之間的關系,并發送消息到DMVSP802。DMVSP802然后可以發送消息到DMVSC804,以及DMVSC804可以發送消息給存儲器管理器808,指示GPA可被解鎖并被歸還到與虛擬NUMA節點606相關聯的存儲器池。繼續進行圖10的說明,操作1016圖示將特定的虛擬NUMA節點映射到計算機系統的第一NUMA節點上;以及將該特定的虛擬NUMA節點遷移到計算機系統的第二NUMA節點上。例如,并參照圖7,客戶操作系統220可被散布在至少兩個NUMA節點上,諸如NUMA節點702和704。例如,并參照圖7,超級監視器202可以調度虛擬NUMA節點606和608在NUMA節點702上運行。在本例中,超級監視器202可以接收指示NUMA節點702壓力過大的信號。例如,客戶操作系統220可以生成指示虛擬NUMA節點606和608在存儲量方面較低的信號。在本例中,超級監視器202可被配置成通過將虛擬NUMA節點608移出NUMA節點702,而減小在壓力過大的NUMA節點上的工作負荷。繼續進行圖10的說明,操作1018圖示將虛擬處理器添加到特定的虛擬NUMA節點。例如,在實施例中,可以在虛擬機MO的運行時執行期間,通過使用例如處理器熱添加操作而添加虛擬處理器,諸如虛擬處理器230B。也就是,虛擬NUMA節點606可以在一個點只有單個虛擬處理器230A,然后添加另一個。在實施例中,可以把新添加的處理器指派給對虛擬處理器230A進行支持的處理器,或者可以把另一個邏輯處理器分配來運行虛擬處理器230B線程。在NUMA實施例中,如果另一個邏輯處理器正在被使用來支持虛擬處理器230B,則它可以從正在支持虛擬NUMA節點606中的另外虛擬處理器的同一個NUMA節點702被分配。繼續進行圖10的說明,操作1020圖示接收對于執行虛擬機的虛擬處理器的請求,虛擬處理器被指派給邏輯處理器,邏輯處理器被指派給NUMA節點,以及虛擬處理器被指派給虛擬NUMA節點;確定邏輯處理器不能執行該虛擬處理器;以及選擇第二邏輯處理器來執行該虛擬處理器,第二邏輯處理器來自第二NUMA節點。例如,并參照圖7,在實施例中,超級監視器202可以從虛擬處理器230A接收對于執行虛擬處理器線程的請求,并嘗試在概念處理器212A上,例如在支持虛擬處理器230A的處理器上調度該線程。在本例中,超級監視器202可以檢測邏輯處理器212A被過量調撥,從而不能執行該虛擬處理器線程。在這種情形下,可以執行超級監視器202,且它可以選擇另一個邏輯處理器來執行該虛擬處理器線程。例如,超級監視器202可以嘗試選擇在同一個NUMA節點上的不同的邏輯處理器。如果例如NUMA節點被過量調撥,則超級監視器202可被配置成選擇遠程處理器來執行虛擬處理器230A,例如,邏輯處理器212E。在本例中,關于是等待還是在遠程節點上調度線程的決定,可以通過使用與NUMA節點704相關聯的NUMA比率而做出。如果NUMA比率是低的,并16且預期的對理想處理器的等待較長,則可以做出在遠程節點上調度線程的決定。另一方面,如果NUMA比率是高的并且預期的等待時間較低,則可以做出等待的決定。現在轉到圖11,圖上描繪包括操作1100、1102、1104和1106的用于實踐本公開內容的諸方面的操作程序。操作1100開始該操作程序,以及操作1102顯示執行虛擬機,虛擬機具有包括多個虛擬NUMA節點的拓撲,其中虛擬機的拓撲是與計算機系統的物理拓撲相獨立地生成的。例如,超級監視器202可以執行具有多個虛擬NUMA節點的虛擬機。如圖6所示,可以創建包括虛擬NUMA節點606和608的虛擬機M0。虛擬NUMA節點每個可以具有一個或多個虛擬處理器230A-D和客戶物理地址614和616。在本實施例中,虛擬NUMA節點606和608可以與底層硬件的拓撲相獨立地被創建。也就是,虛擬機的拓撲是與諸如由圖6和圖7所描繪的底層硬件無關的。因此,在本實施例中,每個虛擬機的拓撲是與實現它的計算機系統的底層物理拓撲相分離的。繼續進行圖11的說明,操作1104圖示確定在多個虛擬NUMA節點的每個虛擬NUMA節點中的存儲器壓力。例如,并參照圖8,每個虛擬NUMA節點606和608的存儲器壓力可以被獲得,例如被生成和/或被接收。存儲器壓力信息可以標識客戶的性能如何受每個虛擬NUMA節點606-608可得到的存儲器的量影響。這個信息可以在客戶操作系統220的運行時期間例如由諸如DMVSC804和/或806那樣的一個或多個DMVSC進行計算,并被發送到DMVSP802。也就是,在特定的實施例中,邏輯處理器可以執行指示DMVSC804或806的指令,并且為每個虛擬NUMA節點生成存儲器壓力信息。這個信息然后可被發送到例如DMVSP802。在示例性實施例中,存儲器壓力信息可包括范圍從0到4的一系列值,且每個值可以標識由于虛擬NUMA節點606-608的資源引起的客戶OS正在經受的不同的存儲器壓力水平。隨著客戶操作系統變得壓力更大,即,隨著對于有效執行當前工作負荷所需要的存儲器量增加,DMVSC804和806可以修訂它們的值,并把這個信息傳送到DMVSP802。繼續進行圖11的說明,操作1106顯示根據在多個虛擬NUMA節點的每個虛擬NUMA節點中的存儲器壓力,調節被指派給多個虛擬NUMA節點中的至少一個虛擬NUMA節點的客戶存儲器。在包括操作1206的實施例中,邏輯處理器212A可以執行指示DMVSP802的指令,以及可以調節例如在虛擬NUMA節點606中的客戶物理地址的量。也就是,DMVSP802可以根據在虛擬NUMA節點606中的存儲器壓力而調撥或回收處理器,例如,如果被分配給虛擬NUMA節點606的進程壓力過大,則可以調撥存儲器。在實施例中,當由DMVSP802配置的邏輯處理器212確定調撥或回收存儲器時,它可以以每個存儲區為基礎做到這一點。例如,DMVSP802可以調撥/回收存儲區,并檢查存儲器狀態如何改變。如果存儲器狀態沒有改變,則DMVSP802可以調撥/回收另一個存儲區。現在轉到圖12,圖上描繪圖11的操作程序1100的替換實施例,其包括操作1208-1216。如圖所示,操作1208顯示發送虛擬機到第二計算機系統。例如,并參照圖5,在實施例中,虛擬機的狀態可被保存在一個或多個配置文件中,并被發送到另一個計算機系統,例如,從計算機504發送到506。計算機系統506的超級監視器可以讀取該文件或該多個文件,并實例化虛擬機。虛擬機拓撲影響遷移和復原虛擬機的能力。具體地,關于允許底層硬件的拓撲被檢測的決定和虛擬NUMA節點的尺寸影響虛擬機將執行得多好以及它是否可以輕松地遷移。舉例而言,虛擬NUMA節點的尺寸影響遷移的能力,例如,隨著虛擬NUMA節點的尺寸增加,虛擬NUMA節點的可移植性降低,而隨著虛擬NUMA節點的尺寸減小,虛擬機的性能同樣降低。另外,可以檢測底層計算機的拓撲的虛擬機不能輕松地遷移,這是由于NUMA感知的(NUMAaware)操作系統和應用在引導時間根據它們檢測到的第一個拓撲來最佳化其本身,且這些最佳化在虛擬機在未來可被遷移到的計算機上可能不適用。因此,通過在客戶操作系統引導時將虛擬NUMA節點暴露給它,操作系統可被最佳化來使用NUMA節點。通過給虛擬NUMA節點正確地定尺寸,虛擬機可以對于數據中心500中的許多不同的計算機系統進行最佳化。例如,并參照圖6,虛擬機240可包括兩個或更多個虛擬NUMA節點606和608。超級監視器202可以用邏輯處理器212A-D對虛擬處理器230A-D進行支持。當客戶操作系統220引導時,它可以檢測虛擬NUMA節點606和608,并且可被配置成使得使用虛擬NUMA節點606和608的進程的調度和執行最佳化。在一段時間后,虛擬機240可被遷移到具有類似于圖7所描繪的物理拓撲的計算機系統。圖7的超級監視器202可以用邏輯處理器212A和B對虛擬處理器230A和B進行支持,以及用邏輯處理器212E和F對虛擬處理器230C和D進行支持。即使底層計算機拓撲已經從SMP改變到NUMA,客戶操作系統220仍可以以與它在圖6的計算機系統上運行時的相同方式繼續操作。繼續進行圖12的說明,操作1210顯示將多個虛擬NUMA節點的第一虛擬NUMA節點映射到計算機系統的第一NUMA節點上;以及將多個虛擬NUMA節點的第二虛擬NUMA節點映射到計算機系統的第一NUMA節點上。例如,并參照圖7,諸如邏輯處理器212A的邏輯處理器可以執行超級監視器指令,并可以使諸如虛擬NUMA節點606和608的虛擬NUMA節點與諸如NUMA節點702的NUMA節點建立親緣關系。更具體地,邏輯處理器可以用來自NUMA節點702的RAM214的系統物理地址對客戶物理地址614和616進行支持、以及可以用邏輯處理器212A到D對虛擬處理器230A到D進行支持。繼續進行圖12的說明,操作1212顯示將多個虛擬NUMA節點的第一虛擬NUMA節點映射到計算機系統的第一NUMA節點上;以及將多個虛擬NUMA節點的第二虛擬NUMA節點映射到計算機系統的第二NUMA節點上。例如,并參照圖7,諸如邏輯處理器212A的邏輯處理器可以執行超級監視器指令,并可以把虛擬NUMA節點606指派給NUMA節點702和把虛擬NUMA節點608指派給NUMA節點704。在本例中,當超級監視器202被執行時,超級監視器調度器可以在邏輯處理器212A-D上調度來自虛擬處理器230A-B的線程、以及在邏輯處理器212E到G上調度來自虛擬處理器230C或D的線程。現在轉到圖13,圖上圖示圖12的操作程序的替換實施例,其包括操作1314,該操作1314顯示確定在第二虛擬NUMA節點中的存儲器壓力大于預定值;和將第二虛擬NUMA節點遷移到計算機系統的第二NUMA節點。例如,并轉到圖7,在實施例中,在第二虛擬NUMA節點608中的存儲器壓力可以增加。也就是,指示存儲器壓力的值可以由DMVSP802接收,其指示虛擬NUMA節點608壓力過大。在本例中,每個虛擬NUMA節點606-612和/或虛擬機240-242可以具有目標壓力值,且虛擬NUMA節點608的當前的壓力值可大于由管理員設置的目標值。目標壓力值可被存儲在可由DMVSP802訪問的數據結構中。然后可以接收正在運行的虛擬機或虛擬NUMA節點的當前的壓力值。DMVSP802可以連續地步進通過運行的虛擬機或虛擬NUMA節點的列表,并調撥存儲器以便把存儲器壓力值減小到目標值,以及回收存儲器以便把壓力增加到目標值。現在轉到圖14,圖上圖示圖12的操作程序的替換實施例,其包括操作1416,該操作1416顯示確定第二虛擬機的存儲器壓力大于預定值;和將該虛擬機的第二虛擬NUMA節點遷移到計算機系統的第一NUMA節點。在實施例中,至少兩個虛擬機可以正在執行,例如,虛擬機240和242。在本例中,虛擬機240的虛擬NUMA節點可被映射到例如圖7的NUMA節點702和704,以及虛擬機M2的虛擬NUMA節點可被映射到例如NUMA節點706。在本例中,每個虛擬機240和M2,和/或每個虛擬NUMA節點606-612可以具有可被存儲在可由DMVSP802訪問的數據結構中的目標壓力值。在本例中,在第二虛擬機242中的存儲器壓力,由于在虛擬機中的活動——例如虛擬機242接收到許多讀/寫請求——而可能增加,以及該值可被DMVSP802接收。DMVSP802可以接收運行的虛擬機或虛擬NUMA節點的當前的壓力值,并且連續地步進通過運行的虛擬機或虛擬NUMA節點的列表,以確定存儲器是否可被調撥給虛擬機對2以便緩和存儲器壓力。在其中壓力不能通過調撥或回收存儲器而被減輕的情形下,DMVSP802可被配置成發送信號到超級監視器202,然后超級監視器202可以嘗試重新分配計算機系統的資源,以便減輕存儲器壓力。例如,超級監視器202可以檢查NUMA節點702-706的當前的工作負荷,并確定例如NUMA節點702可以宿有來自虛擬機MO的虛擬NUMA節點,并將虛擬NUMA節點608重新指派給NUMA節點702。也就是,超級監視器202,與VID810相結合,可以將客戶物理地址616重新映射到系統物理地址712,并將邏輯處理器212A和D設置為用于虛擬處理器230C和D的理想處理器。然后,超級監視器可以將虛擬NUMA節點610重新映射到NUMA節點704,并調節在虛擬機M2的每個虛擬NUMA節點610-612內的存儲器,以便減小它的存儲器壓力。現在轉到圖15,圖上圖示包括操作1500、1502和1504的、用于實踐本公開內容的諸方面的操作程序。操作1500開始該操作程序,以及操作1502顯示執行第一虛擬機,虛擬機具有包括多個虛擬NUMA節點的拓撲,該多個虛擬NUMA節點的每個虛擬NUMA節點包括虛擬處理器和客戶物理地址,其中虛擬機的拓撲是與計算機系統的物理拓撲相獨立地生成的。例如,圖7的超級監視器202可以執行具有多個虛擬NUMA節點608-610的虛擬機M0。虛擬NUMA節點606和608每個可以具有一個或多個虛擬處理器230A-D和客戶物理地址614和616。在本實施例中,虛擬NUMA節點606和608可被映射到計算機系統700的資源。例如,邏輯處理器212A和B可被設置為用于虛擬處理器230A和B的理想處理器,以及客戶物理地址614可以由系統物理地址710進行支持。同樣地,邏輯處理器212E和F可被設置為用于虛擬處理器230C和D的理想處理器,以及客戶物理地址616可以被映射到系統物理地址714。在本實施例中,虛擬NUMA節點606和608是獨立于底層硬件的拓撲的。也就是,虛擬機的拓撲是與諸如由圖6和圖7所描繪的底層硬件無關的。因此,在本實施例中,虛擬機的拓撲是與實現它的計算機系統的底層物理拓撲相分離的。繼續進行圖15的說明,操作1504顯示將附加虛擬處理器添加到多個虛擬NUMA節點的一個虛擬NUMA節點。例如,在實施例中,附加虛擬處理器可被加到虛擬NUMA節點,諸如舉例而言虛擬NUMA節點606。在本例中,在虛擬機240的運行時執行期間,可以通過使用例如處理器熱添加操作而添加虛擬處理器,諸如虛擬處理器。在實施例中,新添加的處理器可被指派給對虛擬處理器230A進行支持的處理器,或另一個邏輯處理器可被設置為理想處理器來運行新添加的虛擬處理器的線程。在NUMA實施例中,邏輯處理器可以從正在對虛擬NUMA節點606進行支持的同一個NUMA節點702分配。現在轉到圖16,圖上描繪由圖15所描繪的操作程序的替換實施例,其包括附加操作1606-1612。操作1606顯示確定在多個虛擬NUMA節點的每個虛擬NUMA節點中的存儲器壓力;和根據在多個虛擬NUMA節點的每個虛擬NUMA節點中的存儲器壓力,調節被指派給多個虛擬NUMA節點的至少一個虛擬NUMA節點的客戶存儲器。參照圖8,對于每個虛擬NUMA節點606和608的存儲器壓力可以被獲得,例如被生成和/或被接收。存儲器壓力信息可以標識客戶的性能如何受每個虛擬NUMA節點可得到的存儲器的量影響。DMVSC804和806可被配置成從存儲器管理器808接收例如物理存儲器通知和/或客戶操作系統分頁信息,并使用它來計算每個虛擬NUMA節點606和608的存儲器壓力。繼續這個例子,邏輯處理器212A例如可以執行指示DMVSP802的指令,并可以調節例如在虛擬NUMA節點606中的客戶物理地址的量。也就是,DMVSP802根據由于在虛擬NUMA節點606中的資源引起的客戶OS正經受的存儲器壓力,調撥或回收存儲器。繼續進行圖16的說明,操作1608圖示從多個虛擬NUMA節點的一個虛擬NUMA節點去除虛擬處理器。在包括1706的實施例中,超級監視器202可以由邏輯處理器執行,且虛擬處理器可以從虛擬NUMA節點606被去除。例如,超級監視器202可以接入客戶操作系統220的熱去除API,以及從虛擬NUMA節點608去除例如虛擬處理器230B。現在轉到操作1610,它顯示把對于多個虛擬NUMA節點的NUMA比率報告給客戶操作系統。例如,在實施例中,超級監視器202可以生成對于虛擬NUMA節點606-608的NUMA比率,并可以把這個信息報告給圖6或圖7的客戶操作系統220。在實施例中,超級監視器202可以在虛擬機的固件表中創建數據結構,其指示對于虛擬NUMA節點的NUMA比率,并且當客戶操作系統220引導時客戶可以讀取該表并使用信息來做出調度決定。例如,客戶操作系統,或者NUMA感知的應用,可以使用NUMA比率來確定是否使用來自遠程NUMA節點的資源。例如,操作系統可以具有準備好要執行的待決線程。在本例中,操作系統也可以被配置成等待一定量的時間以便讓理想處理器變為空閑的,否則它將在具有小于預定的NUMA比率的遠程處理器上調度該線程。在這種情形下,調度器愿意等待的時間量取決于NUMA比率。現在轉到操作1612,它顯示將虛擬機從第一NUMA節點遷移到多個NUMA節點。例如,在實施例中,超級監視器指令可以由邏輯處理器執行,且虛擬機240可被映射到多個NUMA節點704和706。在本例中,計算機系統700可能處在繁重的使用下,例如,虛擬機242可能正在使用大部分的資源,所以,虛擬機242被遷移出計算機700。在這種情形下,超級監視器202可以重新分配計算機系統700的資源,將虛擬機240重新映射到NUMA節點704和706。現在轉到圖17,圖上描繪圖16的操作程序的替換實施例,其包括操作1714和1716。在實施例中,操作1606可包括操作1714,其顯示根據虛擬NUMA節點的當前存儲器壓力低于目標閾值的確定,從多個虛擬NUMA節點的第一虛擬NUMA節點中回收存儲器。例如,在實施例中,DMVSP802可被配置成當虛擬NUMA節點608的存儲器壓力低于目標閾值時,從虛擬NUMA節點606回收存儲器。例如,在實施例中,當例如在母分區中沒有可得到的存儲器可被調撥且虛擬NUMA節點608正經受不可接受的壓力時,DMVSP802可以嘗試從虛擬NUMA節點606釋放存儲器。如果存儲器從虛擬NUMA節點606被回收,則可以發送異步消息到DMVSC804,指引它回收存儲器。當與客戶OS220相關聯的DMVSC804響應時,它可以指示在虛擬NUMA節點606內新的存儲器壓力。在一些情形下,響應于存儲器去除操作,存儲器壓力可能增加。繼續進行圖17的說明,操作1716顯示根據客戶操作系統的當前存儲器壓力大于目標閾值的確定,將存儲器調撥給多個虛擬NUMA節點的第一虛擬NUMA節點。例如,在實施例中,DMVSP802可被配置成當虛擬NUMA節點606的存儲器壓力大于目標閾值時,將存儲器調撥給虛擬NUMA節點606。在這種情形下,如果存儲器是可得到的,則它可被分配給虛擬NUMA節點606。也就是,DMVSP802可以獲得標識虛擬NUMA節點606的性能如何受可得到的存儲器的量影響的存儲器壓力信息,并把存儲器添加到虛擬NUMA節點606。在特定的例子中,存儲器壓力信息可以是一個值。在本例中,DMVSP802可以將當前存儲器壓力值與指示對于虛擬NUMA節點606的最小值的信息表進行比較,并調節存儲器直至虛擬NUMA節點606的存儲器壓力等于最小為止。例如,管理員可以配置運行關鍵應用的客戶操作系統,以便具有對于虛擬NUMA節點606和608的低的最小值。以上的詳細說明經由例子和/或操作圖闡述了系統和/或過程的各種實施例。就這樣的框圖和/或例子包含一個或多個功能和/或操作而論,本領域技術人員將懂得,在這樣的框圖或例子內的每個功能和/或操作可通過各種各樣的硬件、軟件、固件、或事實上它們的任何組合,而被單獨地和/或共同地實施。雖然顯示和描述了這里所描述的本主題的特定方面,但本領域技術人員將明白,根據這里的教導,可以做出改變和修改,而不背離這里描述的主題和它的更廣義的方面,所以,所附權利要求是要將處在這里描述的主題的真實精神和范圍內的所有的這樣的改變和修改都包括在它們的范圍內。權利要求1.一種方法,包括接收對于實例化虛擬機(240)的請求,所述請求包括用于虛擬機(240)的特征;根據所述特征選擇用于虛擬機(240)的虛擬NUMA節點拓撲,該虛擬NUMA節點拓撲包括多個虛擬NUMA節點(606-608);在計算機系統(606)上實例化該虛擬機040),該虛擬機包括多個虛擬NUMA節點;以及根據在該多個虛擬NUMA節點的特定虛擬NUMA節點(606)中的存儲器壓力,調節被指派給該特定虛擬NUMA節點的客戶存儲器的量。2.權利要求1的方法,還包括確定在該多個虛擬NUMA節點的第二虛擬NUMA節點(608)中的存儲器壓力大于預定值;以及將第二虛擬NUMA節點(608)遷移到計算機系統(700)的第二NUMA節點(704)。3.權利要求1的方法,其中調節客戶存儲器的量還包括從該特定虛擬NUMA節點(606)回收客戶存儲器的至少一個存儲區;以及將客戶存儲器的被回收的至少一個存儲區調撥給第二虛擬NUMA節點(608)。4.權利要求1的方法,其中調節客戶存儲器的量還包括確定該特定虛擬NUMA節點(606)的客戶存儲器的至少一個存儲區與系統存儲器解除關聯;以及將客戶存儲器的該至少一個存儲區映射到系統存儲器的至少一個存儲區上。5.權利要求1的方法,還包括將該特定虛擬NUMA節點(606)映射到該計算機系統的第一NUMA節點(702)上;以及將該特定虛擬NUMA節點(606)遷移到該計算機系統的第二NUMA節點上(704)。6.權利要求1的方法,還包括將虛擬處理器(230B)添加到該特定虛擬NUMA節點(606)。7.權利要求1的方法,還包括接收對于執行虛擬機(240)的虛擬處理器(230A)的請求,該虛擬處理器(230A)被指派給邏輯處理器(212A),該邏輯處理器(212A)被指派給NUMA節點,以及該虛擬處理器被指派給虛擬NUMA節點(702);確定邏輯處理器(230A)不能執行該虛擬處理器(212A);以及選擇第二邏輯處理器(230E)來執行虛擬處理器(230A),該第二邏輯處理器來自第二NUMA節點(704)。8.一種計算機系統,包括用于執行虛擬機(MO)的電路,該虛擬機(240)具有包括多個虛擬NUMA節點(606-608)的拓撲,其中虛擬機(240)的拓撲是與計算機系統(700)的物理拓撲相獨立地生成的;用于確定在該多個虛擬NUMA節點的每個虛擬NUMA節點(606-608)中的存儲器壓力的電路;以及用于根據在該多個虛擬NUMA節點的每個虛擬NUMA節點(606-608)中的存儲器壓力,調節被指派給該多個虛擬NUMA節點的至少一個虛擬NUMA節點(606)的客戶存儲器的電路。9.權利要求8的計算機系統,還包括用于發送該虛擬機(240)到第二計算機系統(510)的電路。10.權利要求8的計算機系統,還包括用于將該多個虛擬NUMA節點的第一虛擬NUMA節點(606)映射到計算機系統(700)的第一NUMA節點(702)上的電路;以及用于將該多個虛擬NUMA節點的第二虛擬NUMA節點(608)映射到計算機系統(700)的所述第一NUMA節點(702)上的電路。11.權利要求8的計算機系統,還包括用于將該多個虛擬NUMA節點的第一虛擬NUMA節點(606)映射到計算機系統(700)的第一NUMA節點(702)上的電路;以及用于將該多個虛擬NUMA節點的第二虛擬NUMA節點(608)映射到計算機系統(700)的第二NUMA節點(704)上的電路。12.權利要求10的計算機系統,還包括用于確定在第二虛擬NUMA節點(608)中的存儲器壓力大于預定值的電路;以及用于將第二虛擬NUMA節點(608)遷移到計算機系統的第二NUMA節點(704)的電路。13.權利要求11的計算機系統,還包括用于確定第二虛擬機(242)的存儲器壓力大于預定值的電路;以及用于將虛擬機(240)的第二虛擬NUMA節點(608)遷移到計算機系統(700)的第一NUMA節點(704)的電路。14.一種包括處理器可執行指令的計算機可讀存儲介質,所述計算機可讀存儲介質包括用于執行第一虛擬機(240)的指令,該虛擬機(240)具有包括多個虛擬NUMA節點(606-608)的拓撲,該多個虛擬NUMA節點的每個虛擬NUMA節點包括虛擬處理器(230A-C)和客戶物理地址,其中該虛擬機(240)的拓撲是與計算機系統(700)的物理拓撲相獨立地生成的;以及用于將附加的虛擬處理器(230D)添加到該多個虛擬NUMA節點中的虛擬NUMA節點(608)的指令。15.權利要求14的計算機可讀存儲介質,還包括用于確定在該多個虛擬NUMA節點的每個虛擬NUMA節點(606-608)中的存儲器壓力的指令;以及用于根據在該多個虛擬NUMA節點的每個虛擬NUMA節點(606-608)中的存儲器壓力,調節被指派給該多個虛擬NUMA節點的至少一個虛擬NUMA節點(606)的客戶存儲器的指令。16.權利要求14的計算機可讀存儲介質,還包括用于從該多個虛擬NUMA節點中的虛擬NUMA節點(608)去除虛擬處理器(230D)的指令。17.權利要求14的計算機可讀存儲介質,還包括用于將對于該多個虛擬NUMA節點(606-608)的NUMA比率報告給客戶操作系統的指令。18.權利要求14的計算機可讀存儲介質,還包括用于將虛擬機(240)從第一NUMA節點(606)遷移到多個NUMA節點(606-608)的指令。19.權利要求15的計算機可讀存儲介質,其中用于調節客戶存儲器的指令還包括用于根據虛擬NUMA節點(606)的當前存儲器壓力低于目標閾值的確定,從多個虛擬NUMA節點的第一虛擬NUMA節點(606)回收存儲器的指令。20.權利要求15的計算機可讀存儲介質,其中用于調節客戶存儲器的指令還包括用于根據客戶操作系統(220)的當前存儲器壓力大于目標閾值的確定,將存儲器調撥給該多個虛擬NUMA節點的第一虛擬NUMA節點(606)的指令。全文摘要這里描述了用于實現對于虛擬機的虛擬NUMA體系結構、以及調節虛擬NUMA節點中的存儲器的技術。文檔編號G06F12/08GK102365625SQ201080013779公開日2012年2月29日申請日期2010年3月19日優先權日2009年3月26日發明者奧辛斯J.申請人:微軟公司