TWI605340B - 用於s列表分配之系統與方法 - Google Patents

用於s列表分配之系統與方法 Download PDF

Info

Publication number
TWI605340B
TWI605340B TW102113317A TW102113317A TWI605340B TW I605340 B TWI605340 B TW I605340B TW 102113317 A TW102113317 A TW 102113317A TW 102113317 A TW102113317 A TW 102113317A TW I605340 B TWI605340 B TW I605340B
Authority
TW
Taiwan
Prior art keywords
list
memory
lock
processor
allocation
Prior art date
Application number
TW102113317A
Other languages
English (en)
Other versions
TW201405308A (zh
Inventor
狄克西艾蒙迪利普
華特斯布雷德雷麥可
Original Assignee
微軟技術授權有限責任公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 微軟技術授權有限責任公司 filed Critical 微軟技術授權有限責任公司
Publication of TW201405308A publication Critical patent/TW201405308A/zh
Application granted granted Critical
Publication of TWI605340B publication Critical patent/TWI605340B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)

Description

用於S列表分配之系統與方法
本發明與用於S列表分配之系統與方法有關。
S列表係資料結構,該資料結構為作業系統可用之LIFO(後進先出)列表之無鎖實作。S列表為典型所欲之資料結構選擇,該資料結構用以保持固定大小之緩衝區,若無保持任何自旋鎖或其他同步化基本元,可分配及釋放該緩衝區。於無鎖單向鏈結串列之形式中,S列表亦可用於可變大小之內容。其他於作業系統環境中提供之能力-如建立於S列表之上之後備列表。
然而,在一些情況中,S列表之使用非為所欲的。舉例而言,因多個處理器存取相同S列表,該單一S列表之表頭可成為以伺服器作為熱點之快取線競爭情況。在本地情況與Hyper-V虛擬情況中,上文例子所述皆可為擴充瓶頸。
在另一情況中,S列表主要用為封包快取或固定大小之緩衝區儲存庫。然而於有些情況中,在此類無鎖列表中必須維持較複雜之資料結構或可能變化大小之資源。具有比僅為「Push」操作及「Pop」操作更多之操作係為所欲的,擁 有更多操作之目的為負載平衡、封包竊取、不均勻記憶體存取(NUMA)感知及此類之其他演算法要求。為滿足該等要求,通常藉由另一資料結構抽象化以管理多個S列表。後備列表為一此類例子。
後備列表維持固定大小緩衝區之快取以加速記憶體分配及釋放。為了處理器親和性之益處,一些作業系統亦提供每一處理器之後備列表。該等每一處理器之後備列表通常(但非必要)藉由全域列表支持以包含備份封包,以防該每一處理器列表為空。具額外資源分配以擁有相當大之全域備份列表,以提供單一資源集區之抽象化為所欲的。當需求收回時,若有用於記憶體之需求,可釋放該等額外之記憶體分配。然而在特定情況中,無法過度分配資源。定義硬體驅動能力之限制尤其如此-該硬體驅動能力之限制如I/O要求RAID控制器可處理之最大數量。進階演算法結合該等限制至S列表之深度中,且該進階演算法避免使用自旋鎖。分配及釋放之額外管理負擔亦導致記憶體碎裂及花費CPU周期。因該等原因,無法使用分配較必要數量更多資源之後備列表。
為提供本文描述之一些態樣之基本了解,下文呈現本發明之簡化提要。此提要非為申請專利標的事項之廣泛概述。此提要用意既不在於識別關鍵或重要之申請專利標的事項之元素,也不在於描繪該標的發明之範圍。此提要僅有一目的,該目的係以簡化形式呈現一些申請專利標的事項之概念,且將該等概念作為後文呈現之更詳細敘述之序曲。
在一實施例中,該實施例呈現用於管理分配複數個記憶體元件儲存於複數個無鎖列表結構之系統及方法。可在多核心處理器之作業系統環境中存取該等無鎖列表結構(如S列表)。在一些實施例中,該無鎖列表結構(S列表或其類似結構)可嵌入至其他常見之資料結構如雜湊、樹狀結構等,以滿足不同資源配置及管理要求。
一些實施例可分割此複數個無鎖列表結構,且該些實施例可於該等無鎖列表結構中初始分配該記憶體元件。當核心處理器(或其他處理元件)發出用於分配記憶體元件至該核心處理器(或該其他處理元件)之要求時,該系統及/或方法可在該無鎖列表結構中搜尋可用之記憶體元件。當發現合適及/或可用之記憶體元件時,該系統可分配該可用記憶體元件至發出要求之核心處理器。
在一些實施例中,接著該系統及/或方法可根據合適之平衡基準,動態平衡各個無鎖列表結構中之記憶體元件組。此類可能基準可簡單維持該等無鎖列表結構中之記憶體元件的實體數字相等。其他基準可包含其他負載平衡之考量-可能根據程序執行的類型、可能的競爭情況或其類似-例如,如上文關於減少CPU競爭情況或避免過度分配記憶體資源之敘述。
當結合閱讀至本申請案內呈現之圖示時,下文呈現本系統之其他特徵及態樣之詳細描述。
100‧‧‧多核心系統
102a‧‧‧群組0
102b‧‧‧群組1
104‧‧‧節點
106‧‧‧核心
108‧‧‧記憶體資源
110‧‧‧連接
200‧‧‧動態雜湊系統及技術
202‧‧‧雜湊模組
204‧‧‧S列表
206‧‧‧記憶體元件
208a‧‧‧處理器索引
208b‧‧‧NUMA節點編號
210‧‧‧節點
212‧‧‧邏輯處理器
214‧‧‧記憶體元件
250‧‧‧動態列表置換資料結構
252a‧‧‧Push操作
252b‧‧‧Pop操作
254‧‧‧記憶體元件
256a‧‧‧指標
256b‧‧‧指標
300‧‧‧步驟
302‧‧‧步驟
304‧‧‧步驟
306‧‧‧步驟
308‧‧‧步驟
310‧‧‧步驟
312‧‧‧步驟
314‧‧‧步驟
316‧‧‧步驟
318‧‧‧步驟
320‧‧‧步驟
322‧‧‧步驟
示例性實施例圖解於圖示之參考圖中。示例性實施 例用意在於使本文中揭露之實施例及圖示被認為具說明性而非限制性。
第1圖圖解本申請案之系統及技術可被託管及運作於示例性電腦系統中。
第2A圖係一實施例,該實施例為用於管理S列表之適應性雜湊結構系統及方法。
第2B圖係一實施例,該實施例為用於管理S列表之動態列表置換系統及方法。
第3圖描繪一流程圖,該流程圖為適應性雜湊系統之一實施例,且第2A圖中實作該適應性雜湊系統。
本文使用之術語「元件」、「系統」、「介面」及其類似術語意指參考與電腦相關之實體,硬體、軟體(如執行中)及/或韌體之一。舉例而言,元件可為執行在處理器上之程序、處理器、物件、執行檔、程式及/或電腦。藉由圖示方式,在伺服器上執行之應用程式及伺服器皆可為元件。一或多個元件可常駐於程序中,且元件可定位於一電腦上,及/或元件可分佈於二或多個電腦之間。
參考圖示以描述該申請專利標的事項,其中使用相對應元件符號以參閱對應之全部元件。為解釋之目的,在下列描述中闡述多個特定細節以提供本標的發明之完整了解。然而明顯地,在無該等特定細節之情況中,就可實施申請專利標的事項。在其他例子中,為幫助描述該標的發明,知名結構及裝置圖示於方塊圖形式中。
為滿足資源之潛在瓶頸,本發明揭露一些實施例,該些實施例考慮到有效地與有效率地使用S列表。在一實施例中,當仍維持資源S列表之無鎖性質、減少快取線競爭情況、固定數量分配及在列表間分享/偷取資源時,S列表可在有效方法中被分割,該方法解決多個先前提及之限制。在其他實施例中,為最佳化效能,該等技術可利用處理器親和性及NUMA感知。
第1圖描繪電腦系統圖,該圖展示一複合群組,NUMA節點(也就是處理器接口),及多核心系統100。如所示,系統100包括2個群組-例如,群組0(102a)及群組1(102b)。在一實施例中,每一群組可包括最多64個(例如,標記0至63)邏輯處理器(LPs)。
需要理解的是,若少於64個邏輯處理器時,合適之系統可具有1個群組。同樣地,系統可具有2個以上群組。NUMA節點全部包含於群組內,所以群組少於64個邏輯處理器為可能的。系統可具數個群組(2個以上群組)取決於該系統內所包含邏輯處理器之數量。
如所示,每一群組可更進一步包括節點104(也就是處理器接口)。該圖之節點亦可參閱NUMA(不均勻記憶體存取)節點。在多個現行系統中,NUMA節點編號自0至63號,該等節點橫過跨越所有群組之完整系統。然而,未來系統可具有不同數目之節點,且本申請案不受限於此類現行規格。每一此類節點可進一步包括核心106。在此實施例中,每一LP可為核心或硬體執行緒。在每一群組內,自0至63號獨特編 號邏輯處理器。
在一些計算環境中,帶有較一個更多之實體處理器-或系統帶有具多核心之實體處理器-可以多個邏輯處理器提供給作業系統。自作業系統、應用程式或驅動程式之觀點來看,邏輯處理器係一邏輯計算引擎。「核心」(或「核心處理器」)係一處理器單元,該處理器單元可由一或多個邏輯處理器組成。實體處理器可由一或多個核心組成。實體處理器可被理解為與處理器封裝、接口或CPU相同。
此外,核心0至核心C-1可共享記憶體資源108。在指定節點上,本地記憶體存取核心與記憶體間之時間較記憶體存取其他節點之時間快速。節點間之連接110可使得所有節點可在所有其他節點存取記憶體,但記憶體存取時間會較存取本地記憶體時間慢。
需要理解的是,所有節點不需完整連接,且更進一步需要理解的是,記憶體自一節點存取至另一節點,需追蹤額外節點以在第3節點上存取記憶體。
S列表管理
本申請案揭露多個實施例,該等實施例用於無鎖列表結構(S列表或該類似結構)之有效管理。第2A圖與第2B圖描繪兩個此類實施例-用於管理S列表之適應性雜湊函數(第2A圖)及動態Pop和Push結構(第2B圖)。在該等實施例中,於無鎖列表(如S列表)中提供資源或封包管理是為所欲的,該所欲為了以下目的:
i)減少CPU快取線競爭情況; ii)避免過度分配資源;iii)提供在列表間分享及偷取資源以適應帶有最大限制之資源需求;iv)提供額外邏輯,該額外邏輯用於NUMA拓樸感知、處理器親和性等;及/或v)提供特定記憶體分配需求如分配器,例如4GB之界限及此類其他之限制。不需額外分配及釋放記憶體為所欲的,但此情況可導致可為議題之碎裂-例如,特別是4GB之限制。
大體上,本申請案之技術與實施例傾向嵌入無鎖列表結構(如S列表或其類似結構)至其他常見之資料結構如雜湊、樹狀結構等,以滿足不同資源分配及管理需求。
在多個本發明之實施例中,該等實施例呈現用於複數個記憶體元件儲存至複數個無鎖列表結構之分配管理之系統及方法。該等無鎖列表結構(如S列表)可在多核心處理器之作業環境中被存取。
該等實施例可分割此複數個無鎖列表結構,且該等實施例可在該等無鎖列表結構中初始分配該記憶體元件。當核心處理器(或其他處理元件)發出用於分配記憶體元件至該核心處理器(或該其他處理元件)之要求時,該系統及/或該方法可在該等無鎖列表結構中搜尋以找到可用之記憶體元件。當發現合適及/或可用之記憶體元件時,該系統可分配該可用記憶體元件至發出要求之核心處理器。此類無鎖列表結構之分割可傾向減少CPU競爭情況。
該系統及/或該方法接著可根據合適之平衡基準,動態平衡各個無鎖列表結構中之記憶體元件組。此類可能基準可簡單維持該等無鎖列表結構中之記憶體元件的實體數字相等。其他基準可包含其他負載平衡之考量-可能根據程序執行的類型、可能的競爭情況或其類似-例如,如上文關於避免過度分配記憶體資源之敘述。
在另一實施例中,可於電腦系統(如第1圖所示之系統-或任一其他合適之多核心處理系統)中實作合適分配模組。舉僅為其中一例而言,可在其中一個核心處理器上執行分配模組,且該分配模組可自該核心處理器上實作動態記憶體分配。如將於下文中更詳細之討論,該分配模組可於各種資料結構中-例如,動態雜湊結構,或動態列表置換結構,或其類似結構,管理記憶體元件之動態分配。
用於S列表管理的適應性雜湊
第2圖描繪用於管理S列表之適應性、動態雜湊系統及技術(200)。如圖所示,雜湊模組202結合一或多個S列表204(例如,S列表0至S列表3)。每個S列表可進一步包括零或多個記憶體元件206。該等記憶體元件206中每一記憶體元件可包括固定大小緩衝區或可變動大小緩衝區兩者之一,及/或資料結構。
在本實施例中,以一種大體上與該系統結合之方式,且該系統以一種與計算系統拓樸及/或多核心處理器架構相關之方式,藉由鍵鑰可維持此不同S列表之雜湊;例如,第2A圖描繪兩個此類拓樸:(1)藉由處理器索引鍵鑰(如藉由 用於群組0之實箭頭線所示,標記為208a);(2)或藉由NUMA節點編號鍵鑰(如藉由用於群組0之虛箭頭線所示,標記為208b,且該NUMA節點編號鍵鑰進一步包括節點210及邏輯處理器212)。在該等實施例中,該索引相關至該系統拓樸之接點可最佳化存取時間以最小化閒置時間,及最小化系統內與其他處理器之競爭情況。如圖可見,根據用於負載平衡及/或記憶體資源分配之合適基準,可調整記憶體元件及/或在S列表間平衡記憶體元件(例如,214)。
在一實施例中,抽象化單一邏輯S列表至多個邏輯S列表是可能的。在此類情況下,若一特定S列表為空,將列表實體移動至不同列表間,使得分配不會失敗是為可能的。在分配失敗前可搜尋所有於雜湊中之S列表。需要理解的是,不同雜湊演算法亦可迎合系統拓樸及最佳化目標,該目標如NUMA或該等列表之處理器親和性延伸。
第3圖描繪一可能流程圖,該流程圖用於雜湊結構內S列表之處理程序。在步驟300中,該系統開始分配記憶體資源,且在步驟302中,該系統可根據所欲之鍵鑰(例如,如第2A圖中指出之CPU編號或NUMA索引)計算雜湊索引。之後可指派該S列表至該被計算之雜湊(索引)。
在步驟306中,該系統可查詢特定S列表是否為空或記憶體資源是否缺乏-且若為此情況,該系統可經由其他S列表迭代以發現合適資源。一旦發現,可自如下一個非空S列表分配該資源。
在S列表非為空之情況下,可自步驟310中分配該 資源。不論是於步驟310或於步驟312作出分配,該系統可於步驟314查詢分配是否成功。若分配不成功,於步驟320,該系統可在當時回報錯誤訊息,且該系統於步驟322結束處理程序。
然而若分配成功,於步驟316可如分配般地利用該記憶體資源。一旦不再需要該記憶體資源,該系統可視情況地釋放該資源回原處或回施體S列表,且該系統於步驟322結束處理程序。
動態列表置換
第2B圖展示又一實施例,該實施例使用動態列表置換資料結構(250)以用於有效管理S列表。如圖可見,兩個別S列表-例如,一用於Push(釋放)252a操作,及一用於Pop(取得/分配)252b操作-可維持該等操作,且每一操作可具記憶體元件254以分配。可用兩不同指標(256a及256b)存取該等S列表。在操作過程中,若Pop S列表於嘗試分配期間為空(或為一些其他平衡記憶體資源之合適基準),置換指標使得先前之Push S列表現成為Pop S列表是為可能的,且反之亦然。從那一刻起,立刻可以嘗試自此新Pop S列表分配。此技術類似維持不同之「分配」及「釋放」列表,且當「分配」列表為空時,該技術交換「分配」及「釋放」列表。
上文之描述包含了標的發明之範例。當然,為描述申請專利標的事項,而描述每一可想像元件或方法之組合是不可能的。但本領域中具通常技術之人可認定標的發明之多個進一步之組合與置換是可能的。因此,申請專利標的事項 用意在於包含所有此類屬於所附申請專利範圍之精神及範疇之修改、調整及變化。
尤其是關於藉由上文描述之元件、裝置、電路、系統及該等類似執行之各個功能,用來描述此類元件之術語(包括提到「方法」)除非另有指明,否則該術語用意在於對應任一執行被描述元件之特定功能之元件(例如,功能等同),即使非結構上地等同於該揭露結構,該術語執行功能於描述申請專利標的事項之示例性態樣之處。在此方面,將可認定本發明包含系統及電腦可讀之媒體,且該媒體具電腦可執行之指令,且該指令用於執行本申請專利標的事項之各式方法之動作及/或事件。
此外,涉及數個實施例中之僅一實施例之本標的發明之特定特徵被揭露時,此類特徵可結合至一個或多個其他實施例之其他特徵,且用於任一指定或特定申請案時,此類特徵之結合可為所欲及有益。此外,就術語「包括(includes)」及「包括(including)」及該等術語變化用於詳細說明或申請專利範圍兩者之一來說,該等術語用意在於為周延,表示在某種意義上與術語「包括(comprising)」相似。
200‧‧‧動態雜湊系統及技術
202‧‧‧雜湊模組
204‧‧‧S列表
206‧‧‧記憶體元件
208a‧‧‧處理器索引
208b‧‧‧NUMA節點編號
210‧‧‧節點
212‧‧‧邏輯處理器
214‧‧‧記憶體元件

