TWI519948B - 記憶體使用掃描 - Google Patents

記憶體使用掃描 Download PDF

Info

Publication number
TWI519948B
TWI519948B TW100108567A TW100108567A TWI519948B TW I519948 B TWI519948 B TW I519948B TW 100108567 A TW100108567 A TW 100108567A TW 100108567 A TW100108567 A TW 100108567A TW I519948 B TWI519948 B TW I519948B
Authority
TW
Taiwan
Prior art keywords
memory
programs
pages
page
classification
Prior art date
Application number
TW100108567A
Other languages
English (en)
Other versions
TW201202930A (en
Inventor
沃星頓布魯斯L
沙達維薩爾
張琪
理剛麥密特
貝克依孚堅利
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 TW201202930A publication Critical patent/TW201202930A/zh
Application granted granted Critical
Publication of TWI519948B publication Critical patent/TWI519948B/zh

Links

Classifications

    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3268Power saving in hard disk drive
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

記憶體使用掃描
本發明係關於記憶體使用掃描。
電腦系統通常具有可用於許多不同目的(包括儲存可執行碼以及資料)之隨機存取記憶體。記憶體中的此等項經常有各種不同的使用方式。可極頻繁地使用一些項,而較不頻繁地使用其他項。
當記憶體中各項的使用模式已知時,可執行某些最佳化,諸如將較少使用的記憶體移至另一類型的儲存器,或其他最佳化。
一種記憶體掃描系統可掃描記憶體物件以藉由使用在記憶體中儲存的程序之一映射掃描各記憶體物件來決定使用頻率。可多次執行掃描以對於記憶體之各頁或單元產生一使用歷史。在一些情況下,掃描可依不同頻率執行以決定使用的多種分類。映射可產生記憶體使用之一詳細布局,包括存取頻率之多個分類,及若干其他分類。基於該布局,可將記憶體中的物件複製至另一記憶體媒體或對於效能或功率消耗最佳化。
提供此發明內容以依下文之實施方式中進一步描述的一簡化形式介紹概念的選擇。此發明內容無意於識別所主張標的之關鍵特徵或基本特徵,亦無意於用於限制所主張標的之範疇。
一種記憶體掃描系統可用來管理在記憶體中儲存之諸項的位置。記憶體掃描系統可藉由週期性掃描關於記憶體項之元資料而在記憶體中掃描諸項,以決定自最後掃描以來已存取了那些記憶體頁。可用週期性掃描來基於該等頁在掃描之時間週期中被存取的頻率及其他準則將該等頁分類。
記憶體頁之存取頻率可用來決定一些記憶體頁是否可被移至另一位置以最佳化效能、功率消耗或其他因素。存取頻率係可用來決定是否可移動記憶體頁的存取歷史的一元素。
掃描系統可對於目前在電腦上存在的各程序建立及保持一組位元映像。位元映像可將頁分成為各種分類使得一記憶體管理應用程式可迅速地存取具有特定分類的頁。
記憶體頁之分類可包括一「熱度」位準,其與用於各頁之存取頻率對應。一「熱」頁可被極頻繁地存取,一「冷」頁可能不頻繁地存取,且一「中等」頁可介於其間。亦可使用其他分類。
整個此說明書及申請專利範圍中,術語「記憶體頁」是用來指記憶體之一單位。術語「記憶體頁」可為由一作業系統執行的記憶體配置之資料的最小單位,且亦可是可移動至一輔助儲存器(例如一硬碟或其他非揮發性記憶體位置)之資料的單位。術語「記憶體頁」可為用於不同應用或電腦架構之資料的不同大小。
整個此說明書中,相似之參考數字指整體圖式說明中的相似元件。
當將元件指為被「連接」或「耦合」時,可將元件直接連接或耦合在一起或可存在一或多數中間元件。相反地,當將元件指出被「直接連接」或「直接耦合」時,則沒有中間元件存在。
可將標的體現為裝置、系統,方法、及/或電腦程式產品。因此,一些或所有標的可體現於硬體及/或軟體中(包括韌體、常駐軟體、微型碼、狀態機、閘控陣列等等)。此外,標的可採取在具有電腦可用或電腦可讀程式碼之一電腦可用或電腦可讀儲存媒體上的一電腦程式產品的形式,該程式碼係體現於藉由一指令執行系統使用或與其連接之媒體中。在此文件之上下文中,一電腦可用或電腦可讀媒體可為可含有、儲存、通信、傳播或運輸程式之任何媒體,其係藉由指令執行系統、設備或裝置使用或與其連接。
電腦可用或電腦可讀媒體可為例如(但不限於)一電子、磁性、光學、電磁、紅外線或半導體系統、設備、裝置或傳播媒體。藉由實例(且非限制),電腦可讀媒體可包含電腦儲存媒體及通信媒體。
電腦儲存媒體包括揮發性及非揮發性、可移除及非可移除媒體,其係實施於用於儲存例如電腦可讀取指令、資料結構、程式模組或其他資料之資訊的任何方法或技術中。電腦儲存媒體包括(但不限於)RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術、CD-ROM、數位多功能碟片(DVD)或其他光學儲存器、磁匣、磁帶、磁碟儲存器或其他磁性儲存裝置,或可用來儲存所需資訊以及可由一指令執行系統存取之任何其他媒體。應注意到電腦可用或電腦可讀取儲存媒體可為在其上印出程式之紙或其他合適媒體,因為程式可經由(例如)光學掃描該紙或其他合適媒體而以電子擷取,接著視需要經編譯、解譯或以合適方式處理,且接著儲存於一電腦記憶體中。
通信媒體典型地體現電腦可讀取指令、資料結構、程式模組或於一調變資料信號(例如一載波或其他運輸機制)中之其他資料且包括任何資訊傳遞媒體。可將術語「調變資料信號」定義為使其特性之一或多種以將信號中的資訊編碼之此一方式設定或改變的一信號。藉由實例(且不限制),電腦媒體包括有線媒體(諸如一有線網路或直接連線連接);及無線媒體,諸如聲音、RF、紅外線及其他無線媒體。上述任何者之組合亦應包括於電腦可讀取媒體之範圍內。
當標的於電腦可執行指令之一般上下文中體現時,該具體實施例可包含程式模組,其係由一或多數系統、電腦或其他裝置執行。大體上,程式模組包括常式、程式、物件、組件、資料結構及執行特定任務或實施特定抽象資料類型的類似者。典型地,在各種具體實施例中視需要可組合或分佈程式模組的功能。
第1圖係一具體實施例100的圖式,其顯示一種可包含一記憶體管理系統之系統,該記憶體管理系統可掃描記憶體頁,以決定記憶體頁之一使用因數。具體實施例100係一具有分開管理記憶體區之系統及一用於掃描儲存在該等記憶體區內之諸頁的掃描系統之一簡化實例。基於該等物件之使用,一記憶體管理器可將各種物件自一記憶體區移動至另一者以改良效能、功率消耗或其他最佳化。
第1圖之圖式描述系統之功能組件。在一些情況下,組件可為硬體組件、軟體組件或硬體及軟體之一組合。一些組件可為應用層面軟體,而其他組件可為作業系統層面組件。在一些情況下,一組件至另一者之連接可為一封閉連接,其中兩個或以上的組件是在一單一硬體平臺上操作。在其他情況中,連接可透過展開長距離的網路連接達成。各具體實施例可使用不同硬體、軟體及互連架構以達到所述功能。
具體實施例100係可具有能分開地管理或控制的多記憶體區之一裝置的實例。例如,可分開地控制各種記憶體區以依不同功率位準操作或傳遞不同效能特性。在一些具體實施例中,該等記憶體區可為同質,其中所有記憶體區具有相同效能及操作特性。其他具體實施例可為異質,其中一些記憶體區可具有與其他區不同之特性。
一記憶體管理器可造成記憶體頁從一記憶體區移至另一記憶體區作為一最佳化機制的部分。在一些具體實施例中,記憶體管理器可針對效能最佳化。在另一具體實施例中,記憶體管理器可針對功率節省最佳化記憶體頁放置。
一掃描引擎可掃描與各程序關聯的記憶體頁,以藉由使用將記憶體物件分類。在典型具體實施例中,掃描引擎可藉由頁之存取頻率識別使用。其他具體實施例可將存取模式或其他準則用於使用。
共享記憶體頁可為在不同程序中共享的該等頁。共享該頁的程序之各者可能讀取或寫至該頁。在一些情況下,一程序可能極頻繁地存取共享記憶體頁,而另一程序可能極不頻繁存取共享記憶體頁。
掃描引擎可能首先分析各程序以決定程序有多頻繁存取其關聯記憶體頁之各者。在執行針對該等程序之各者的操作以後,掃描引擎可接著分析各共享頁以基於已存取至該共享頁的所有該等程序以決定用於存取頻率之一單一值。在一些具體實施例中,該單一值可接著針對所有程序更新以致共享記憶體頁具有用於各程序之相同值。
裝置102可代表一習知電腦裝置,其具有一組硬體組件104及一組軟體組件106。裝置102可具有習知桌上型或伺服器電腦的一架構。
裝置102可為任何電腦裝置,其具有可分開地控制的一處理器及記憶體區。在一些具體實施例中,一裝置可具有多處理器或多處理器核心。一些具體實施例可具有多處理器,其各具有多核心。在一些情況下,處理器可為同質,雖然在其他情況中,可將不同處理器用於單一裝置中。
一典型裝置可為一伺服器電腦或桌上型個人電腦。其他具體實施例可包括可攜式裝置,諸如膝上型電腦、筆記型電腦、行動電話、個人數位助理、行動掃描器或其他裝置。在一些情況下,裝置102可為一遊戲控制台、網路器具、網路選路裝置、閘道裝置或其他裝置。
裝置102可具有一組硬體組件104,其可包括一處理器108及若干記憶體區110、112、114及116。可分開管理各種記憶體區。例如,各記憶體區可獨立控制用於功率消耗、效能或其他因數。在一些具體實施例中,記憶體區可為同質,其中各記憶體區可相同。
其他具體實施例可為異質,其中可能存在用於隨機存取記憶體的兩個或以上的不同裝置。在一些情況下,一異質記憶體組態可藉由將兩個或以上記憶體區連結成為一經接合或交織記憶體區而自一同質組態產生。在此一具體實施例中,兩個或以上的記憶體區可與係單一且獨立之其他記憶體區連結在一起。
該等記憶體區可在諸具體實施例間變化。在一些情況下,記憶體區可為單行或記憶體晶片。在其他情況中,一記憶體區可為雙直列記憶體模組(DIMM),其可含有一或多數記憶體晶片。在又其他情況下,一記憶體區可為含有一或多數DIMM或晶片的記憶體群。
可分開地控制各記憶體區。例如,可獨立控制一記憶體區以依不同功率位準操作。依一高功率位準,記憶體區可具有極快速回應時間,而依一低功率位準,當記憶體區可能在執行讀取或寫入存取之前被提升至一高功率位準狀態時,該記憶體區可具有一等待時間。
在一些具體實施例中,一硬體或軟體記憶體控制器可監控一記憶體區以決定該記憶體區是否不頻繁使用。例如,當一記憶體區未接收到存取請求達一預定時間量時,記憶體控制器可降低功率狀態使得可減少總裝置之功率消耗。在此一具體實施例中,若干記憶體控制器可存在一裝置中以獨立監控且控制記憶體區。
硬體組件104經說明為具有四獨立記憶體區。一些具體實施例可具有更多獨立記憶體區,諸如可具有8、16、50、100或更多獨立記憶體區之具體實施例。獨立記憶體區之數目可為任何數目之區,只要至少兩記憶體區可用且可分開地控制。
處理器108可能已存取至一非揮發性儲存器118。在許多系統中,儲存在隨機存取記憶體區的資料可為週期地「分頁」或轉移至非揮發性儲存器。當已將記憶體頁移至非揮發性儲存器而發生一對於一記憶體頁之請求時,可能發生一記憶體錯誤。一記憶體控制器可將記憶體頁從非揮發性儲存器複製至隨機存取記憶體使得請求程式可存取該記憶體頁。
非揮發性儲存器118可用以儲存可執行與不可執行資料,用於未來藉由處理器108使用。
硬體組件104亦可包括一網路介面120及一使用者介面122。
在一些具體實施例中,各種裝置124可具有直接記憶體存取(DMA)。直接記憶體存取係一種其中一裝置可被指派一記憶體區且該裝置可能可自該區讀取資料且將資料寫入其而不涉及一作業系統或其他軟體程序之技術。因為直接記憶體存取可繞行許多作業系統,與直接記憶體存取相關之記憶體頁可能不可由一記憶體管理器移動。具有直接記憶體存取之裝置的實例可包括網路連接、儲存裝置、視訊裝置及其他周邊件。
軟體組件106可包括在其上可操作各種應用之一作業系統126。作業系統126可用各種核心記憶體項128消耗記憶體頁。核心記憶體項128可消耗難以由一記憶體管理器移動或不移動的記憶體頁。
各種程序130可藉由在處理器108上執行之應用產生。在一些情況下,單一應用可發動數十或甚至數百或數千的個別程序。各程序130可用可執行件132及資料134消耗記憶體頁。可執行件132可包括由處理器108執行的指令,而資料134可為由程序130使用之任何其他儲存資料。
一些裝置136可消耗直接記憶體存取138記憶體頁。此等裝置可為例如硬碟控制器、視訊顯示裝置、輸入裝置或其他裝置的周邊件。在一些情況下,該等裝置可為裝置102內部,而在其他情況中,該等裝置可為外部。
一記憶體管理器140可橫跨各種記憶體區110至116最佳化記憶體物件之放置。記憶體管理器140可在不同具體實施例中執行不同類型最佳化。在一使用情節中,一記憶體管理器可較不頻繁使用的記憶體頁合併至一或多數記憶體區上使得該等記憶體區可依一減少功率操作。在另一使用情節中,記憶體管理器可將頻繁使用的記憶體頁合併至一交織記憶體區上以增加裝置102之效能。
記憶體管理器140可藉由分析記憶體元資料142識別及移動各種記憶體頁。記憶體元資料142可在共享記憶體頁146上包括各種位元映像144及資料。
一掃描引擎148可執行各種記憶體之掃描以產生可由記憶體管理器消耗之記憶體元資料142。掃描引擎148可執行記憶體頁之重複掃描以識別個別記憶體有多頻繁被存取。一掃描引擎操作的若干實例呈現在此說明書後續呈現之具體實施例200、300、400、500及600中。
掃描引擎148可藉由掃描與程序關聯的該等頁來掃描記憶體頁。作為一作業系統之部分,可將各程序配置記憶體及對於經配置記憶體提供一組虛擬位址。程序可使用虛擬記憶體位址將記憶體頁定址,而一頁表可將該等記憶體頁映射至一實體位址。各程序可有一工作集表,其含有經指派至該程序之記憶體頁的虛擬位址。
掃描引擎148可使用各程序之工作集表以掃描與該程序關聯的各記憶體頁。在掃描期間,掃描引擎可對於該記憶體頁更新各種位元映像與計數器,且接著使用位元映像與計數器來決定記憶體頁有頻繁被存取。
可在一記憶體裝置內保持一位元,其指示一記憶體頁是否已被存取。在一些具體實施例中,可用單一位元來指示一些種類的存取。在其他具體實施例中,可用兩個或以上位元來指示該存取係讀取存取、寫入存取或兩者。可組態該位元或諸位元使得一掃描引擎148能查詢該位元或該等位元,接著重設該等位元作為掃描之部分。在下一掃描上之一改變位元可指示自從最後掃描以來已發生一存取。在一些具體實施例中,可用該等位元來指示存取的頻率。
在此一具體實施例中,掃描頻率可改變存取頻率之測量的解析度。一高頻率掃描可識別快速改變或極經常存取之該等記憶體頁的一窄範圍。一低頻率掃描可識別較寬之一組記憶體頁。在一些具體實施例中,掃描可依兩個或以上的不同頻率執行以用存取頻率的不同位準識別記憶體頁。
第2圖係一具體實施例200的圖示說明,其顯示可參與執行一記憶體掃描之不同組件的一實例。具體實施例200係一可幫助說明如何操作一掃描引擎且構建可用於掃描且管理記憶體頁之各種位元映像的簡化圖式。
一程序202可配置記憶體之頁。在許多具體實施例中,一程序可從一作業系統請求記憶體且作業系統可指派記憶體頁。在一些情況下,當程序執行時該程序可做出多數請求。
一些程序可能常常釋出記憶體。當記憶體未自一程序釋出時,經釋出的記憶體頁可返回作業系統及當接收到請求時配置給其他程序。在許多情況中,作業系統可藉由將經釋出記憶體頁內之所有值改變成零來將記憶體頁清理乾淨。此等記憶體頁可因為事前將該等值改變成零且事後「歸零」而稱為「釋出」頁。
經指派至一程序202的記憶體頁可儲存於一工作集表204中。工作集表可含有一用於經指派給程序202之記憶體頁的虛擬位址之列表。工作集表204中的項可為虛擬位址,其可透過一頁表206中之項目分解成實體位址。頁表206可含有虛擬位址至實體位址的一映射。
當一記憶體頁從一位置移至另一位置時,記憶體頁的位置可在頁表206中更新。此可允許移動記憶體頁而不影響工作集表204且因此記憶體頁之實體改變可能不影響程序202之操作。在一些具體實施例中,與記憶體頁關聯之位元映像的內容亦可被轉移至一新位置。
掃描的操作及處理結果208可能產生一組位元映像210。可用來產生位元映像210之若干實例係於此說明書後續呈現之具體實施例300、400及500中說明。
具體實施例200中說明之位元映像210係僅一種機制,藉由其可收集且儲存記憶體頁之分類。可產生位元映像210使得一記憶體管理器250可有效率地收集某些類型之記憶體頁以執行一些最佳化。
位元映像210說明一實例具體實施例,其中各程序212、214及216具有一組位元映像。在用於各程序之各組位元映像中,可針對各記憶體區218、220、222及224建立另一組位元映像。在各區內,可針對熱、中間或冷的記憶體頁建立分開的位元映像。
在具體實施例200之實例中,區218可含有針對熱226、中間228及冷230之位元映像的一垂直行。區220可含有針對熱232、中間234及冷236之位元映像的行。同樣地,區222及224可分別含有針對熱238及244、中間240及246與冷242及248之位元映像的行。
對於程序212、214及216的各者,位元映像可具有對應於針對各程序之各別工作集表的相同數目之項目。在位元映像內,該位元映像之對應位置中的一項目可指示一記憶體頁係位於該位元映像之指定位置中。例如,在區220下用於程序212之中間位元映像的第三行中之一項目可指示來自工作集表之第三記憶體頁儲存在區220中及具有一中間分類。
位元映像之經說明組態有用因為一記憶體管理器250可自一特定區收集所有熱、中間或冷的記憶體頁以執行一動作,例如將該等記憶體頁移動至另一區。
所說明之位元映像在各位元映像中可具有單一位元項目。其他具體實施例可具有經配置用於各項目之兩、三或更多位元且在一單一位元映像或表中代表許多不同類型。
所說明之組態顯示記憶體頁之三分類:高、中間及低。許多具體實施例可用高及低分類操作及可不包括中間分類。其他具體實施例可包括若干額外分類。在一些具體實施例中,一第一組位元映像可針對讀取存取分類建立且一第二組位元映像可針對寫入存取分類建立。
位元映像210可包括用於各種區的實體記憶體位元映像。實體記憶體位元映像252、254、256及258可代表各實體記憶體區的組成。在許多情況中,實體記憶體位元映像252、254、256及258可具有指示多個分類之項目。
實體記憶體位元映像可包括指示一記憶體頁係熱、中間或冷之項目,且亦可包括諸分類,其係用於共享記憶體頁、及釋出頁、歸零頁、不可掃描頁、不可移動頁、直接記憶體存取緩衝器、核心結構、專用及共享頁、系統頁及其他分類。在一些具體實施例中,一些此等分類可包括在可應用處的程序特定位元映像中。
實體記憶體位元映像可藉由一記憶體管理器250使用以迅速分析各種記憶體區之狀態且決定是否且如何將記憶體區再組態。例如,一記憶體管理器250可分析一實體記憶體位元映像以決定熱記憶體頁相對於冷記憶體頁之一比。基於該比,記憶體管理器250可例如選擇以將熱或冷記憶體頁移動至另一記憶體區。
第3圖係一具體實施例300之流程圖說明,其顯示用於掃描記憶體物件以致可執行記憶體最佳化之一般方法。具體實施例300係一般方法之簡化實例,其可藉由一記憶體管理器及掃描引擎執行作為一最佳化程序的部分。具體實施例300的一些部分之詳細實例後續在此說明書之具體實施例400及500中呈現。
其他具體實施例可使用不同順序、額外或較少步驟,及不同名詞或術語以達成類似功能。在一些具體實施例中,各種操作或操作組可依同步或異步方式與其他操作平行地執行。在此選定之步驟經選擇以依一簡化形式說明操作的一些原理。
具體實施例300說明一用於掃描記憶體頁及執行記憶體最佳化之高位準程序。當一裝置自我啟動時,程序可在方塊302中開始。
可在方塊304中決定硬體布局。硬體布局可包括描述各種記憶體區的元資料。元資料可包括記憶體區的數目各區大小、實體位址及任何能力、效能特性或可區分該等區的其他資訊。在許多具體實施例中,硬體布局可於使一作業系統自我啟動之前組態且在作業系統執行後可不改變。
方塊306中,可偵測目前程序。代表目前程序的位元映像可在準備一掃描中於方塊308中更新或建立。
一時序情節可在方塊310中決定用於掃描。在具體實施例中,可在數次重覆中執行掃描。許多記憶體系統具有當存取(其藉由一讀取存取或寫入存取)一記憶體頁時可設定的一位元。掃描程序可評估位元然後重設該位元。當一掃描偵測到該位元未重設時,記憶體頁自從最後掃描以來未被存取。
各記憶體頁的存取頻率可由連續掃描的歷史決定。各掃描間的時間長度可於方塊310中決定以選擇一寬或窄群組之記憶體頁以識別為經存取。一較短時間長度可識別一較小群組之記憶體頁,而一較長時間長度可識別一較大群組。在許多情況中,較小群組可能傾向於更易揮發及可改變得比可在掃描之間用較長時間長度識別之較大群組更迅速。
在一些具體實施例中,可依若干不同間隔執行掃描。例如,一組較長頻率掃描可用以識別中間頻率記憶體頁,而一組較短頻率掃描可用以識別高頻率記憶體頁。具體實施例300可為一其中可實施此一掃描情節之程序的實例。
可在方塊312中執行完全掃描。完全掃描之一實例可於具體實施例400中說明。
可在方塊314中處理掃描結果。用於處理結果之一方法的實例可於具體實施例500中說明。
若待在方塊316中執行更多掃描,程序可經迴路回至方塊312。若方塊316中不再執行更多掃描,可在方塊318中處理最後結果。可如來自方塊314之中間結果的類似方式處理最後結果。
一記憶體管理器可在方塊320中執行記憶體最佳化且程序可返回至方塊306。
第4圖係顯示用於掃描記憶體物件之方法的一具體實施例400之一流程圖。具體實施例400是完全掃描之一實例,諸如可在具體實施例300之方塊312中執行的完全掃描。
其他具體實施例可使用不同順序、額外或較少步驟,及不同名詞或術語以達成類似功能。在一些具體實施例中,各種操作或操作組可依同步或異步方式與其他操作平行地執行。在此選定之步驟經選擇以依一簡化形式說明操作的一些原理。
具體實施例400係可掃描一記憶體頁用於讀取或寫入存取及可保持用於讀取及寫入操作之一分開計數器的方法的一實例。掃描機制可使用一硬體或軟體位元或諸位元,其可當存取一記憶體頁時由硬體或軟體雙態觸變。一些具體實施例可僅包括可指示一存取發生的單一位元,但不在讀取及寫入存取之間區別。
具體實施例400針對各程序掃描通過工作經表及對於該等程序使計數器增量。計數器可當重複執行掃描時累積值。在若干掃描後,計數器可針對各記憶體頁記錄以將記憶體頁的存取頻率或使用分類。
具體實施例400可使用針對其中發生一存取之各掃描計數之計數器。於許多此等具體實施例中,可連續地執行若干完全掃描,而後可分析計數器以識別高度使用的該等記憶體頁,輕度使用的該等記憶體頁及可能用於一些中間位準的該等記憶體頁。在分析後,可針對另一分析道次重設計數器。
其他具體實施例可使用不同追蹤及計數機制。例如,一些具體實施例可使用當一記憶體頁未被存取時增量的計數器。在一些情況下,可將一計數器設定成初始值接著當未使用或使用一記憶體頁時在各連續掃描上減量。具體實施例400僅係可用來掃描記憶體頁的一機制。
在方塊402中,可界定一片段用於一部分掃描。在一些具體實施例中,掃描程序可消耗一些處理器及記憶體頻寬。為了使掃描之影響減至最小,掃描可分段執行,其中各部分掃描可在一指派予各程序的預定片段上操作。例如,可用1/128之片段將完全掃描分裂成為128部分掃描。
當執行部分掃描時,各部分掃描之間可能有一延遲。該延遲可為一預定計時器或排程功能,其限制可配置給掃描的處理器或記憶體頻寬的數量。
各程序可在方塊404中分開地掃描。對於在方塊404中經掃描的程序,可在方塊406中識別掃描的一片段。
該片段可界定可在方塊408中掃描的工作集表的一區段。例如,掃描可經組態以進行100個部分掃描。實例中的第一部分掃描可處理工作集表的第一個百分之一。第二部分掃描可處理工作集表的第二個百分之一及等等。
工作集表中之片段的各頁可在方塊408中分析。在方塊410中,作成是否已存取該頁之決定。可藉由讀取當一存取發生時可能設定之一硬體位元或諸位元作成此決定。在所說明之具體實施例中,可使用兩位元,一位元指示接收到之頁是否為一讀取存取及一第二位元指示該頁是否接收一寫入存取。在其他具體實施例中,可用單一位元來指示任何存取,而未在讀取或寫入存取間區分。
分開追蹤讀取及寫入存取之具體實施例可在管理記憶體技術隨著時間退化時有用。一些此等記憶體技術可能在寫入存取期間退化,但若有時亦可能不受讀取存取影響。藉由分開追蹤讀取及寫入存取,此等記憶體技術目標可為例如經歷重度讀取存取及極輕度寫入存取的記憶體頁。
當未在方塊410中存取一頁時,該方法可返回方塊408以掃描另一頁。若該頁已在方塊410中存取且在方塊412中該存取係一讀取存取,則一讀取計數器可針對方塊414中之記憶體頁增量。各記憶體頁可具有用於讀取及寫入存取之計數器。
不論是否該頁已接收到讀取存取,若該頁已在方塊416中接收到寫入存取,則一寫入計數器在方塊418中可針對記憶體頁增量。在方塊412至418中分析讀取及寫入存取位元後,可在方塊420中重設頁存取位元且可在方塊408中掃描另一記憶體頁。
在方塊404中掃描通過各程序後,若掃描未在方塊422中完成,則掃描可前進至方塊424中之下一片段且返回至方塊404再次用另一部分掃描來掃描通過程序。
當該等程序已在方塊422中經完全掃描以後,可在方塊426中掃描其他類型之頁。例如,可掃描核心頁、直接記憶體存取頁或其他頁。在一些具體實施例中,一些此等頁可被視為不可移動且因此可忽視,因為不可移動頁無法藉由一記憶體管理器移動。
具體實施例400可經過一時段接續地執行數次,每次使各種計數器增量或不增量。在執行掃描一預定次數後,可分析結果。如何執行分析之一實例係於具體實施例500中說明。
第5圖係顯示用於處理掃描結果之一方法的一具體實施例500的一流程圖。具體實施例500可作為一最後分析的部分執行之分析的實例,諸如具體實施例300之方塊318的最後分析。
其他具體實施例可使用不同順序、額外或較少步驟,及不同名詞或術語以達成類似功能。在一些具體實施例中,各種操作或操作組可依同步或異步方式與其他操作平行地執行。在此選定之步驟經選擇以依一簡化形式說明操作的一些原理。
具體實施例500係如何分析來自多次掃描之結果以將一記憶體頁分類,而後在一組位元映像中更新該分類之一實例。具體實施例500針對各記憶體頁分開地分析讀取及寫入指示器或計數器且將計數器值與一組臨限值比較以將記憶體頁分類。在具體實施例500之實例中,可針對讀取及寫入動作分開指派分類,且在讀取及寫入動作內,可將記憶體頁分類為「熱」、「中間」或「冷」。對於讀取及寫入動作的分類可彼此獨立或正交。例如,可將一記憶體頁分類為「熱/讀取」及「中間/寫入」。
具體實施例500可將不同臨限值用於指派分類。可由用於特定分類的一最小值界定一臨限值。例如,可用記憶體物件之十次完全掃描計算一組結果。在實例中,用於「熱/讀取」之一臨限值可為八次計數的一最小值。在此實例中,在十次掃描之至少八次間接收一讀取存取的記憶體頁可被視為「熱/讀取」。一些具體實施例可將相同臨限值用作讀取及寫入,而他者可具有用於讀取及寫入存取之不同臨限值。
具體實施例500說明一種藉由步進通過在一處理器或核心上操作之各程序來分析記憶體之方法。其他具體實施例可使用橫越記憶體之不同機制。
可在方塊502中分析各程序。對於方塊502中的各程序,可在方塊504中分析工作集表中的各頁。
對於工作集表中的各頁,若讀取計數器在方塊506中已超過一熱/讀取臨限值,可在方塊508中將記憶體頁分類為一熱/讀取頁。
若讀取計數器未超過方塊506中之熱/讀取臨限值,但確實超過方塊510中之暖/讀取臨限值,則可在方塊512中指派記憶體頁一「暖/讀取」分類。若讀取計數器不超過方塊510中之暖/讀取臨限值,則記憶體頁在方塊514中可分類如「冷/讀取」。
寫入計數器係以類似方式處理。若一寫入計數器在方塊516中超過一熱/讀取臨限值,則可在方塊518中將記憶體頁分類為「熱/讀取」。若寫入計數器未超過熱/讀取臨限值,但確實超過方塊520中之暖/寫入臨限值,則可在方塊522中分類為「暖/寫入」。否則,記憶體頁在方塊524中可分類如「冷/寫入」。
在將記憶體頁分類以後,可在方塊526中更新與記憶體頁對應的位元映像。更新位元映像之精確程序可隨位元映像之配置變化。在具體實施例200中之位元映像的實例中,位元映像之更新可藉由識別記憶體頁之實體位址以識別其中儲存記憶體頁之記憶體區。在該區之內,可更新與分類關聯的位元映像以反映目前記憶體頁存在。與目前記憶體頁有關之其他位元映像可在方塊528中清除。
具體實施例500中,可使用兩組分開的位元映像:一用於讀取分類且另一組用於寫入分類。
在處理方塊504中之所有記憶體頁及方塊502中的所有程序後,可在方塊530中處理共享記憶體頁。可在具體實施例600中說明如何處理共享記憶體頁的實例。
第6圖係顯示一用於處理共享記憶體頁之方法的一具體實施例600的流程圖。具體實施例600係一種可藉由具體實施例500之方塊530執行的方法之一實例。
其他具體實施例可使用不同順序、額外或較少步驟,及不同名詞或術語以達成類似功能。在一些具體實施例中,各種操作或操作組可依同步或異步方式與其他操作平行地執行。在此選定之步驟經選擇以依一簡化形式說明操作的一些原理。
具體實施例600藉由發現由可共享頁的該等程序之各者決定的分類來處理共享頁及選擇一分類。在選擇一共同分類以後,可更新用於各程序的記憶體頁以反映共同分類。
具體實施例600之程序可導致相同分類被指派予各實體記憶體頁。在一共享記憶體頁中,二或以上程序可各存取相同實體記憶體位置。在掃描及分析各種記憶體頁期間,分析可已根據程序基礎在一程序上執行。在其中一程序作用而另一程序不作用之情況中,程序間的一共享記憶體頁可導致藉由第一程序之一熱分類及藉由第二者之一冷分類。在此一情況中,具體實施例600之程序可決定一共同分類及應用該分類至參考該記憶體頁的各程序。
在方塊602中,可執行一掃描以識別所有共享頁。可在方塊604中分析各共享頁。
在方塊606中一暫時分類可被設定至一最低分類。在方塊607中對於共享目前頁的各共享程序,由程序指派的記憶體頁的分類可在方塊608中分析。若目前程序在方塊608中沒有一更高分類,該方法可返回以在方塊607中分析下一程序。
若目前程序在方塊608中具有一更高分類,目前或暫時分類可在方塊610被設定至目前程序之分類。
在該等程序之各者在方塊607中分析時,該暫時分類可反映共享記憶體頁之任何程序的最大分類。在一些具體實施例中,最大分類可為「熱」分類。在其他具體實施例中,最大分類可為「冷」分類。
再次,共享記憶體頁之各程序可在方塊612中分析。對於各程序,用於目前記憶體頁之分類位準可在方塊610中覆寫以反映在方塊610中決定之暫時分類。方塊612及614之操作可強制最大分類針對程序之各者設定。
標的之前面描述已用於說明及描述目的呈現。無意於毫無遺漏地或將標的限制於所揭示之精確形式,且其他修改及變化根據以上教示而可能。選擇及描述具體實施例以最佳地解釋本發明之原理及其實際應用,以因而致使熟習此項技術之其他人士最佳地使用如適於所涵蓋之特定使用之各種具體實施例與各種修改。除了根據受先前技術所限制以外,預期隨附申請專利範圍被視為包括其他替代具體實施例。
100...具體實施例
102...裝置
104...硬體組件
106...軟體組件
108...處理器
110...記憶體區
112...記憶體區
114...記憶體區
116...記憶體區
118...非揮發性儲存器
120...網路介面
122...使用者介面
124...裝置
126...作業系統
128...核心記憶體項
130...程序
132...可執行件
134...資料
136...裝置
138...直接記憶體存取
140...記憶體管理器
142...記憶體元資料
144...位元映像
146...共享記憶體頁
148...掃描引擎
200...具體實施例
202...程序
204...工作集表
206...工作集表
208...結果
210...位元映像
212...程序
214...程序
216...程序
218...記憶體區
220...記憶體區
222...記憶體區
224...記憶體區
226...熱區
228...中間區
230...冷區
232...熱區
234...中間區
236...冷區
238...熱區
240...中間區
242...冷區
244...熱區
246...中間區
248...冷區
250...記憶體管理器
252...實體記憶體位元映像
254...實體記憶體位元映像
256...實體記憶體位元映像
258...實體記憶體位元映像
300...具體實施例
400...具體實施例
500...具體實施例
600...具體實施例
圖式中:
第1圖係一顯示具有記憶體管理之一裝置的一具體實施例的圖示說明。
第2圖係一顯示用於掃描及處理記憶體頁之一項的一具體實施例的圖示說明。
第3圖係一顯示用於記憶體管理之一方法的一具體實施例的流程圖。
第4圖係一顯示用於掃描記憶體頁之一方法的一具體實施例的流程圖。
第5圖係一顯示用於處理來自一掃描的結果之一方法的一具體實施例的流程圖。
第6圖係一顯示用於處理共享記憶體頁之一方法的一具體實施例的流程圖。
100...具體實施例
102...裝置
104...硬體組件
106...軟體組件
108...處理器
110...記憶體區
112...記憶體區
114...記憶體區
116...記憶體區
118...非揮發性儲存器
120...網路介面
122...使用者介面
124...裝置
126...作業系統
128...核心記憶體項
130...程序
132...可執行件
134...資料
136...裝置
138...直接記憶體存取
140...記憶體管理器
142...記憶體元資料
144...位元映像
146...共享記憶體頁
148...掃描引擎

Claims (18)

  1. 一種系統,包含:複數個記憶體區,各記憶體區可依至少一高功率方式及一低功率方式操作,該等記憶體區儲存複數個記憶體頁,各記憶體頁分別與複數個程序中一不同程序相關聯;一處理器,該處理器操作該複數個程序;一掃描引擎,該掃描引擎:識別在該處理器上操作之該複數個程序,且基於相關聯之該等經識別的程序識別該等記憶體頁;提供分別用於該等程序之映射集,各映射集包含分別用於該等記憶體區的映射子集,各映射子集包含分別用於記憶體分類的映射;執行該等經識別的記憶體頁之複數個掃描,以分別針對該等經識別的記憶體頁之各者決定使用歷史分類,且儲存該等使用歷史分類於該等映射集中;及一記憶體管理器,該記憶體管理器基於該等映射集中的該等使用歷史分類識別該等記憶體頁之至少一者,以從一第一記憶體區移動至一第二記憶體區。
  2. 如申請專利範圍第1項所述之系統,其中一映射集包含:一組位元映像,該組位元映像對應於該等記憶體 區之各者,該組位元映像包含用於該等記憶體頁之各者的至少一個項目。
  3. 如申請專利範圍第2項所述之系統,其中該組位元映像包含分別用於該等記憶體區之各者的至少一個分開位元映像。
  4. 如申請專利範圍第3項所述之系統,其中該等位元映像包含用於該等記憶體頁之各者的分類指定符。
  5. 如申請專利範圍第4項所述之系統,其中該組位元映像包含用於該等分類指定符之各者的一分開位元映像。
  6. 如申請專利範圍第2項所述之系統,其中該組位元映像包含對於一工作集表之指標,該工作集表包含用於經指派至該等程序之一者的該等記憶體頁之虛擬位址。
  7. 如申請專利範圍第1項所述之系統,其中該掃描引擎也:識別複數個共享頁,該等共享頁之各者由一組該等程序參考;對於該等共享頁之各者,針對一給定共享頁,基於針對該組程序之各者的該給定共享頁的該記憶體分類決定用於該給定共享頁的一第一分類;及更新該組程序中之該等程序的各者以反映該第一分類。
  8. 如申請專利範圍第7項所述之系統,其中一第一分類 包含來自用於該等程序之各者的該共享頁之該分類的一最大分類。
  9. 如申請專利範圍第1項所述之系統,其中該等第一分類之其中一些包含一低頻率存取類型,其中該等第一分類之其中一些包含一中間頻率存取類型,且其中該等第一分類之其中一些包含一高頻率存取類型。
  10. 如申請專利範圍第1項所述之系統,其中該掃描引擎依一第一頻率執行一第一組掃描及依一第二頻率執行一第二組掃描。
  11. 如申請專利範圍第1項所述之系統,其中該複數個掃描係依比由一分鐘、兩分鐘、五分鐘、十分鐘及六十分鐘組成的一群組之一者較短的一頻率執行。
  12. 如申請專利範圍第1項所述之系統,其中該複數個掃描係依大於六十分鐘之一頻率執行。
  13. 一種用於操作複數個程序的一電腦處理器執行之方法,該方法包含以下步驟:決定一硬體布局,該硬體布局包含複數個記憶體區,該等記憶體區之各者係可分開地管理,該等記憶體區儲存複數個記憶體頁,藉由一記憶體管理器分別指派各記憶體頁至該等程序之其中一相異者;偵測在該電腦處理器上操作之該複數個程序;對於在偵測到的該複數個程序中該等程序之各者,針對任何給定程序:提供用於該給定程序之一映射集,該映射集 包含分別用於該等記憶體區的映射子集,各映射子集包含用於個別使用分類的映射,在被指派至該給定程序時,識別該等記憶體頁之一給定者;及執行複數個掃描以決定該等記憶體頁之該給定者的一使用分類,其中針對被指派至該等程序之該給定者的該等記憶體頁之各者計算一使用分類;基於該等使用分類之一對應者將至少一個記憶體頁從一第一記憶體區移動至一第二記憶體區;及以不同於該第二記憶體區之方式管理該第一記憶體區。
  14. 如申請專利範圍第13項所述之方法,其中該第一記憶體區係以與該第二記憶體區不同之一功率位準操作。
  15. 如申請專利範圍第13項所述之方法,其中該第一記憶體區相較於該第二記憶體區係一較高效能記憶體區。
  16. 一種系統,包含:一處理器,該處理器操作複數個程序,該等程序之各者具有至少一個記憶體頁;複數個記憶體區,該等記憶體區各可依至少一高功率方式及一低功率方式操作;對於該複數個程序之各者,一組位元映像包含用 於該等記憶體區之各者的一分開位元映像子集,該位元映像子集包含用於複數個記憶體分類之各者的分開位元映像;一掃描引擎,該掃描引擎:執行該複數個記憶體區之複數個掃描,以識別在該處理器上操作之該複數個程序,該複數個程序之各者具有至少一個相關聯記憶體頁;決定用於該等記憶體頁之各者的一使用頻率分類;及儲存該使用頻率分類於該組位元映像中作為該等記憶體分類之部分;一記憶體管理器,該記憶體管理器識別該等記憶體頁之至少一者,以從一第一記憶體區移動至一第二記憶體區。
  17. 如申請專利範圍第16項所述之系統,其中該組位元映像指用於該等記憶體頁之各者的一虛擬位址。
  18. 如申請專利範圍第17項所述之系統,其中該虛擬位址係在一工作集表內之一位置。
TW100108567A 2010-04-30 2011-03-14 記憶體使用掃描 TWI519948B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/770,937 US9015441B2 (en) 2010-04-30 2010-04-30 Memory usage scanning

Publications (2)

Publication Number Publication Date
TW201202930A TW201202930A (en) 2012-01-16
TWI519948B true TWI519948B (zh) 2016-02-01

Family

ID=44859233

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100108567A TWI519948B (zh) 2010-04-30 2011-03-14 記憶體使用掃描

Country Status (5)

Country Link
US (1) US9015441B2 (zh)
EP (1) EP2564321B1 (zh)
CN (1) CN102859500B (zh)
TW (1) TWI519948B (zh)
WO (1) WO2011139465A2 (zh)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9135038B1 (en) * 2010-05-28 2015-09-15 Bromium, Inc. Mapping free memory pages maintained by a guest operating system to a shared zero page within a machine frame
US9063866B1 (en) * 2010-07-12 2015-06-23 Vmware, Inc. Page table data structure for online classification of memory pages based on activity level
US8832390B1 (en) * 2010-07-12 2014-09-09 Vmware, Inc. Online classification of memory pages based on activity level using dynamically adjustable scan rates
US9032398B2 (en) * 2010-07-12 2015-05-12 Vmware, Inc. Online classification of memory pages based on activity level represented by one or more bits
US8990531B2 (en) 2010-07-12 2015-03-24 Vmware, Inc. Multiple time granularity support for online classification of memory pages based on activity level
US20120017039A1 (en) * 2010-07-16 2012-01-19 Plx Technology, Inc. Caching using virtual memory
KR101257691B1 (ko) * 2011-08-12 2013-04-24 아주대학교산학협력단 메모리 컨트롤러 및 이의 데이터 관리방법
CN104115132B (zh) * 2011-12-22 2018-02-06 英特尔公司 借助于存储器通道关闭的功率节约
US10114750B2 (en) * 2012-01-23 2018-10-30 Qualcomm Incorporated Preventing the displacement of high temporal locality of reference data fill buffers
US20130326151A1 (en) * 2012-05-31 2013-12-05 Semiconductor Energy Laboratory Co., Ltd. Memory management system and program
JP5624583B2 (ja) * 2012-05-31 2014-11-12 株式会社東芝 プログラム、計算処理装置、メモリ管理方法および計算機
US20140089564A1 (en) * 2012-09-27 2014-03-27 Skymedi Corporation Method of data collection in a non-volatile memory
CN103914363B (zh) * 2012-12-31 2016-10-26 华为技术有限公司 一种内存监控方法及相关装置
JP5989574B2 (ja) * 2013-02-28 2016-09-07 株式会社東芝 計算機、メモリ管理方法およびプログラム
US10102148B2 (en) 2013-06-13 2018-10-16 Microsoft Technology Licensing, Llc Page-based compressed storage management
US9135472B2 (en) 2013-10-31 2015-09-15 Square, Inc. Systems and methods for secure processing with embedded cryptographic unit
US9684625B2 (en) * 2014-03-21 2017-06-20 Microsoft Technology Licensing, Llc Asynchronously prefetching sharable memory pages
CN106104480A (zh) 2014-04-03 2016-11-09 斯特拉托斯卡莱有限公司 使用相似性保留签名的集群范围的内存管理
US9330015B2 (en) * 2014-06-11 2016-05-03 Vmware, Inc. Identification of low-activity large memory pages
US9501422B2 (en) * 2014-06-11 2016-11-22 Vmware, Inc. Identification of low-activity large memory pages
US9390028B2 (en) 2014-10-19 2016-07-12 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines
US9912748B2 (en) 2015-01-12 2018-03-06 Strato Scale Ltd. Synchronization of snapshots in a distributed storage system
EP3126987A4 (en) * 2015-02-26 2017-11-22 Strato Scale Ltd. Using access-frequency hierarchy for selection of eviction destination
US9632924B2 (en) 2015-03-02 2017-04-25 Microsoft Technology Licensing, Llc Using memory compression to reduce memory commit charge
US10037270B2 (en) 2015-04-14 2018-07-31 Microsoft Technology Licensing, Llc Reducing memory commit charge when compressing memory
US9871895B2 (en) * 2015-04-24 2018-01-16 Google Llc Apparatus and methods for optimizing dirty memory pages in embedded devices
US9715268B2 (en) 2015-05-08 2017-07-25 Microsoft Technology Licensing, Llc Reducing power by vacating subsets of CPUs and memory
CN105022978B (zh) * 2015-06-30 2020-05-05 广州华多网络科技有限公司 一种信息识别方法以及装置
US9916238B2 (en) * 2015-08-25 2018-03-13 Sandisk Technologies Llc Memory system and method for performing garbage collection on blocks based on their obsolescence patterns
TWI751990B (zh) * 2015-12-24 2022-01-11 美商英特爾股份有限公司 衝突罩生成
US10152427B2 (en) 2016-08-12 2018-12-11 Google Llc Hybrid memory management
US10037173B2 (en) * 2016-08-12 2018-07-31 Google Llc Hybrid memory management
US10042737B2 (en) 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10031833B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10031834B2 (en) * 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10489273B2 (en) 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US10324851B2 (en) 2016-10-20 2019-06-18 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache
US10310963B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
US10540250B2 (en) 2016-11-11 2020-01-21 Microsoft Technology Licensing, Llc Reducing storage requirements for storing memory addresses and values
US10410202B1 (en) 2016-12-31 2019-09-10 Square, Inc. Expedited booting with brownout monitoring
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
US10296442B2 (en) 2017-06-29 2019-05-21 Microsoft Technology Licensing, Llc Distributed time-travel trace recording and replay
US10459824B2 (en) 2017-09-18 2019-10-29 Microsoft Technology Licensing, Llc Cache-based trace recording using cache coherence protocol data
US10410189B2 (en) 2017-09-30 2019-09-10 Square, Inc. Scanning system with direct access to memory
US10558572B2 (en) 2018-01-16 2020-02-11 Microsoft Technology Licensing, Llc Decoupling trace data streams using cache coherence protocol data
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
US10642737B2 (en) 2018-02-23 2020-05-05 Microsoft Technology Licensing, Llc Logging cache influxes by request to a higher-level cache
US10496537B2 (en) 2018-02-23 2019-12-03 Microsoft Technology Licensing, Llc Trace recording by logging influxes to a lower-layer cache based on entries in an upper-layer cache
CN113168398A (zh) 2019-02-01 2021-07-23 惠普发展公司,有限责任合伙企业 基于遥测数据的设备的升级确定
EP3948549B1 (en) * 2019-03-29 2024-05-08 INTEL Corporation Apparatus, method, and system for collecting cold pages
US11237981B1 (en) * 2019-09-30 2022-02-01 Amazon Technologies, Inc. Memory scanner to accelerate page classification
US11222704B1 (en) * 2020-12-17 2022-01-11 Micron Technology, Inc. Power state aware scan frequency
US11393548B2 (en) * 2020-12-18 2022-07-19 Micron Technology, Inc. Workload adaptive scans for memory sub-systems
US20220317925A1 (en) * 2021-03-31 2022-10-06 Advanced Micro Devices, Inc. Methods and apparatus for offloading tiered memories management
US11755244B2 (en) * 2021-04-22 2023-09-12 EMC IP Holding Company, LLC System and method for smart NVMeOF disk array enclosure deep background data reduction offload

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04230508A (ja) 1990-10-29 1992-08-19 Internatl Business Mach Corp <Ibm> 低電力消費メモリ装置
TW212840B (en) 1992-04-22 1993-09-11 Ibm Multi-bit vector for page aging
US6742097B2 (en) 2001-07-30 2004-05-25 Rambus Inc. Consolidation of allocated memory to reduce power consumption
US6901491B2 (en) 2001-10-22 2005-05-31 Sun Microsystems, Inc. Method and apparatus for integration of communication links with a remote direct memory access protocol
EP1408510A3 (en) 2002-05-17 2005-05-18 Matsushita Electric Industrial Co., Ltd. Memory control apparatus, method and program
US7761873B2 (en) 2002-12-03 2010-07-20 Oracle America, Inc. User-space resource management
US7788461B2 (en) 2004-04-15 2010-08-31 International Business Machines Corporation System and method for reclaiming allocated memory to reduce power in a data processing system
US7272734B2 (en) 2004-09-02 2007-09-18 International Business Machines Corporation Memory management to enable memory deep power down mode in general computing systems
US20060117160A1 (en) 2004-12-01 2006-06-01 Intel Corporation Method to consolidate memory usage to reduce power consumption
US7430694B2 (en) 2005-01-20 2008-09-30 Lsi Corporation Memory BISR architecture for a slice
US7421598B2 (en) 2005-02-09 2008-09-02 International Business Machines Corporation Dynamic power management via DIMM read operation limiter
KR100704037B1 (ko) 2005-04-15 2007-04-04 삼성전자주식회사 이종의 비휘발성 메모리를 가지는 데이터 저장장치와 그의구동 방법
GB2426360A (en) 2005-05-18 2006-11-22 Symbian Software Ltd Reorganisation of memory for conserving power in a computing device
US8010764B2 (en) 2005-07-07 2011-08-30 International Business Machines Corporation Method and system for decreasing power consumption in memory arrays having usage-driven power management
JP2007272573A (ja) 2006-03-31 2007-10-18 Hitachi Ltd 低消費電力化メモリ管理方法及びメモリ管理プログラム
KR101498673B1 (ko) * 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
US8245060B2 (en) * 2009-10-15 2012-08-14 Microsoft Corporation Memory object relocation for power savings
US8402232B2 (en) * 2009-12-23 2013-03-19 Oracle America, Inc. Memory utilization tracking

Also Published As

Publication number Publication date
US9015441B2 (en) 2015-04-21
CN102859500B (zh) 2016-08-03
TW201202930A (en) 2012-01-16
CN102859500A (zh) 2013-01-02
EP2564321A2 (en) 2013-03-06
WO2011139465A3 (en) 2012-03-01
WO2011139465A2 (en) 2011-11-10
EP2564321A4 (en) 2015-01-14
EP2564321B1 (en) 2017-09-27
US20110271070A1 (en) 2011-11-03

Similar Documents

Publication Publication Date Title
TWI519948B (zh) 記憶體使用掃描
US9235500B2 (en) Dynamic memory allocation and relocation to create low power regions
US20130290471A1 (en) Managing transfer of data from a source to a destination machine cluster
US10417137B2 (en) Flushing pages from solid-state storage device
JP6192660B2 (ja) ステージング・エリアを管理するためのコンピュータ実施プロセス、コンピュータ・プログラム製品、装置
US9483393B1 (en) Discovering optimized experience configurations for a software application
CN111324427B (zh) 一种基于dsp的任务调度方法及装置
US9268609B2 (en) Application thread to cache assignment
CN107273200B (zh) 一种针对异构存储的任务调度方法
US10664458B2 (en) Database rebalancing method
WO2020211679A1 (en) Resource allocation based on comprehensive i/o monitoring in a distributed storage system
CN100458792C (zh) 用于管理海量存储系统的方法和数据处理系统
JP2011039800A (ja) データベース管理方法およびシステム並びにその処理プログラム
JP5104855B2 (ja) 負荷分散プログラム、負荷分散方法、及びストレージ管理装置
US9817583B2 (en) Storage system and method for allocating virtual volumes based on access frequency
Yi et al. Cffq: I/o scheduler for providing fairness and high performance in ssd devices
US11809733B2 (en) Systems and methods for object migration in storage devices
US10996977B2 (en) Information processing apparatus and process management method that control a number of processes executed in parallel
US9569350B2 (en) Multidimensional resource manager/allocator
US11561934B2 (en) Data storage method and method for executing an application with reduced access time to the stored data
US11500825B2 (en) Techniques for dynamic database access modes
CN113609074A (zh) 医学影像文件入库归档的方法及相关装置
JP2006277530A (ja) 割当システム、割当装置、割当方法及びそのプログラム
Tan et al. EML: An I/O scheduling algorithm in large-scale-application environments
US20240020154A1 (en) Management device, arithmetic processing device, and load distribution method and computer-readable recording medium storing program of arithmetic processing device

Legal Events

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