TW202316264A - 精簡配置的分解記憶體中的分頁 - Google Patents
精簡配置的分解記憶體中的分頁 Download PDFInfo
- Publication number
- TW202316264A TW202316264A TW110145826A TW110145826A TW202316264A TW 202316264 A TW202316264 A TW 202316264A TW 110145826 A TW110145826 A TW 110145826A TW 110145826 A TW110145826 A TW 110145826A TW 202316264 A TW202316264 A TW 202316264A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- segments
- segment
- pool
- computer system
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文揭露一種精簡配置的多節點電腦系統,其具有分解的記憶體池和池化記憶體控制器。分解的記憶體池經配置為使共享記憶體容量可用於複數個計算節點中的每一者,此種記憶體容量相對於複數個計算節點被精簡配置。池化記憶體控制器經配置為將分解的記憶體池的複數個記憶體分段分配給複數個計算節點;將複數個分段的子集識別為冷分段,此種識別係基於決定每個這種冷分段的使用特性低於閾值;及將一個或多個冷分段分頁移出到擴展的大容量記憶體裝置,從而釋放分解的記憶體池的一個或多個經分配的記憶體分段。
Description
本申請案與精簡配置的分解記憶體中的分頁相關。
資料中心通常包括大量離散的計算節點,例伺服器電腦或其他合適的計算裝置。計算節點可利用可變數量的記憶體,使得實際使用量通常大大地低於總容量。
提供[發明內容]是為了以簡化形式介紹概念的選擇;將在下文的[實施方式]中進一步描述這些概念。[發明內容]並非旨在識別所要求保護的標的的關鍵特徵或必要特徵,也不旨在用於限制所要求保護的標的的範圍。此外,要求保護的標的不限於解決在本申請案的任何部分中指出的任何或所有缺點的實施方式。
本文揭露一種精簡配置的多節點電腦系統,其具有分解的記憶體池和池化記憶體控制器。分解的記憶體池經配置為使共享記憶體容量可用於複數個計算節點中的每一者,此種記憶體容量相對於複數個計算節點被精簡妹配置。池化記憶體控制器經配置為 (1) 將分解的記憶體池的複數個記憶體分段分配給複數個計算節點, (2) 將複數個分段的子集識別為冷分段,此種識別係基於決定每個此種冷分段的使用特性低於閾值,且(3)將一個或多個冷分段分頁移出到擴展的大容量記憶體裝置,從而釋放分解的記憶體池的一個或多個經分配的記憶體分段。
如上所述,資料中心通常具有大量伺服器電腦或其他離散計算節點。可將這樣的計算節點稱為「主機計算裝置」或「主機」,因為此等計算節點在某些情況下可用於主管複數個虛擬機器。然而,將理解的是,如本文所討論的計算節點可用於任何合適的計算目的,並不需要專門用於主管虛擬機器。此外,出於本文所討論的記憶體池場景的目的,主機本身可以是虛擬機氣。主機/節點通常配置有指定的最大記憶體配置(例如,1GB、8GB、1TB、8TB 或任何其他合適的記憶體配置)。這種配置本質上是經設置給作業系統和應用程式的節點的可直接存取記憶體的特徵。指定的記憶體配置可部分地由本地連接到離散節點或主管節點的機器的記憶體來提供,且部分地藉由使用可與多個不同節點相關聯的池化記憶體資源來提供。在某些情況下,可幾乎沒有限制且以非常低的延遲來立即存取經配置給節點的記憶體,而在其他情況下,可能需要協調活動來存取可能可供其他節點使用的記憶體。
取決於具體實施方式,每個單獨的計算節點可具有任何合適的電腦硬體組合或由任何合適的電腦硬體組合支持。在傳統設置中,伺服器通常經配置為基本上自給自足,其具有處理資源、資料存儲、記憶體、網路介面組件、電源及冷卻等,以便在無需接通外部資源的情況下就能操作。也就是說,刀鋒伺服器或機架節點有時會省略冷卻、電源或其他低級基礎設施,這些功能被卸載到為多個節點提供服務的共享組件上。
在多節點設置中,工作負載可從節點到節點顯著變化。例如,資料中心節點的子集可負責資源密集型的工作負載,而其他節點則相對閒置。因此,儘管有一些高度本地化活動,但總資源消耗可能相對較低,且由於節點的配置方式,處於閒置負載的資源不能「借給」或以其他方式由活動高的計算節點消耗。這種無法利用閒置資源的做法是低效率的,有時被稱為「資源擱置(resource stranding)」。換句話說,可能被應用於計算任務的資源反而被困在閒置或未充分利用的主機中。
具體來說,對於揮發性記憶體來說,當平均記憶體消耗/使用小於本地連接的記憶體的量時就發生記憶體資源的擱置。例如,若刀鋒伺服器配備有512GB 的本地連接記憶體,則 128GB 記憶體的統計實際使用量構成記憶體資源的顯著擱置。當跨大量節點擴展時,這種類型的低效率可能會非常嚴重。
當硬體資源被拉出單獨的計算節點且相反地被「分解」為可被連接的計算節點所靈活存取的單獨的資源池時,可減輕擱置。本申請案主要考慮到揮發性記憶體硬體(例如,隨機存取記憶體(RAM))被分解到記憶體池中,且揮發性記憶體硬體經管理以允許其由複數個計算節點中的任何一者靈活使用的場景—例如,在資料中心中。這有助於緩解資源擱置,因為計算節點可根據需要來獲取和釋放記憶體。
在許多示例中,共同配置給複數個計算節點的記憶體量可能超過可用的全部的本地和池化記憶體。換句話說,共享記憶體容量可暴露給複數個計算節點,其中單個容量對複數個計算節點中的每一者皆是實際上可用的,使得在實施方式中使用的總物理記憶體容量小於對於複數個計算節點中的每一者實際上可用的單個容量的總和。這有時被稱為記憶體相對於複數個計算節點的「精簡配置」。一般而言,在沒有精簡配置的資料中心環境中,可觀察到單個計算節點(及/或在計算節點上實施的虛擬主機)通常經配置有比計算節點最終實際使用的資源實質上更多(隨著時間推移,統計地計算)的資源(例如,存儲空間及記憶體)。
然而,當記憶體經精簡配置時,若多個不同的計算節點嘗試同時使用大部分的記憶體(例如,若所有計算節點皆嘗試使用一定量的記憶體,其接近它們自身的全部記憶體配置),則分解的記憶體池可能會承受很大的壓力。如本文所用,池上的記憶體壓力是指計算節點試圖共同使用比分解的記憶體池中可用的記憶體更多的記憶體,或記憶體量超過可被預定義或以其他方式所決定的閾值的實例。
因此,本申請案揭露用於解決藉由使用池化記憶體控制器對池化記憶體提出更高要求的場景的技術。池化記憶體控制器通常經配置為管理分解的記憶體(由控制器直接管理的池記憶體,或外部記憶體,如批量故障轉移記憶體或由其他控制器管理的其他池分段),以實踐節點分配請求,從而分配記憶體至多到節點的總配置。將應當理解的是,在一些示例中(例如,在池使用率高於閾值或更嚴重地超過最大容量的記憶體壓力情況下),池化記憶體控制器可能無法立即為所請求的分配提供物理記憶體。然而,使用本發明的技術,池化記憶體控制器可用各種方式回應池化壓力,以便實踐對更多池化記憶體的有效請求。
在一些示例中,池化記憶體控制器藉由撤銷來自一個或多個計算節點的池分配來解決記憶體壓力。撤銷可基於計算節點對當前分配給此等計算節點的池記憶體具有較低優先級/需求的評估。在這些或其他示例中,記憶體分配請求可經路由到可能仍具有可用記憶體之不同的分解的記憶體池分段(即,由不同的記憶體控制器所管理的池記憶體)。例如,池化記憶體控制器可經配置為將記憶體分配請求路由到擴展的大容量記憶體池。在一些示例中,池化記憶體控制器可將資料從擴展記憶體交換到另一個池分段或擴展的大容量記憶體池中,以保存交換出去的資料。池化記憶體控制器可用任何合適的方式撤銷池分配及/或交換資料,以便管理記憶體池的池壓力,同時向複數個計算節點適當地提供可用的記憶體。
關於圖1,示意性地示出記憶體的分解。如所示,電腦系統100包括複數個計算節點100A-100N(其中N是任何合適的正整數,例如數十、數百、數千、數百萬或更多),此等計算節點與池化記憶體控制器104耦合,池化記憶體控制器104管理對分解的記憶體資源的存取。這些記憶體資源在分解的記憶體池106中,分解的記憶體池106包括擴展記憶體106A和擴展的大容量記憶體106B。例如,擴展記憶體106A可包括動態隨機存取記憶體(DRAM),其包括複數個DRAM分段(例如,由一個或多個DRAM裝置所提供的DRAM分段)。例如,擴展的大容量記憶體106B可包括SSD裝置。
分解的記憶體池106經配置為使共享記憶體容量(例如,1TB的記憶體或任何其他合適的記憶體量)經由擴展記憶體106A可用於複數個計算節點中的每一者(例如,除了計算節點的本地記憶體容量之外)。此外,擴展的大容量記憶體106B經配置為提供額外的存儲,例如提供共享記憶體容量的溢位。如下文更詳細討論的,計算節點100A、100B等與記憶體控制器104之間互動的重要態樣是智慧地管理池化記憶體資源,且避免會阻礙將池化記憶體靈活地分配給需要額外容量的節點的不當壓力。
在一些示例中,每個計算節點可具有本地連接的記憶體(例如,計算節點100A的本地記憶體102A、節點100B的本地記憶體102B和節點100N的本地記憶體102N)。本地連接的記憶體可以是任何合適的大小。在一些示例中,本地連接的記憶體可以是容錯的(例如,利用獨立磁碟冗餘陣列(RAID)技術)。因此,計算節點可經配置為優先將容錯的本地記憶體用於容錯代碼及/或資料。優先使用本地記憶體也可減少共享資源的壓力。在各種示例中,數十、數百、數千或更多單獨的計算節點可共享對一個或多個分解的資源池的存取,此一個或多個分解的資源池包括分解的記憶體池106。
在一些示例中,複數個計算節點中的每一者可藉由高速及/或高吞吐量匯流排(例如,藉由光子互連)而可操作地耦合到池化記憶體控制器104。例如,光子互連可顯著減少與計算節點100A-100N存取擴展記憶體106A相關的延遲,即使這種存取係由池化記憶體控制器104調節。在一些示例中,光子互連可允許以相對於存取本地記憶體的最小延遲(例如在相對於存取本地記憶體的零個、一個、二個或其他適當少量的附加的非統一記憶體存取架構(NUMA)中繼點中)來存取擴展記憶體106A。在一些示例中,可例如在記憶體控制器104上併入記憶體側快取,以減少與節點讀取/寫入池記憶體相關聯的延遲。在一些示例中,複數個計算節點中的一個或多個計算節點可包括NUMA感知記憶體控制器,NUMA感知記憶體控制器經配置為最佳化計算節點的一個或多個本地記憶體與分解的記憶體池106(例如,擴展記憶體106A及/或擴展的大容量記憶體池106B)之間的記憶體分段佈局。例如,計算節點可經配置為將可能被頻繁存取的資料存儲在相對較少數量的NUMA中繼點內的位置中(例如,在本地記憶體中或在分解的記憶體池中),且將可能被不太頻繁存取的資料存儲在大數量的 NUMA 中繼點內的位置中(例如,在擴展的大容量記憶體池中)。
在一些示例中,池化記憶體控制器104可包括一個或多個符合計算快速鏈路(CXL)的池化記憶體控制器(CPMC)。在一些示例中,擴展記憶體106A可使用任何合適類型的揮發性RAM——例如,雙倍資料速率同步動態RAM(DDR SDRAM)來實現。池化記憶體控制器104可促進各種計算節點100A-100N中的任何一者或其所有對分解的記憶體池106的利用。將理解的是,分解的記憶體池可包括任何合適數量的物理記憶體單元,其對應於任何合適的總記憶體容量,且分解的記憶體池可由一個或多個不同的記憶體控制系統管理。在某些情況下,節點可能限於使用單個記憶體控制器104後面的記憶體,或節點可使用多個池分段,而「分段」是指由單個記憶體控制器管理的記憶體。
一般來說,單獨的計算節點可包括經配置用於定址/存取本地記憶體的本地記憶體控制器及/或其他控制器、匯流排等。本地記憶體控制器可經配置為決定記憶體存取(例如,讀取或寫入)何時定址到本地記憶體中(即,本地到且緊密耦合到計算節點的資源),且由此在沒有外部參考分解的記憶體池的情況下處理此種存取。此外,本地記憶體控制器可以是「池感知的」,且經配置為決定記憶體存取何時參考分解的記憶體池中的記憶體。為了處理這樣的記憶體存取,本地記憶體控制器的池感知子組件(例如,藉由硬體、韌體及/或軟體)根據需要進行協作,以存取由池化記憶體控制器管理的記憶體分段。一般來說,在計算節點上運行的軟體(其包括操作系統)可能在很大程度上或完全不知道所存取記憶體(例如,本地記憶體與來自池的經分配的記憶體)的特定位置,同時仍經配置成查看包括本地記憶體和池化記憶體兩者的總記憶體配置。因此,在計算節點上運行的軟體可能完全不知道及/或不可知經配置的記憶體在本地記憶體和分解的記憶體池之間的特定分佈。本地記憶體控制器及/或池化記憶體控制器可用任何合適的方式協作,以實施本文所述的功能,例如,記憶體配置、記憶體分配、記憶體定址及/或記憶體存取(例如,讀取及/或寫入)。
在沒有精簡配置的一個示例場景中,分解的記憶體池可包括1TB (1024GB)的總記憶體,其可均勻地分佈在八個計算節點之間。此外,每個計算節點可包括128GB的本地連接的記憶體(例如,本地記憶體102A、本地記憶體102B和本地記憶體102N可各自包括對應計算節點本地的128GB記憶體)。因此,可為每個計算節點分配 128GB 的分解記憶體池的記憶體,同時在本地連接的記憶體和池化記憶體之間總共有 256GB 的配置記憶體。總體而言,八個計算節點可存取總共 2TB 的記憶體,同樣介於本地附加記憶體和池化記憶體之間。在此示例中,由於 128GB 的本地記憶體和 128GB 的池化記憶體,從節點的內部操作系統和記憶體系統的角度來看,每個節點被配置了 256GB 的記憶體。也就是說,節點「看到」了 256GB 的可用記憶體。
然而,每個計算節點通常不太可能充分利用其記憶體配置。相反,在更常見的情況下,每個計算節點在正常使用期間最多只使用其經配置的記憶體的 50%,而某些計算節點可使用的記憶體明顯少於 50%。因此,即使將 1TB 的分解的記憶體池完全分配給複數個計算節點,在任何給定時間處可能只有相對較小的一部分的池化記憶體在使用,這表示對可用資源的低效使用。
有鑑於此,可減少記憶體池中實際可用的(即,「配置的」)記憶體量,而不會顯著影響複數個計算節點的效能。例如,仍然可構造每個計算節點的記憶體空間,使其記憶體配置的池部分為 128GB(因此將八個節點相加時合計為 1TB),例如藉由為 128GB 的遠端記憶體設置位址範圍;然而,記憶體池實際上只能配置總共 256GB。因此,配置的記憶體量超過了實際供應的記憶體量。換句話說,雖然可允許每個計算節點使用高達 128GB 的池記憶體作為其 256GB 配置的一部分,但從統計上講,許多計算節點在任何的給定時間處可能不會使用這 128GB 的全部或甚至是其很大的一部分。
此外,記憶體配置需求可在不同計算節點之間變化(例如,基於不同的虛擬機器、程式及/或計算服務的不同記憶體需求)。例如,可為第一虛擬機器配置 1TB 的記憶體,而可為第二、不同的虛擬機器配置 2TB 的記憶體。更一般來說,不同的虛擬機器可根據需要為不同的計算工作負載配置任何合適的記憶體量。因此,可將分配給一個計算節點的任何未使用的記憶體重新分配給一個或多個其他節點。以此方式,若需要的話,任何特定的計算節點皆可使用高達 128GB 的池記憶體,同時仍保留分解池中的記憶體,因為每個計算節點通常將不會在任何的給定時間處使用 128GB。
可用任何合適的程度進行此種精簡配置。在多節點分組中,可用記憶體量(本地記憶體加池記憶體)超過典型情況下計算節點所用的記憶體量通常是有益的。換句話說,若單個計算節點平均使用大約 256GB,則通常希望在本地連接的記憶體和池化記憶體之間實際配置略多於 256GB 的記憶體,這樣計算節點就不會耗盡正常使用期間的可用記憶體。然而,在實施中,可在分解的記憶體池中設置任何合適的記憶體量,這可與配置給複數個計算節點的記憶體量具有任何合適的關係。
計算節點的配置是計算節點在整個操作過程中可使用的最大記憶體量。配置可具有相對應的位址空間大小,此大小可能超過計算節點在任何給定時間處可用的物理記憶體。這種「可用性」的含義是指本地連接的記憶體,加上池中「分配」以供節點立即/當前使用的記憶體量,此池中「分配」以供節點立即/當前使用的記憶體量在操作期間通常小於可根據其配置分配給節點的池記憶體的最大量。換句話說,節點配置有可見的記憶體分配,此分配對應於其本地連接的記憶體加上已「承諾」給節點的最大池記憶體量。池記憶體的「分配」是池中的可變記憶體量,其範圍從零最多到允許節點使用的最大池記憶體量。可在電腦系統運行期間的任何時間處將池記憶體分配給計算節點。例如,可在開機時的初始分配中或在任何後續的分配操作中將記憶體分配給計算節點,以回應於使用記憶體位址或記憶體位址範圍的請求,或在任何其他時間處用於任何合適的計算目的。此外,本發明的記憶體控制器可以靈活地控制記憶體分配,例如在操作期間根據需要為計算節點分配額外的記憶體,以放棄之前的記憶體分配(例如,以釋放記憶體池中的記憶體),及/或管理對記憶體池的池壓力,如下所述。
如剛剛提到的,計算節點可請求物理記憶體的分配以提供分配的位址空間的一部分(例如,以增加記憶體使用)。例如,所提供的部分可包括一個或多個記憶體「分段」,其中分段是指記憶體的任何連續部分(例如,記憶體分頁或任何其他記憶體區塊,其經對齊到指示由池化記憶體控制器管理的記憶體部分的最小粒度的分段大小,例如 8KB 分段、8MB 分段、1GB 分段或任何其他合適的分段大小)。如本文所述的記憶體控制器可藉由向請求計算節點提供對由池控制器管理的一個或多個物理記憶體分段的存取(例如,讀取和存儲資料)來回應。
儘管係關於多個計算節點和單個池化記憶體控制器來描述本申請案,但將應當理解的是,計算節點可使用多個不同的池化記憶體控制器。例如,計算節點可耦合到兩個或任意數量的不同的池化記憶體控制器。替代地或附加地,分組中的一些計算節點可使用第一池化記憶體控制器,而其他計算節點使用第二池化記憶體控制器。多個池化的記憶體控制器可經配置用於任何合適的目的,例如,提供更大的記憶體資源池、在多個控制器之間條帶化記憶體分配(例如,在 RAID 配置中提供冗餘及/或增強的速度,在一個或多個記憶體控制器發生故障及/或相關記憶體硬體發生故障的情況下提供故障轉移),及/或提供大型的、按比例放大的計算生態系統。在一些示例中,額外的池化記憶體控制器可經配置為提供分解的記憶體資源的擴展池(例如,每個記憶體控制器管理記憶體池的分段)。例如,若記憶體分配將超過第一池化記憶體控制器104的預定義閾值及/或容量,則可使用由不同的池化記憶體控制器提供的記憶體資源來完成後續的分配及/或資料交換(例如,額外使用如本文所述的擴展的大容量記憶體池或除此之外)。
本文對預定義的使用閾值進行了各種參考,預定義的使用閾值對應於觸發回應動作的記憶體池壓力位凖。在某些情況下,使用靜態閾值-例如,固定的使用量、使用百分比及活動位凖。在其他情況下,閾值可基於操作條件而為動態的。例如,可使用機器學習模型來識別行為模式,以決定何時對記憶體池施加可操作的壓力。更進一步,可採用分級來識別多個程度的記憶體壓力。在這種情況下,可能會在適度的壓力位凖下採用一套對策,而在更高的壓力位凖下會採取更實質性的干預措施。
在一些示例中,擴展的大容量記憶體池106B可與計算節點分離,且通常將具有較低的相關成本(例如,用於配置的財務成本、計算裝置足跡內的空間成本及/或用於維護及/或存取記憶體內的資料的電力成本),從而促進相對於擴展記憶體106A的更大容量。通常,與擴展記憶體106A相比,擴展的大容量記憶體池106B通常可具有更高的存取存儲資料的延遲。用於擴展的大容量記憶體池106B的記憶體技術的非限制性示例包括硬碟、固態驅動器(SSD)及/或網路資源(例如,經配置為與空間上不同的計算裝置互連以存取與空間上不同的計算裝置相關聯的SDRAM記憶體、硬碟及/或 SSD 資源的網路介面)。在一些示例中,擴展的大容量記憶體106B可充當用於一個或多個不同的池化記憶體控制器的擴展的大容量記憶體池(例如,池化記憶體控制器104和與不同的計算節點集相關聯的一個或多個附加的池化記憶體控制器可經配置成在必要時利用擴展的大容量記憶體106B的不同分段)。
每當節點需要存取記憶體分段時(例如,在記憶體配置或分配期間或回應於嘗試的記憶體存取),節點可與池化記憶體控制器104協商以決定節點是否應被分配有來自分配的記憶體池106的記憶體,及應該要分配多少來自分配的記憶體池106的記憶體給節點,例如,與池化記憶體控制器104的協商可由池化記憶體控制器的池感知子組件執行。例如,若計算節點請求將在預定義閾值及/或容量內的分配(即,池上的壓力很小或沒有壓力),則池化記憶體控制器104可在沒有減輕壓力干預措施的情況下簡單地提供完全分配。分配給節點通常會導致節點保持在或低於分配給節點的作業系統/應用程式的最大記憶體量。
在操作期間的任何點處,池化記憶體控制器104可決定記憶體池上是否存在不適當的壓力。例如,池化記憶體控制器104可回應於請求記憶體分配的計算節點或在任何時間處(例如,基於可能導致計算節點和其他計算的未來分配的總分配及/或總配置,或基於任何合適的邏輯評估,即當前或未來的配置可導致進一步的分配,如一個或多個計算節點增加的資源使用的預測)做出這樣的決定。當提供記憶體分配可能導致相當大的記憶體壓力時,池化記憶體控制器104可經配置為使用其他記憶體資源(例如,擴展的大容量記憶體池106B)提供分配,及/或減少在提供分配之前、之後或同時對另一個節點的記憶體分配。此外,池化記憶體控制器104經配置為藉由將來自擴展記憶體106A的經分配的記憶體的一個或多個分段(例如,任何合適大小的部分或片,如預定義大小,例如8Kb)交換至進入擴展的大容量記憶體池106B中來減少對記憶體池的記憶體壓力。
將哪些記憶體分段交換到擴展的大容量記憶體池106B中以減輕記憶體壓力的決定可基於與記憶體的使用特性有關的任何合適的決定。例如,可基於低於預定閾值的使用特性來決定記憶體分段為「冷分段」,例如,「冷」表示基於使用特性,冷分段的使用相對於其他「暖」分段的使用相對較低。使用特性可基於(1) 最近使用情況及/或使用頻率(例如,低於閾值的使用特性可表示從未使用的分段、最近最少使用的分段或最近經常使用的(多個)分段)、(2)分配的最近使用情況(例如,最近分配的(多個)分段)、(4)對未來延遲影響的邏輯評估(例如,決定為未來不太可能經常使用的記憶體分段),及(5)評估到大容量記憶體的延遲/傳輸時間(例如,稀疏地填充有非零資料從而減少到大容量記憶體的傳輸時間的記憶體分段)等中的一者或多者。
因此,池化記憶體控制器104可最小化完全耗盡由擴展記憶體106A提供的記憶體資源的可能性,從而在節點需要來自池的更多記憶體時緩解即將到來的分配。換句話說,若總記憶體分配超過預定義閾值及/或接近總記憶體容量(如緊隨計算節點所請求的成功記憶體分配之後),池化記憶體控制器104可立即及/或搶先地採取步驟將資料從擴展記憶體106A交換到擴展的大容量記憶體106B,以便記憶體通常可用於任何新的分配請求。
池化記憶體控制器104可根據任何合適的方法來分配、取消分配和以其他方式管理分解的記憶體池106中的記憶體資源(例如,管理擴展記憶體106A及/或擴展的大容量記憶體池106B之間的資料分佈),此等任何合適的方法例如為藉由基於前述使用特性(例如,使用記憶體部分的最近使用情況或頻繁程度)在擴展記憶體106A和擴展的大容量記憶體池106B(分頁)之間交換資料。
圖2示出了可由池化記憶體控制器104實現的示例性方法200。在202處,方法200包括以下步驟:將分解的記憶體池的複數個記憶體分段分配給複數個計算節點。
在204處,方法200進一步包括以下步驟:將記憶體分段的子集識別為冷記憶體分段。可基於任何關於使用的合適決定(例如,基於決定每個此種冷分段的使用特性低於預定閾值)來識別冷分段,如206處所示。在一些示例中,可基於(例如,代替相對於預定義閾值的使用特性的測量,或除了相對於預定義閾值的使用特性的測量外)的邏輯及/或統計決定,例如藉由機器學習,來識別冷分段。例如,可操作機器學習演算法或統計處理(例如,循環神經網路)以學習分解的記憶體的使用模式,例如藉由偵測與特定事件、時間表或上下文相關聯的分配數量(例如、基於一個或多個節點的活動、基於一個或多個特定電腦程式的執行、基於偵測記憶體側快取活動的特定模式及/或基於任何其他合適的資料,偵測到在一天中的某些時間處請求增加)。在一些示例中,如在208處所示,決定分段的使用特性低於預定閾值可基於指示何時分頁移出記憶體分段的替換策略。例如,如208A處所示,替換策略可基於使用頻率(例如,識別使用頻率低於預定義閾值的記憶體分段,如最不經常使用的分段)。替代地或附加地,如208B所示,替換策略可基於使用的最近使用情況(例如,使用的最近使用情況低於預定閾值的記憶體分段,如最近最少使用的分段)。替代地或附加地,如208C處所示,替換策略可基於佔用密度(例如,具有低於預定義閾值的非零資料比例的記憶體分段)。替換策略的上述示例是非限制性的,且(多個)冷分段的使用特性及/或識別的決定可基於任何合適的決定(例如,基於評估針對分頁移出分段的相對較小的效能處罰、基於評估針對釋放與分段相關聯的資源的相對較大的效能增益,及/或基於任何其他邏輯條件或基於統計或機器學習處理)。
在212處,方法200進一步包括以下步驟:將資料從一個或多個冷分段移出到擴展的大容量記憶體裝置,此處稱為分頁。因此,在214處,冷分段的分頁導致釋放分解的記憶體池的一個或多個經分配的記憶體分段。在一些示例中,在212處將一個或多個冷分段分頁移出是回應於決定當前分配的記憶體分段量分配預定義的記憶體閾值量,如在210處所示。例如,此種決定可在以下處理中做出:將記憶體分配給計算節點;例如,回應於將新分段分配給複數個計算節點中之一者,使得新分配導致分配的總分段數超過預定閾值。在一些示例中,可藉由將記憶體分配給已由池化記憶體控制器分配記憶體的原始複數個計算節點中之一者來超過預定義閾值。在其他示例中,辨識當前分配的分段數量超過預定義閾值可回應於將新分段分配給不在原始複數個計算節點中的新計算節點。替代地或附加地,可在任何其他合適的時間完成在212處將一個或多個冷分段分頁移出之步驟,任何其他合適的時間例如為根據預定排程、根據辨識記憶體使用的邏輯條件或統計條件,及/或搶先地釋放分解的記憶體池的記憶體。
圖3至圖6示意性地描繪了根據方法200的記憶體管理處理的示例。圖3示出了包括池化記憶體控制器302的電腦系統300,池化記憶體控制器302經配置為向複數個計算節點310(例如,計算節點310A、310B、310C和310D)提供記憶體(例如,使用擴展記憶體306A及/或擴展的記憶體池306B)。雖然圖3描繪了四個計算節點,但可使用任何合適數量的計算節點。每個計算節點對由計算節點可配置的虛擬記憶體空間內的主機記憶體位址(例如,主機計算節點實際使用的數字或符號位址資料)所定義的記憶體(例如,對應的主機記憶體312A、312B、312C和312D)有其自己的關聯視角。在圖3中,第一計算節點310A具有經配置的記憶體分段,其具有主機記憶體位址314A[1]。如本文將要描述的,池化記憶體控制器302將主機記憶體位址轉換成表示分解的記憶體池內的特定位置的物理記憶體位址。
池化記憶體控制器302經配置為藉由物理記憶體分段來實施一些或所有主機記憶體位址的配置。通常來說,池化記憶體控制器302可經配置為將複數個計算節點中的每一者所使用的主機記憶體位址映射到分解的記憶體池的記憶體分段,例如藉由維持主機記憶體位址與擴展記憶體306A及/或擴展的大容量記憶體306B中的物理位址之間的映射。可在分段表中維護複數個在主機記憶體位址與分解的記憶體池中的物理位址之間的映射。在一些示例中,可在分段表中追蹤每個記憶體分段的使用特性,例如藉由維護時間戳記及計數器等,以指示使用的最近使用情況、使用的頻率及佔用的密度等。除此之外,如本文所討論的,此種表可用於評估記憶體分段是否是「冷的」。分段表可保持在擴展記憶體306A的專用/私有部分中或任何其他(多個)記憶體設備中。
在一些示例中,來自分段表的複數個映射可由池化記憶體控制器快取在轉譯後備緩衝區(TLB)中。例如,轉譯後備緩衝區可以是包括在記憶體控制器302中的低延遲存儲裝置,例如暫存器或片上記憶體快取。在一些示例中,分段表可以是多級別分段表,其經配置為將主機位址範圍映射到物理位址,且將相對於參考主機位址的偏移映射到物理偏移(例如,對應於所映射的主機範圍內的位址)。在一些示例中,池化記憶體控制器可經配置為向每個計算節點暴露用於存取擴展記憶體和大容量記憶體池中的經映射的記憶體位址的硬體孔。因此,硬體孔可自動處理將主機記憶體位址映射到擴展記憶體及/或大容量記憶體池中的物理位址。
例如,藉由擴展記憶體306A中的物理記憶體分段320[1]配置主機記憶體位址314A[1]。類似地,第二計算節點310B具有兩個經配置的記憶體分段,其中主機記憶體位址314B[1]由池化記憶體控制器302經由物理記憶體分段320[2]提供。
圖4示出了在不同時間處的電腦系統300,此時池化記憶體控制器302已向複數個計算節點提供了不同的記憶體分配。例如,圖4可表示計算節點已請求且經分配有附加記憶體之後的後續時間。如所示,計算節點310A具有附加的記憶體分配,其包括映射到物理記憶體分段320[3]的主機記憶體位址314A[2]。可理解的是,圖4的場景是圖3的場景的簡單增量變化。為了便於理解。在實際操作期間,分配可能會發生巨大而迅速的變化。
池化記憶體控制器302可用任何合適的順序將主機記憶體位址映射到分解的記憶體池中,例如,用由記憶體控制器302所決定的順序而不考慮主機記憶體位址值。換句話說,圖3至圖6中的物理記憶體分段320[1]、320[2]等的編號和空間排列是擴展記憶體306A的被佔用部分的非限制性示意圖。不需要以任何特定順序或空間佈置來佈置記憶體分段;例如,可經由擴展記憶體306A的任何合適的連續或非連續部分來提供記憶體分段。此外,物理記憶體中的記憶體分段不需要對應於主機記憶體位址;例如,主機記憶體位址314A[1]可在計算節點312A的記憶體視角內的低編號記憶體位址處,而主機記憶體位址314A[2]在計算節點312A的記憶體視角內的高編號記憶體位址處(例如,如圖中所描繪的),而這些記憶體位址可由記憶體控制器302映射到擴展記憶體306A中的任何合適位置(例如,作為非限制性示例,兩個記憶體位址皆可映射到擴展記憶體306A中的低編號記憶體分段)。在一些示例中,可基於記憶體策略來決定主機記憶體位址和物理記憶體之間的映射,此記憶體策略例如為故障遏制策略或效能最佳化策略。例如,可根據策略將主機記憶體位址映射到物理記憶體的連續或非連續部分。
在任何給定時間處,一些記憶體分段可能是「冷的」,如在圖4中以虛線邊框指示的記憶體分段(其顯示在主機記憶體透視圖和物理記憶體的示意圖兩者中)。可用任何合適的方式來識別冷的記憶體分段,例如基於低於閾值的使用特性(如上文關於圖2所描述)。例如,在圖4中,將對應於主機記憶體位址314A[1](其經映射到物理記憶體分段320[1] )和314B[1](其經映射到記憶體分段320[2])的記憶體分段指示為冷的。在一些示例中,一個或多個分段可被指定為「固定」分段,無論使用特性如何,此等「固定」分段都保存在擴展記憶體中;例如,固定分段不可用於交換。
圖4亦描繪了用於偵測記憶體壓力的示例性預定義閾值330,例如擴展記憶體池306A的記憶體分段的閾值量;若超過此閾值量,則表明例如相對於擴展記憶體池306A的總容量的池壓力可能正在發生及/或可能發生。作為非限制性示例,若擴展記憶體池306A總共具有6個分段,則預定義閾值400可以是4個分段(例如,指示若4個分段被佔用,則池很可能經歷相當大的記憶體壓力,因為只剩下2個分段)。應當理解,系統300是高度簡化的非限制性示例。池化記憶體控制器可經配置為提供對擴展記憶體的存取,此擴展記憶體包括任何適當數量的任何適當大小的記憶體分段,例如,數千個或數百萬個分段。類似地,用於偵測記憶體壓力的預定義閾值可基於任何合適的分段數量及/或擴展記憶體的比例,例如,基於正在分配的擴展記憶體分段的多於三分之二、四分之三或任何其他合適比例。
圖5描繪了當總記憶體分配超過預定義閾值330時的情況;例如,當計算節點310D具有經映射到物理記憶體分段320[4]的主機記憶體位址314D[1]時,使得擴展記憶體306A總共有4個分段正在使用。如此一來,由於超過了預定義閾值330,池化記憶體控制器302可經配置為回應記憶體壓力,例如藉由將資料從擴展記憶體306A分頁到擴展的大容量記憶體306B,如圖6將所示。
圖6示意性地描繪了池化的記憶體控制器302將資料從擴展記憶體306A分頁到擴展的大容量記憶體306B,從而減小擴展記憶體306A上的壓力。例如,可回應於超過預定義閾值330的總記憶體分配來完成分頁資料。例如,擴展的大容量記憶體306B可經配置為存儲非常大量的資料(例如,十億位元組、兆位元組或更多資料)從而潛在地可用於從擴展記憶體306A中分頁移出大量分段(例如,數百、數千、數百萬或更多個分段)。替代地或附加地,可在任何其他合適的時間完成分頁資料,此任何其他合適的時間例如為先發製人地或回應於邏輯及/或統計條件(如上文關於圖2所述)。如圖6所示,「冷的」分段經映射到擴展的大容量記憶體306B中。可用任何合適的方式完成分頁資料;例如,可將來自每個冷分段的資料複製到擴展的大容量記憶體306B內的合適位置,從而保留資料以供計算節點可能的後續存取。因此,可釋放擴展記憶體306A中的物理記憶體分段,從而降低擴展記憶體306A的總佔用率。如所示,在換出冷分段之後,擴展記憶體306A的總佔用率可能低於預定閾值330,例如從而在不填滿擴展記憶體306A的情況下允許後續記憶體分配。因此,池化記憶體控制器302能夠將擴展記憶體306A之外的更多記憶體空間提供給複數個計算節點。
當記憶體被分配或變冷時(類似於圖3至圖6中所描繪的過程),池化記憶體控制器302可在任何合適的時間處將冷記憶體分段分頁移出,如圖3至圖6所示及如圖2所描述地。因此,計算節點可容易地分配主機記憶體位址,且池化記憶體控制器302可將主機記憶體位址映射到擴展記憶體306A中的經分配的記憶體分段。應當理解,存取經存儲在擴展記憶體306A中的資料的延遲可能小於存取擴展記憶體池306B中的記憶體的延遲。因此,藉由確保擴展記憶體306A中的空間主要用於不在冷分段中的資料,計算節點可以能夠更有效地存取擴展記憶體306A的使用部分中的資料且有效地分配擴展記憶體306A的其他部分,同時來自冷分段的資料經保存在擴展的大容量記憶體306B中。由於可能會不太可能地使用來自冷分段的資料(例如,基於使用特性),因此藉由在擴展的大容量記憶體306B中存儲此類資料對計算節點的資料存取效率的影響可能很小或沒有影響。
圖3至圖6描繪了當超過初始預定義的記憶體閾值量導致池化記憶體控制器302將冷分段分頁移出時的情況。在一些示例中,例如回應於初始預定義的記憶體閾值量被超過,可設置(預定義或以其他方式決定)用於分頁移出冷分段的第二、不同的記憶體閾值量。作為示例,在發生記憶體壓力的初始情況之後(例如,如圖5中所描繪地),池化記憶體控制器302可經配置為例如基於設置較低的將冷分段分頁移出的記憶體閾值量來搶先地將冷分段分頁移出。
在一些示例中,計算節點可隨後存取主機記憶體位址,此主機記憶體位址對應於先前被決定為冷的且被換出到擴展的大容量記憶體306B中的分段。因此,池化記憶體控制器302經配置為提供對擴展的大容量記憶體306B中的資料的存取。在一些示例中,池化記憶體控制器302經配置為決定來自被分頁移出到擴展的大容量記憶體306B中的冷分段的資料滿足檢索條件,且回應於滿足檢索條件來將資料從擴展的大容量記憶體306B分頁移入至擴展記憶體306A。例如,檢索條件可包括對資料的任何存取(例如,一旦計算節點請求來自被分頁移出到擴展的大容量記憶體306B中的冷分段的資料,則可認為此分段不再是冷的,且可將資料移回擴展記憶體306A中,且主機記憶體位址重新映射到擴展記憶體306A以提供有效存取)。作為另一示例,檢索條件可包括高於使用閾值的對使用特性的第二量測;例如,可最初藉由大容量記憶體306B存取資料,但若以足夠的頻率存取資料或若大容量記憶體306B的相應部分變得由活動使用中的資料更密集地佔用,可將資料移回擴展記憶體306A且可將主機記憶體位址重新映射到擴展記憶體306A。在其他示例中,檢索條件可基於對預期存取資料的計算預測(例如,基於正在使用的第二附近主機記憶體位址,從對應於第一主機記憶體位址的擴展的大容量記憶體檢索資料)。一般而言,例如若記憶體壓力已下降到閾值以下,則可在任何合適的時間處從擴展的大容量記憶體306B檢索資料並將其分頁移入至擴展記憶體306A中。在一些示例中,若記憶體壓力已減輕或增加,則預定義的使用特性閾值及/或預定義的閾值330可改變,以調節將資料從擴展記憶體306A交換到擴展的大容量記憶體306B的趨勢(例如,降低使用特性閾值來偵測冷分段,從而可將分段認為是「暖的」,直到較低的使用頻率及最近使用情況等為止;或增加預定義的閾值330,以便在交換冷分段之前容忍更多的記憶體佔用)。
在一些實施例中,本文描述的方法和處理可綁定到一個或多個計算裝置的計算系統。具體來說,可將此類方法和處理實施為電腦應用程式或服務、應用程式介面(API)、函式庫及/或其他電腦程式產品。
圖7示意性地示出可執行上述方法和處理中的一者或多者的計算系統700的非限制性實施例。以簡化形式示出計算系統700。計算系統700可採取一個或多個個人電腦、伺服器電腦、平板電腦、家庭娛樂電腦、網路計算裝置、遊戲裝置、行動計算裝置、行動通訊裝置(例如,智慧型手機)及/或其他計算裝置之形式。例如,計算系統700可例示圖示於圖1的計算系統100或圖示於圖3至圖6的系統300的一個或多個態樣。計算系統700可實施圖示於圖2的方法200。
計算系統700包括邏輯機702和存儲機704。計算系統700可以可選地包括顯示子系統706、輸入子系統708、通訊子系統710及/或圖7中未示出的其他組件。
邏輯機702包括一個或多個經配置為執行指令的物理裝置。例如,邏輯機可經配置為執行作為一個或多個應用程式、服務、程式、常式、函式庫、物件、組件、資料結構或其他邏輯構造的一部分的指令。可實施此類指令以執行任務、實施資料類型、轉換一個或多個組件的狀態、實現技術效果或以其他方式達到期望的結果。
邏輯機可包括經配置為執行軟體指令的一個或多個處理器。附加地或替代地,邏輯機可包括一個或多個硬體或韌體邏輯機,其經配置為執行硬體或韌體指令。邏輯機的處理器可以是單核或多核的,且其上執行的指令可經配置用於順序地、平行地及/或分佈式處理。邏輯機的各個組件可選地可以分佈在兩個或更多個單獨的裝置之間,可將這些裝置遠端定位及/或配置成用於協作處理。邏輯機的各態樣可由配置為雲計算配置的遠端可存取的聯網計算裝置虛擬化和執行。
存儲機704包括一個或多個物理裝置,此一個或多個物理裝置經配置為保存可由邏輯機器執行以實施本文所述的方法和處理的指令。當實施這樣的方法和處理時,存儲機器704的狀態可被轉換-例如,以保存不同的資料。
存儲機704可包括可移除及/或內置裝置。存儲機器704可包括光學記憶體(例如,CD、DVD、HD-DVD、藍光光碟等)、半導體記憶體(例如,RAM、EPROM、EEPROM等)及/或磁記憶體(例如,硬碟驅動、軟碟驅動、磁帶驅動及MRAM 等)等等。存儲機704可包括揮發性、非揮發性、動態、靜態、讀/寫、唯讀、隨機存取、順序存取、位置可定址、文件可定址及/或內容可定址裝置。例如,存儲機704可包括池化記憶體控制器,池化記憶體控制器經配置為存取如本文所述的擴展記憶體及/或擴展的大容量記憶體。
應當理解,存儲機704包括一個或多個物理裝置。然而,替換地可藉由不被物理裝置保持有限持續時間的通訊介質(例如,電磁信號及光信號等)來傳播本文所述的指令的各態樣。
可將邏輯機702和存儲機704的態樣一起整合到一個或多個硬體邏輯組件中。此類硬體邏輯組件可包括例如現場可程式化閘陣列 (FPGA)、特殊程式應用/特殊應用積體電路 (PASIC / ASIC)、特殊程式和特殊應用標準產品 (PSSP / ASSP)、系統單晶片 (SOC) 和複雜可程式化邏輯元件 (CPLD)。
術語「模組」、「程式」和「引擎」可用於描述經實施為執行特定功能的計算系統700的一個態樣。在一些情況下,可藉由邏輯機702執行存儲機704持有的指令來實例化模組、程式或引擎。應當理解,可從相同的應用程式、服務、代碼塊、物件、函式庫、常式、API、函數等來實例化不同的模組、程式及/或引擎。同樣地,可由不同的應用程式、服務、代碼塊、物件、常式、API及函數等來實例化相同的模組、程式及/或引擎。術語「模組」、「程式」和「引擎」可包含單個或一組可執行文件、資料文件、函式庫、驅動程式、腳本及資料庫記錄等。
將理解,如本文所使用的,「服務」是可跨多個使用者會話執行的應用程式。服務可用於一個或多個系統組件、程式及/或其他服務。在一些實施方式中,服務可運行在一個或多個伺服器計算裝置上。
當包括顯示子系統706時,顯示子系統706可用於呈現由存儲機704保存的資料的視覺表示。此視覺表示可採用圖形使用者介面(GUI)的形式。由於本文所述的方法和處理改變了存儲機所保存的資料,並因此轉換了存儲機的狀態,故顯示子系統706的狀態同樣可被轉換以在視覺上表示底層資料的變化。顯示子系統706可包括一個或多個使用幾乎任何類型的技術的顯示裝置。此種顯示裝置可與邏輯機702及/或存儲機704組合在一個共享的外殼中,或者此種顯示裝置可以是周邊顯示裝置。
當包括輸入子系統708時,輸入子系統708可包括一個或多個使用者輸入裝置或與一個或多個使用者輸入裝置互接,使用者輸入裝置如鍵盤、滑鼠、觸控螢幕或遊戲控制器。在一些實施例中,輸入子系統可包括選定的自然使用者輸入(NUI)組件或與選定的自然使用者輸入(NUI)組件互接。這種組件可以是整合的或為周邊的,且可在機上或機外處理輸入動作的轉換及/或處理。示例性的NUI 組件可包括用於語音及/或聲音識別的麥克風;用於機器視覺及/或手勢識別的紅外、彩色、立體及/或深度相機;用於運動偵測及/或意圖識別的頭部追蹤器、眼部追蹤器、加速度計及/或陀螺儀,及用於評估大腦活動的電場感測組件。
當包括通訊子系統710時,通訊子系統710可經配置為將計算裝置700與一個或多個其他計算裝置通訊耦合。通訊子系統710可包括與一個或多個不同通訊協定兼容的有線及/或無線通訊裝置。作為非限制性示例,通訊子系統可經配置以用於經由無線電話網路、或有線或無線的區域網路或廣域網路進行通訊。在一些實施例中,通訊子系統可允許計算系統700經由如網際網路的網路向及/或從其他裝置發送及/或接收消息。
在一個示例中,提供了一種精簡配置的多節點電腦系統,其包括 (1) 分解的記憶體池,其經配置為使共享記憶體容量可用於複數個計算節點中的每一者,此種記憶體容量相對於複數個計算節點被精簡配置;(2) 池化記憶體控制器。池化記憶體控制器經配置為 (1) 將分解的記憶體池的複數個記憶體分段分配給複數個計算節點;(2)將複數個記憶體分段的子集識別為冷分段,此種識別基於決定每個此種冷分段的使用特性低於使用閾值;及(3) 將一個或多個冷分段分頁移出到擴展的大容量記憶體裝置,從而釋放分解記憶體池的一個或多個經分配的記憶體分段。
在此示例和其他示例中,記憶體分段是DRAM分段。在這些和其他示例中,擴展的大容量記憶體可以是SSD裝置。在此示例和其他示例中,決定使用特性低於使用閾值可基於替換策略,替換策略可包括(1)記憶體分段的使用頻率,(2)記憶體分段的最近使用情況,及/ 或 (3) 記憶體分段的佔用密度。在此示例和其他示例中,將冷分段分頁移出可回應於決定當前分配的記憶體分段量超過了第一預定義的記憶體閾值量,這可回應於將新的記憶體分段分配給複數個計算節點中的一者。附加地或替代地,決定當前分配的記憶體分段量超過預定義閾值可回應於將新記憶體分段分配給不在原始複數個計算節點中的新計算節點。池化記憶體控制器可經進一步配置為回應於決定當前分配的記憶體分段量超過第二預定義的記憶體閾值量而將冷分段分頁移出。池化記憶體控制器可經進一步配置為決定來自被分頁移出到擴展的大容量記憶體的冷分段的資料滿足檢索條件,且將資料分頁移回到擴展記憶體中的記憶體分段中。檢索條件可包括評估對資料的存取及/或對高於使用閾值的冷分段的使用特性的第二量測。池化記憶體控制器可(1)維護複數個由複數個計算節點中的每一者所使用的主機記憶體位址與分解的記憶體池的記憶體分段之間的映射,此種映射是可變的以指示從記憶體分段分頁移出資料,及/或(2)池化記憶體控制器可用池化記憶體控制器決定的順序(而與主機記憶體位址值無關)來將主機記憶體位址映射到分解的記憶體池中。可在分段表中維護映射且在分段表中追蹤記憶體分段的使用特性。來自分段表的複數個映射由池化記憶體控制器快取在轉換後備緩衝區中。
在另一個示例中,揭露了一種精簡配置的多節點電腦系統,其包括 (1) 分解的記憶體池,其經配置為使共享記憶體容量可用於複數個計算節點中的每一者; (2) 池化記憶體控制器。池化記憶體控制器經配置為 (1) 將分解的記憶體池的複數個動態隨機存取記憶體 (DRAM) 分段分配給複數個計算節點;(2)將複數個DRAM分段的子集識別為冷分段,此種識別基於決定每個這種冷分段的使用特性低於使用閾值;(3)將一個或多個冷分段分頁移出到固態驅動(SSD)裝置,從而釋放分解記憶體池的一個或多個未分配的 DRAM 分段。
在又一示例中,提供了一種管理經精簡配置的多節點電腦系統中的記憶體的方法。方法包括以下步驟:(1)將分解的記憶體池的複數個記憶體分段分配給複數個計算節點,此分解的記憶體池經配置為使共享記憶體容量可用於複數個計算節點中的每一者;(2)將複數個記憶體分段的子集識別為冷分段,此種識別基於決定每個此種冷分段的使用特性低於使用閾值; (3) 將一個或多個冷分段分頁移出到擴展的大容量記憶體裝置,從而釋放分解的記憶體池的一個或多個經分配的記憶體分段。
應當理解的是,本文所描述的配置及/或方法本質上是示例性的,且這些具體實施例或示例不應被視為限制性的,因為許多變化是可能的。在本文所描述的特定常式或方法可代表任何數量的處理策略中的一者或多者。因此,可按照所示出及/或所描述的順序、以其他順序、平行或省略來執行所示出及/或所描述的各種動作。類似地,可改變上述處理的順序。
本申請案的標的包括本文所揭露的各種處理、系統和配置及其他特徵、功能、作用及/或特性的所有新穎和非顯而易見的組合與子組合,及其任何及所有的等同物。
100:電腦系統
100A~100N:計算節點
102A~102N:本地記憶體
104:池化記憶體控制器
106:分解的記憶體池
106A:擴展記憶體
106B:擴展的大容量記憶體
200:方法
202:步驟
204:步驟
206:步驟
208:步驟
208A~208C:步驟
210:步驟
212:步驟
214:步驟
300:電腦系統
302:池化記憶體控制器
306A:擴展記憶體
306B:擴展的記憶體池
310A~310D:計算節點
312A~312D:主機記憶體
314A[1]:主機記憶體位址
314A[2]:主機記憶體位址
314B[1]:主機記憶體位址
314D[1]:主機記憶體位址
320[1]~320[4]:物理記憶體分段
700:計算系統
702:邏輯機
704:存儲機
706:顯示子系統
708:輸入子系統
710:通訊子系統
圖1示意性地描繪了複數個與分解的記憶體池耦合的計算節點。
圖2圖示了在精簡配置的多節點電腦系統中管理記憶體的示例性方法。
圖3至圖4示意性地描繪計算節點在操作期間使用的記憶體位址及分解的記憶體池中的對應物理記憶體位置。
圖5示意性地描繪在總記憶體分配超過一預定義閾值量時的分解的記憶體池。
圖6示意性地描繪將來自擴展記憶體的資料分頁移入至分解池的擴展的大容量記憶體,以減小擴展記憶體上的壓力。
圖7示意性地示出示例性的計算系統。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
100:電腦系統
100A~100N:計算節點
102A~102N:本地記憶體
104:池化記憶體控制器
106:分解的記憶體池
106A:擴展記憶體
106B:擴展的大容量記憶體
Claims (20)
- 一種精簡配置的多節點電腦系統,包括: 一分解的記憶體池,其經配置為使一共享記憶體容量可用於複數個計算節點中的每一者,此種記憶體容量相對於複數個計算節點被精簡配置; 一池化記憶體控制器,其經配置為: 將該分解的記憶體池的複數個記憶體分段分配給該複數個計算節點; 將該複數個記憶體分段的一子集識別為冷分段,此種識別係基於決定每個此種冷分段的一使用特性低於一使用閾值;及 將該等冷分段中的一者或多者分頁移出到一擴展的大容量記憶體裝置,從而釋放該分解的記憶體池的一個或多個經分配的記憶體分段。
- 如請求項1所述的電腦系統,其中該記憶體是一動態隨機存取記憶體(DRAM),且該等記憶體分段是DRAM分段。
- 如請求項1所述的電腦系統,其中該擴展的大容量記憶體是一SSD裝置。
- 如請求項1所述的電腦系統,其中決定一使用特性低於一使用閾值是基於一替換策略。
- 如請求項4所述的電腦系統,其中該替換策略包括一記憶體分段的使用頻率。
- 如請求項4所述的電腦系統,其中該替換策略包括一記憶體分段的最近使用情況。
- 如請求項4所述的電腦系統,其中該替換策略包括一記憶體分段的佔用密度。
- 如請求項1所述的電腦系統,其中將該等冷分段分頁移出是回應於決定一當前分配的記憶體分段數量超過記憶體的一第一預定義閾值量。
- 如請求項8所述的電腦系統,其中決定該當前分配的記憶體分段數量超過該第一預定義閾值是回應於向該複數個計算節點中之一者分配一新的記憶體分段。
- 如請求項8所述的電腦系統,其中決定該當前分配的記憶體分段數量超過該第一預定義閾值是回應於向不在該原始複數個計算節點中的一新計算節點分配一新的記憶體分段。
- 如請求項8所述的電腦系統,其中該池化記憶體控制器經進一步配置為回應於決定一當前分配的記憶體分段數量超過記憶體的一第二預定義閾值量而將冷分段分頁移出。
- 如請求項1所述的電腦系統,其中該池化記憶體控制器經進一步配置為決定來自經分頁移出到該擴展的大容量記憶體的一冷分段的資料滿足一檢索條件,並將該資料分頁移入回到該擴展的記憶體中的一記憶體分段中。
- 如請求項12所述的電腦系統,其中該檢索條件包括對該資料的一存取。
- 如請求項12所述的電腦系統,其中該檢索條件包括該冷分段的該使用特性的一第二測量值高於該使用閾值。
- 如請求項1所述的電腦系統,其中該池化記憶體控制器維護複數個由該複數個計算節點中的每一者使用的主機記憶體位址與該分解的記憶體池的記憶體分段之間的映射,此等映射是可變的以指示正從一記憶體分段分頁移出的資料。
- 如請求項15所述的電腦系統,其中該池化記憶體控制器以由該池化記憶體控制器所決定的一順序,其與主機記憶體位址值無關,來將主機記憶體位址映射到該分解的記憶體池中。
- 如請求項15所述的電腦系統,其中該複數個映射經保持在一分段表中,且在該分段表中追蹤記憶體分段的該使用特性。
- 如請求項17所述的電腦系統,其中由該池化記憶體控制器將來自該分段表的複數個映射快取在一轉譯後備緩衝區中。
- 一種精簡配置的多節點電腦系統,包括: 一分解的記憶體池,其經配置為使一共享記憶體容量可用於複數個計算節點中的每一者; 一池化記憶體控制器,其經配置為: 將該分解的記憶體池的複數個動態隨機存取記憶體(DRAM)分段分配給該複數個計算節點; 將該複數個DRAM分段的一子集識別為冷分段,此種識別係基於決定每個此種冷分段的一使用特性低於一使用閾值;及 將該等冷分段中的一者或多者分頁移出到一固態驅動器 (SSD) 裝置,從而釋放該分解的記憶體池中的一個或多個未分配的 DRAM 分段。
- 一種在一精簡配置的多節點電腦系統中管理記憶體的方法,包括以下步驟: 將一分解的記憶體池的複數個記憶體分段分配給複數個計算節點,該分解的記憶體池經配置為使一共享記憶體容量可用於該複數個計算節點中的每一者; 將該複數個記憶體分段的一子集識別為冷分段,此種識別係基於決定每個此種冷分段的一使用特性低於一使用閾值;及 將該等冷分段中的一者或多者分頁移出到一擴展的大容量記憶體裝置,從而釋放該分解的記憶體池的一個或多個經分配的記憶體分段。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/115,375 US11429518B2 (en) | 2020-12-08 | 2020-12-08 | Paging in thin-provisioned disaggregated memory |
US17/115,375 | 2020-12-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202316264A true TW202316264A (zh) | 2023-04-16 |
Family
ID=78821288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110145826A TW202316264A (zh) | 2020-12-08 | 2021-12-08 | 精簡配置的分解記憶體中的分頁 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11429518B2 (zh) |
EP (1) | EP4260189A1 (zh) |
CN (1) | CN116710886A (zh) |
TW (1) | TW202316264A (zh) |
WO (1) | WO2022125254A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220197798A1 (en) * | 2020-12-22 | 2022-06-23 | Intel Corporation | Single re-use processor cache policy |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8423713B2 (en) * | 2010-09-06 | 2013-04-16 | Hitachi, Ltd. | Cluster type storage system and method of controlling the same |
US20120263191A1 (en) | 2011-04-12 | 2012-10-18 | Red Hat Israel, Inc. | Mechanism For Managing Quotas In a Distributed Virtualization Environment |
US9881018B2 (en) * | 2014-08-14 | 2018-01-30 | International Business Machines Corporation | File management in thin provisioning storage environments |
US9792227B2 (en) * | 2014-08-19 | 2017-10-17 | Samsung Electronics Co., Ltd. | Heterogeneous unified memory |
US9760310B2 (en) * | 2015-08-06 | 2017-09-12 | International Business Machines Corporation | High performance data storage management using dynamic compression |
US9811281B2 (en) | 2016-04-07 | 2017-11-07 | International Business Machines Corporation | Multi-tenant memory service for memory pool architectures |
US10180793B2 (en) * | 2017-01-31 | 2019-01-15 | Hewlett Packard Enterprise Development Lp | Performance attributes for memory |
US11392555B2 (en) * | 2019-05-15 | 2022-07-19 | Pure Storage, Inc. | Cloud-based file services |
US20200371692A1 (en) | 2019-05-22 | 2020-11-26 | Microsoft Technology Licensing, Llc | Memory disaggregation for compute nodes |
US20210200667A1 (en) * | 2019-12-26 | 2021-07-01 | Intel Corporation | Memory thin provisioning using memory pools |
-
2020
- 2020-12-08 US US17/115,375 patent/US11429518B2/en active Active
-
2021
- 2021-11-11 CN CN202180082097.3A patent/CN116710886A/zh active Pending
- 2021-11-11 EP EP21819678.0A patent/EP4260189A1/en active Pending
- 2021-11-11 WO PCT/US2021/058884 patent/WO2022125254A1/en active Application Filing
- 2021-12-08 TW TW110145826A patent/TW202316264A/zh unknown
-
2022
- 2022-08-10 US US17/818,816 patent/US20220382672A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11429518B2 (en) | 2022-08-30 |
US20220382672A1 (en) | 2022-12-01 |
EP4260189A1 (en) | 2023-10-18 |
CN116710886A (zh) | 2023-09-05 |
WO2022125254A1 (en) | 2022-06-16 |
US20220179780A1 (en) | 2022-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9760497B2 (en) | Hierarchy memory management | |
US9800661B2 (en) | Distributed storage over shared multi-queued storage device | |
US9648081B2 (en) | Network-attached memory | |
JP6496626B2 (ja) | 異種統合メモリ部及びその拡張統合メモリスペース管理方法 | |
US11150962B2 (en) | Applying an allocation policy to capture memory calls using a memory allocation capture library | |
US20100161929A1 (en) | Flexible Memory Appliance and Methods for Using Such | |
US20100161908A1 (en) | Efficient Memory Allocation Across Multiple Accessing Systems | |
US20100161909A1 (en) | Systems and Methods for Quota Management in a Memory Appliance | |
US20100161879A1 (en) | Efficient and Secure Main Memory Sharing Across Multiple Processors | |
US10545921B2 (en) | Metadata control in a load-balanced distributed storage system | |
JP2014175009A (ja) | 仮想マシンをサポートするフラッシュ・ベースのキャッシング・ソリューションでの動的キャッシュ共有のためのシステム、方法、およびコンピュータ可読媒体 | |
JP2020533694A (ja) | クラウド・ベースのランクを使用するデータの動的再配置 | |
US10721304B2 (en) | Storage system using cloud storage as a rank | |
US20220197814A1 (en) | Per-process re-configurable caches | |
US20220066928A1 (en) | Pooled memory controller for thin-provisioning disaggregated memory | |
US11157191B2 (en) | Intra-device notational data movement system | |
US7793051B1 (en) | Global shared memory subsystem | |
TW202316264A (zh) | 精簡配置的分解記憶體中的分頁 | |
US11687443B2 (en) | Tiered persistent memory allocation | |
US20200348874A1 (en) | Memory-fabric-based data-mover-enabled memory tiering system | |
US11144445B1 (en) | Use of compression domains that are more granular than storage allocation units | |
US12019894B2 (en) | Systems and methods for managing coresident data for containers | |
US20240053914A1 (en) | Systems and methods for managing coresident data for containers | |
US11281612B2 (en) | Switch-based inter-device notational data movement system | |
TW202340931A (zh) | 具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取 |