Claims (20)

  1. 一種用於記憶體之記憶體分配的方法,該記憶體可在一多核心處理器之一作業系統環境中被存取,該方法包括以下步驟:藉由以下步驟控制分配該記憶體至該多核心處理器之記憶體要求部分,該等以下步驟為:取得複數個經分割的無鎖列表結構,該等經分割的無鎖列表結構之每者包含相應的複數個列表元件,該等相應的複數個列表元件之每者對應目前有資格用於分配之該記憶體之一相應部分,該複數個經分割的無鎖列表結構藉由一適應性雜湊之應用而經分割至複數個鍵值之每者,該複數個鍵值係對應至該多核心處理器之一架構之一拓樸之元件;在分配該記憶體之一或多個該相應部分至一核心處理器以用作經分配記憶體的一要求後,即於該複數個經分割的無鎖列表結構中搜尋一可用的列表元件,該可用的列表元件對應目前有資格用於分配以用作經分配記憶體之該記憶體之一可用的相應部分,所執行之該搜尋係使用一適應性雜湊,該適應性雜湊被鍵鑰以相應地分散(hash)至該複數個經分割的無鎖列表結構之每者;在尋得該可用的列表元件後,即分配該記憶體之該可用的相應部分至該核心處理器以用作經分配記憶體;及根據一平衡基準,在該複數個無鎖列表結構中,動態平衡該可用的列表元件,該平衡基準經配置以最佳化該記憶體之該分配。
  2. 如請求項1所述之方法,其中該記憶體之該等相應部分包括固定大小緩衝區或可變大小緩衝區之一或多者。
  3. 如請求項2所述之方法,其中該等經分割無鎖列表結構包括S列表結構。
  4. 如請求項1所述之方法,其中取得該複數個經分割的無鎖列表結構之步驟包括以下步驟:取得一初始的無鎖列表結構,該初始無鎖列表結構包含一初始的複數個列表元件,該等初始的列表元件之每者對應目前有資格用於分配的該記憶體之一初始相應部分;及藉由應用該適應性雜湊至該複數個鍵值之該每者來將該初始的無鎖列表分割成該等經分割的無鎖列表結構,該複數個鍵值係對應至該多核心處理器之該架構之該拓樸之元件。
  5. 如請求項1所述之方法,其中根據該多核心處理器架構,該適應性雜湊被鍵鑰(keyed)。
  6. 如請求項1所述之方法,其中根據處理器索引,該適應性雜湊被鍵鑰(keyed)。
  7. 如請求項1所述之方法,其中根據不均勻記憶體存取(NUMA)節點編號,該適應性雜湊被鍵鑰(keyed)。
  8. 如請求項1所述之方法,其中該平衡基準經配置以平衡記憶體資源。
  9. 如請求項1所述之方法,其中該平衡基準經配置以於該等無鎖列表結構中,維持記憶體元件基本上數目相等。
  10. 如請求項1所述之方法,其中該平衡基準經配置以避免記憶體資源的過度分配。
  11. 如請求項1所述之方法,其中該適應性雜湊經配置以容納複數個相應的列表標頭,該複數個相應的列表標頭每者參考係對應該等經分割的無鎖列表結構中之相應的無鎖列表結構。
  12. 一種用以藉由控制記憶體之分配至一多核心處理器之記憶體要求部分來控制該記憶體之記憶體分配的系統,該記憶體可在該多核心處理器之一作業系統環境內被存取,該系統包括:一第一處理器,該第一處理器使用根據該多核心處理器之一架構鍵鑰(keyed)的一適應性雜湊來初始地分割一初始無鎖列表結構為複數個經分割的無鎖列表結構;一第二處理器,該第二處理器初始地分割在該複數個經分割的無鎖列表結構間的複數個列表元件,該等相應的列表元件之每者對應目前有資格用於分配之該記憶體之一 相應部分;一第三處理器,該第三處理器在分配記憶體至一要求記憶體之核心處理器之一要求後,搜尋該複數個經分割的無鎖列表結構以用於該等相應的列表元件之一可用的列表元件,及在尋得該等相應的列表元件之該可用的列表元件後,即分配目前有資格用於分配之該記憶體之該相應部分至該要求記憶體之核心處理器,及該目前有資格用於分配之該記憶體之該相應部分係對應該經尋得之該等相應的列表元件之該可用的列表元件;及一第四處理器,該第四處理器根據一平衡基準在該複數個經分割的無鎖列表結構間動態平衡該等列表元件,該平衡基準經應用以在該等經分割的無鎖列表結構中分配該等列表元件。
  13. 如請求項12所述之系統,其中:該記憶體之該等相應部分包括固定大小緩衝區或可變大小緩衝區之一或多者;及其中該初始的無鎖列表結構包含一Slist結構。
  14. 如請求項12所述之系統,其中分割該初始的無鎖列表結構包含:使用根據處理器索引鍵鑰(keyed)的該適應性雜湊來將該初始的無鎖列表結構分割為該複數個經分割的無鎖列表結 構。
  15. 如請求項12所述之系統,其中分割該初始的無鎖列表結構包含:使用根據NUMA節點編號鍵鑰(keyed)的該適應性雜湊來將該初始的無鎖列表結構分割為該複數個經分割的無鎖列表結構。
  16. 一種方法,該方法包括以下步驟:藉由以下步驟來控制分配記憶體至一多核心處理器之記憶體要求部分,該等以下步驟為:取得複數個經分割的無鎖列表結構,該等經分割的無鎖列表結構之每者包含相應的複數個列表元件,該等相應的列表元件之每者對應目前有資格用於分配之該記憶體之一相應部分,該複數個經分割的無鎖列表結構由一適應性雜湊分割,該適應性雜湊根據該多核心處理器之一架構鍵鑰(keyed);在分配該記憶體之一或多個該等相應部分至一核心處理器以用作經分配記憶體之一要求後,即於該複數個經分割的無鎖列表結構中搜尋一可用的列表元件,該可用的列表元件對應目前有資格用於分配以用作經分配記憶體之該記憶體之一可用的相應部分,所執行之該搜尋係使用該適應性雜湊; 在尋得該可用的列表元件後,即分配該記憶體之該可用的相應部分至該核心處理器以用作經分配記憶體;及根據一平衡基準,在該複數個無鎖列表結構中,動態平衡該可用的列表元件,該平衡基準經配置以最佳化該記憶體之該分配。
  17. 如請求項16所述之方法,其中根據處理器索引,該適應性雜湊被鍵鑰(keyed)。
  18. 如請求項16所述之方法,其中根據不均勻記憶體存取(NUMA)節點編號,該適應性雜湊函數被鍵鑰(keyed)。
  19. 如請求項16所述之方法,其中該平衡基準經配置以避免記憶體資源的過度分配。
  20. 如請求項16所述之方法,其中該適應性雜湊經配置以容納複數個相應的列表標頭,該複數個相應的列表標頭每者參考係對應該等經分割的無鎖列表結構中之相應的無鎖列表結構。
TW102113317A 2012-04-27 2013-04-15 用於s列表分配之系統與方法 TWI605340B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/458,355 US9652289B2 (en) 2012-04-27 2012-04-27 Systems and methods for S-list partitioning

Publications (2)

Publication Number Publication Date
TW201405308A TW201405308A (zh) 2014-02-01
TWI605340B true TWI605340B (zh) 2017-11-11

Family

ID=48289638

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102113317A TWI605340B (zh) 2012-04-27 2013-04-15 用於s列表分配之系統與方法

Country Status (8)

Country Link
US (2) US9652289B2 (zh)
EP (1) EP2842032B1 (zh)
JP (1) JP6275119B2 (zh)
CN (1) CN104254839B (zh)
BR (1) BR112014022764B1 (zh)
RU (1) RU2639944C2 (zh)
TW (1) TWI605340B (zh)
WO (1) WO2013163008A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652289B2 (en) 2012-04-27 2017-05-16 Microsoft Technology Licensing, Llc Systems and methods for S-list partitioning
US9372825B1 (en) * 2013-02-27 2016-06-21 Netapp, Inc. Global non-volatile solid-state cache in a network storage system
US9377954B2 (en) * 2014-05-09 2016-06-28 Advanced Micro Devices, Inc. System and method for memory allocation in a multiclass memory system
US9870328B2 (en) * 2014-11-14 2018-01-16 Cavium, Inc. Managing buffered communication between cores
US10564865B2 (en) 2016-03-22 2020-02-18 Seagate Technology Llc Lockless parity management in a distributed data storage system
CN107969153B (zh) * 2016-08-19 2021-06-22 华为技术有限公司 一种资源分配方法、装置及numa***
CN107944297B (zh) * 2017-12-11 2020-11-24 北京奇虎科技有限公司 一种访问文件的控制方法及装置
WO2019212182A1 (en) * 2018-05-04 2019-11-07 Samsung Electronics Co., Ltd. Apparatus and method for managing a shareable resource in a multi-core processor
CN111143058A (zh) * 2019-12-17 2020-05-12 长沙新弘软件有限公司 一种基于后备列表的内存管理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200424867A (en) * 2002-12-05 2004-11-16 Ibm Dynamic data routing mechanism for a high speed memory cloner
US20100251250A1 (en) * 2009-03-30 2010-09-30 Microsoft Corporation Lock-free scheduler with priority support
TW201112125A (en) * 2009-09-16 2011-04-01 Ibm Method and system for operating an instance of a data structure

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02162439A (ja) * 1988-12-15 1990-06-22 Fujitsu Ltd 共有メモリのフリーリスト管理方式
US6058460A (en) * 1996-06-28 2000-05-02 Sun Microsystems, Inc. Memory allocation in a multithreaded environment
US6785888B1 (en) * 1997-08-29 2004-08-31 International Business Machines Corporation Memory allocator for a multiprocessor computer system
US6643754B1 (en) * 2000-02-15 2003-11-04 International Business Machines Corporation System and method for dynamically allocating computer memory
US6986015B2 (en) 2001-12-10 2006-01-10 Incipient, Inc. Fast path caching
US7111289B2 (en) 2001-12-21 2006-09-19 Agere Systems, Inc. Method for implementing dual link list structure to enable fast link-list pointer updates
US7016923B2 (en) 2002-11-05 2006-03-21 Sun Microsystems, Inc. Multi-threaded garbage collector employing cascaded memory arrays of task identifiers to implement work stealing queues for task identification and processing
US7587566B2 (en) 2004-02-20 2009-09-08 Microsoft Corporation Realtime memory management via locking realtime threads and related data structures
US7844973B1 (en) 2004-12-09 2010-11-30 Oracle America, Inc. Methods and apparatus providing non-blocking access to a resource
US10769215B2 (en) 2005-07-14 2020-09-08 Conversant Wireless Licensing S.A R.L. Method, apparatus and computer program product providing an application integrated mobile device search solution using context information
US7904688B1 (en) * 2005-12-21 2011-03-08 Trend Micro Inc Memory management unit for field programmable gate array boards
EP1936498A1 (en) * 2006-12-21 2008-06-25 International Business Machines Corporation A method and system to manage memory accesses from multithread programs on multiprocessor systems
US8700823B2 (en) * 2007-03-15 2014-04-15 Broadcom Corporation Software driver interconnect framework
US8495641B2 (en) * 2007-06-29 2013-07-23 International Business Machines Corporation Efficiently boosting priority of read-copy update readers while resolving races with exiting and unlocking processes
RU2406127C2 (ru) 2007-09-18 2010-12-10 Виктор Анатольевич Кущенко Цифровой процессор кущенко в.а.
US7941688B2 (en) 2008-04-09 2011-05-10 Microsoft Corporation Managing timers in a multiprocessor environment
US20090259780A1 (en) 2008-04-10 2009-10-15 Weistech Technology Co., Ltd. Portable electronic device for controlling under-controlled devices
US8190827B2 (en) * 2009-02-27 2012-05-29 Red Hat, Inc. Memory sharing among computer programs
US8078825B2 (en) * 2009-03-11 2011-12-13 Oracle America, Inc. Composite hash and list partitioning of database tables
US20110296437A1 (en) * 2010-05-28 2011-12-01 Devendra Raut Method and apparatus for lockless communication between cores in a multi-core processor
US9652289B2 (en) 2012-04-27 2017-05-16 Microsoft Technology Licensing, Llc Systems and methods for S-list partitioning

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200424867A (en) * 2002-12-05 2004-11-16 Ibm Dynamic data routing mechanism for a high speed memory cloner
US20100251250A1 (en) * 2009-03-30 2010-09-30 Microsoft Corporation Lock-free scheduler with priority support
TW201112125A (en) * 2009-09-16 2011-04-01 Ibm Method and system for operating an instance of a data structure

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Michael, Maged M. "Scalable lock-free dynamic memory allocation." ACM Sigplan Notices 39.6 (2004): 35-46 *

Also Published As

Publication number Publication date
US20130290667A1 (en) 2013-10-31
CN104254839A (zh) 2014-12-31
US20170249243A1 (en) 2017-08-31
US9652289B2 (en) 2017-05-16
EP2842032A1 (en) 2015-03-04
BR112014022764A2 (zh) 2017-06-20
RU2639944C2 (ru) 2017-12-25
WO2013163008A1 (en) 2013-10-31
RU2014143063A (ru) 2016-05-20
BR112014022764A8 (pt) 2017-12-12
BR112014022764B1 (pt) 2021-10-13
CN104254839B (zh) 2018-10-12
EP2842032B1 (en) 2020-05-06
JP6275119B2 (ja) 2018-02-07
JP2015515076A (ja) 2015-05-21
US10223253B2 (en) 2019-03-05
TW201405308A (zh) 2014-02-01

Similar Documents

Publication Publication Date Title
TWI605340B (zh) 用於s列表分配之系統與方法
JP4410795B2 (ja) 共有リソースの同時アクセス
CN103544319B (zh) 一种多租户共享数据库的方法和多租户数据库即服务***
US10007609B2 (en) Method, apparatus and computer programs providing cluster-wide page management
WO2017133623A1 (zh) 一种数据流处理方法、装置和***
WO2017113278A1 (zh) 数据处理方法、装置和***
US8347293B2 (en) Mutual exclusion domains to perform file system processes on stripes
CN105242872A (zh) 一种面向虚拟集群的共享存储***
KR20140111746A (ko) 워크 로드에 따라 동적 자원 할당 가능한 상호 연결 패브릭 스위칭 장치 및 방법
US11269687B2 (en) Map reduce using coordination namespace hardware acceleration
US11366700B1 (en) Hierarchical workload allocation in a storage system
US20190173759A1 (en) Network traffic management for virtualized graphics devices
WO2017113277A1 (zh) 数据处理方法、装置和***
CN115774599A (zh) 用于使用容器编排服务管理的集群的分布式数据网格路由
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
US20220405135A1 (en) Scheduling in a container orchestration system utilizing hardware topology hints
Zhao et al. RECANS: Low-latency network function chains with hierarchical state sharing
WO2023116910A1 (zh) 一种计算资源和缓存资源调度方法、装置及***
US11860785B2 (en) Method and system for efficient communication and command system for deferred operation
US11086779B2 (en) System and method of a highly concurrent cache replacement algorithm
US20240111606A1 (en) Distributed Cluster Join Management
JP5146440B2 (ja) 無共有型データベース管理システム
JP2018152125A (ja) 情報処理装置

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees