CN111316220A - 计算机存储器的性能计数器 - Google Patents

计算机存储器的性能计数器 Download PDF

Info

Publication number
CN111316220A
CN111316220A CN201880072567.6A CN201880072567A CN111316220A CN 111316220 A CN111316220 A CN 111316220A CN 201880072567 A CN201880072567 A CN 201880072567A CN 111316220 A CN111316220 A CN 111316220A
Authority
CN
China
Prior art keywords
performance
value
count value
processor
memory
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
CN201880072567.6A
Other languages
English (en)
Other versions
CN111316220B (zh
Inventor
J·G·本内特
S·塔瓦拉埃
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Priority to CN202310869702.2A priority Critical patent/CN116755634A/zh
Priority to CN202310869840.0A priority patent/CN117055806A/zh
Publication of CN111316220A publication Critical patent/CN111316220A/zh
Application granted granted Critical
Publication of CN111316220B publication Critical patent/CN111316220B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F12/023Free address space management
    • 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/061Improving I/O performance
    • 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/3409Recording 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 for performance assessment
    • 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
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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
    • 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/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
    • G06F3/0649Lifecycle management
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0673Single storage device
    • 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/0673Single storage device
    • G06F3/068Hybrid storage device
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Preparing Plates And Mask In Photomechanical Process (AREA)
  • Traffic Control Systems (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

在一些示例中,计算机存储器的性能计数器可以包括查明与计算机存储器的存储器地址范围相关联的请求。存储器地址范围可以被分配给多个指定性能层中的指定性能层。与存储器地址范围的性能属性相关联的性能值可以被查明,并且权重值可以被确定。基于所查明的请求和权重值,与关联于存储器地址范围的计数器相关联的计数值可以被递增。可以进行如下确定:其是关于存储器地址范围是否要被分配给多个指定性能层中的不同的指定性能层。基于存储器地址范围要被分配给不同的指定性能层的确定,存储器地址范围可以被分配给不同的指定性能层。

Description

计算机存储器的性能计数器
背景技术
计算机系统可以包括各种类型的计算机存储器。例如,计算机存储器可以包括易失性存储器,诸如,用于计算机系统中的主要存储的随机存取存储器(RAM)。与易失性存储器相比,非易失性存储器可以用于辅助存储或永久存储。非易失性存储器的示例包括只读存储器、闪存、磁性计算机存储设备等。
计算机存储器可以是不均匀的,因为计算机存储器的不同层可以包括用于质量的不同值,包括时延、吞吐量、容量、耐久性(endurance)和耐用性(durability)。时延可以被描述为在用于传输数据或执行命令的关联指令之后开始数据传输或命令执行之前的延迟。吞吐量可以被描述为可以从计算机存储器读取数据或将数据存储到计算机存储器中的速率。进一步地,耐久性可以被描述为在计算机存储器变得不可靠之前可以被应用于计算机存储器的程序和/或擦除周期的数量。耐用性可以被描述为永久存储器的属性,该属性描述了数据在不施加功率的情况下可以在存储器中保持有效多长时间。
为了优化计算机系统性能,计算机存储器中的内容可能需要被放置在计算机存储器的适当层中。例如,某些内容可能需要被放置在包括指定时延的计算机存储器的层中,而其他内容可能需要基于吞吐量、耐久性和/或其他因素被放置在其他层中。在这方面,选择将放置内容的计算机存储器的层使得所选层与使用该层的应用(或另一设备)的行为相匹配在技术上具有挑战性。预测应用的行为以选择适当的层在技术上也具有挑战性,其中与计算机系统相关联的操作系统或管理程序可以利用预测的行为来做出关于内容在特定层中的放置的决策。更进一步地,由于不同层的行为和内容在特定层中的放置可能随时间变化,因此动态地修改内容在计算机存储器的特定层中的放置在技术上具有挑战性。
计算机存储器的一层(或通常的存储位置)也可能受到来自访问或以其他方式利用该层的内容的多个源的争用(contention)。例如,特定层可以包括适当放置的内容。然而,由于对该特定层的访问数量相对大,因此使用该特定层可能会导致与该特定层相关联的计算机系统性能降低。在这方面,预测特定层的使用(usage)何时超过指定使用在技术上具有挑战性。修改特定层的使用来满足指定使用以增加或以其他方式保持指定成本、性能或功耗水平的计算机系统的性能在技术上也具有挑战性。
更进一步地,计算机存储器的层可以被定义以通过“着色”映射到缓存中,其中分配有相同颜色的层的所有部分将竞争缓存中的相同放置。如果具有相同颜色的两组或更多组分离的存储器被频繁使用,则这种竞争可以降低计算机存储器的性能。在这方面,由于使用模式随时间而变化,并且进一步地由于在可能分配存储器区域时对该区域的计划使用的了解有限,静态地选择避免这种性能下降的颜色在技术上具有挑战性。在计算机系统上监测和定位发生这种冲突的区域在技术上也具有挑战性。
附图说明
本公开的特征通过示例被图示,并且在以下(多个)附图中不受限制,其中相同的数字指示相同的元件,在附图中:
图1图示了根据本公开的实施例的用于计算机存储器装置的性能计数器的布局;
图2图示了根据本公开的实施例的布局的示例,该布局包括用于测量图1的计算机存储器装置的性能计数器的计算机存储器使用的计数器;
图3图示了根据本公开的实施例的用于计算机存储器的性能计数器的框图;
图4图示了根据本公开的实施例的用于计算机存储器的性能计数器的方法的流程图;以及
图5图示了根据本公开的另一实施例的用于计算机存储器的性能计数器的框图。
具体实施方式
出于简单和说明性的目的,本公开通过主要参照示例来描述。在以下描述中,许多特定细节被阐述以便提供对本公开的透彻理解。然而,将明显的是,本公开可以在不限于这些特定细节的情况下被实践。在其他实例中,一些方法和结构未被详细描述,以免不必要地混淆本公开。
在整个本公开中,术语“一”和“一个”旨在表示特定元素中的至少一个。如本文所使用的,术语“包括(includes)”是指包括但不限于,术语“包括(including)”是指包括但不限于。术语“基于”是指至少部分地基于。
本文公开了用于计算机存储器的性能计数器的装置、用于计算机存储器的性能计数器的方法以及在其上存储有机器可读指令以提供用于计算机存储器的性能计数器的非瞬态计算机可读介质。本文所公开的装置、方法和非瞬态计算机可读介质提供了对计算机存储器的存储器模块、大容量存储器等的计数器的实现。计数器可以用于通过获得应用(或另一设备)的行为数据以将内容放置在计算机存储器的适当层中的计算机存储器中来至少解决上面提到的技术挑战。计数器还可以通过定位可能的广泛争用来至少解决上面提到的技术挑战,这使得其他步骤能够被发起以降低该争用。存储器模块可以包括双倍数据速率(DDR)双列直插式存储器模块(DIMM)等,并且大容量存储器可以包括只读存储器、闪存等。
每个计数器可以监测计算机系统内的计算机存储器的特定范围的活动。例如,多个计数器可以被使用,并且包括跨越计算机系统的整个计算机存储器的存储器范围。每个存储器范围可以对应于计算机存储器的块,操作系统(OS)或管理程序可能能够在计算机存储器的不同的指定性能层之间移动该块。
根据示例,计数器可以包括用于读取活动和写入活动以及不承载数据的其他耗时活动(诸如,刷新周期、程序周期和空闲时间)的分离的计数器。备选地或附加地,计数器可以考虑读取活动和写入活动的聚合。备选地或附加地,计数器可以包括仅用于读取活动的计数器。备选地或附加地,计数器可以包括仅用于写入活动的计数器。备选地或附加地,计数器可以包括用于记录周期混合和流水线命令活动的计数器。
关于所使用的多个计数器,根据示例,计数器的数量可能足以对足够数量的区域进行计数,以允许系统的整个存储器覆盖范围内的存储器活动被及时地扫描,或者在默认情况下对标准大小的所有区域进行计数,它们都是用于移动以具有单独的计数器的候选。因此,充足数量的计数器可以被灵活地分配给感兴趣的存储器区域。例如,计数器可以被分配给计算机存储器的存储器模块,以使内容在存储器模块的不同的指定性能层之间移动。
计数器还可以包括汇总(summary)计数器。在这方面,即使每个页面都可以包括计数器,汇总计数器也可以提供DIMM的总计数。汇总计数器可以提供对总活动是否低于关注阈值的确定。
关于计数器大小,根据示例,计数器可以足够大以捕获在关联计数值的检查之间的间隔中期望的完整计数范围。备选地或附加地,当达到最大计数值时,计数器可以饱和。备选地或附加地,自由运行的计数器可以以全计数回绕,回到零,并且对关联计数值的检查可以可选地将计数值清零。备选地或附加地,饱和计数器可以在检查计数值之后被设置为零。备选地或附加地,饱和计数器可以指示饱和或溢出条件。通常,任何类型的计数器(自由运行或饱和)都可以在检查后被归零。
关于计算机系统性能,计数器可以被用于各种性能测量目的。例如,除了指导在适当的指定性能层中放置存储块之外,计数器还可以用于降低来自访问或以其他方式利用特定层(或通常是存储位置)的内容的多个源的争用。在这方面,计数器可以标识争用,其然后可以被用于触发降低争用的其他步骤。
因此,本文所公开的计数器可以提供关于实际计算机存储器的使用强度的信息的同时且有效的收集。在这方面,计算机存储器可以被划分为块范围(诸如,由中央处理单元(CPU)映射表支持的页面范围),以用于指导操作系统或管理程序算法,这些算法决定将内存块放置到不同的非均匀存储器访问(NUMA)或指定性能层中。
本文所公开的计数器可以包括诸如页面大小、虚拟到物理映射、“热”页面的方面、由乘法器基于访问时延的对计数器的加载以及乘法器基于读/写访问的突发性的调整(例如,潜在排队延迟的指示)等属性。管理程序可以基于{Sum(计数*时延*突发性)}的聚合利用计数器来执行虚拟到物理页面映射的重新分配。计数器可以基于“漏桶”或精确的计数值分析而被分析。在这方面,精确的计数值分析可能会导致计数器超限(overrun)。超限后,漏桶方法或对计数器进行重新装定可以提供对访问/操作的“热度”或“成本”的定性测量。计数器可以提供“已计数的箱”到“数字”的映射,其可以被存储到寄存器中以用于后续读取(例如,(正常,1)、(大量使用,2)、(突发使用,3)、…、等)。针对计数器,改变计数模式可能基于超限(例如,如果发生超限,那么例如进入日志,然后在READ上将计数器清零)。
关于计数器使用,管理程序可以读取所有计数器的内容(例如,最多100000或更多的计数器)并对计数值进行排序。例如,管理程序可以标识最低和最高计数值。在这方面,最高计数的指示可以表示使用最大的页面。缓存系统可以例如通过使用物理存储器地址和虚拟地址(PA、VA)映射来标识最热的页面,将竞争者移动到“更快”的更昂贵的存储器,并将最冷的页面移动到相对“较慢”的大容量存储器。在双套接口服务器中,虚拟机可以位于任一中央处理单元(CPU)上。进一步地,虚拟机可以基于存储器的“热度”(例如,经由计数器被确定)而被移动(例如,分布)到不同的CPU。计数器可以用于基于“热度”标准来重新平衡虚拟机或被分配给每个虚拟机的页面,以重新分配DIMM功率(例如,较少的计算机系统功率可以等于增加的存储器可靠性)。
根据示例,本文所公开的装置、方法和非瞬态计算机可读介质可以包括计算机系统,该计算机系统包括处理元件,该处理元件包括存储器接口和存储器子系统。存储器子系统可以包括存储器缓冲器/控制器(例如,到主机存储器控制器的接口)。存储器子系统可以包括用于对事件进行计数的智能计数器(例如,读取周期、写入周期、刷新周期、流水线化的周期等)。智能计数器可以包括多个计数器(例如,基于存储器容量和页面大小)。页面大小可以基于以下明智选择,其基于测量的粒度、虚拟机需求等。智能计数器可以提供累加计数和处理。智能计数器的测量单位和规模可以是定量的和定性的。定量测量单位可以包括线性标度(scale)、分箱(bin)标度、饱和/溢出后的对数标度、饱和桶、漏桶、滑动窗口等。定性测量单位可以包括热图等。智能计数器可以包括根据(媒体时延)*(访问频率)*(突发性)而被确定的加权总和。在这方面,计数器可以基于访问时延由“固定”乘法器加载。根据另一示例,计数器可以基于周期的“突发性”(例如,流水线化的周期预测排队延迟)由“所计算的”乘法器加载。智能计数器可以提供总线利用率、吞吐量和效率的指示(例如,数据移动、空闲、刷新、周转周期等)。进一步地,智能计数器可以提供对“热”存储器页面的确定(例如,以提供用于缓冲器/控制器“绘制”一个“热图”的方法以及智能缓冲器开发“热图”的能力)。存储器子系统还可以包括存储器介质(例如,存储器设备)。存储器介质可以包括不同的存储器类型(例如,不同的时延和不同的容量)。
根据示例,针对本文所公开的装置、方法和非瞬态计算机可读介质,计算机系统还可以包括管理程序,例如,以管理虚拟机。在这方面,管理程序可以为每个虚拟机提供虚拟地址(VA)到物理存储器地址(PA)的明智动态映射。管理程序可以提供“热”页面的指示(基于智能计数器的采样)。管理程序可以提供本文所公开的“热图”的开发。管理程序可以基于观察到的存储器业务(例如,智能计数器寄存器的读取/采样)提供重新分配。管理程序可以为存储器访问时延、功耗和存储器子系统总成本提供优化。管理程序可以提供虚拟机的重新分配与每个虚拟机所使用的页面的重新分配。进一步地,管理程序可以提供虚拟机到不同的CPU和存储器介质类型的重新分配。
针对本文所公开的装置、方法和非瞬态计算机可读介质,本文描述的模块可以是硬件和编程以实现相应模块的功能性的任何组合。在本文描述的一些示例中,硬件和编程的组合可以以多种不同方式来实现。例如,用于模块的编程可以是被存储在非瞬态机器可读存储介质上的处理器可执行指令,并且用于模块的硬件可以包括用于执行那些指令的处理资源。在这些示例中,实现这种模块的计算设备可以包括存储指令的机器可读存储介质和用于执行指令的处理资源,或者该机器可读存储介质可以被计算设备和处理资源分离地存储和访问。在一些示例中,一些模块可以在电路装置中被实现。
图1图示了根据本公开的实施例的用于计算机存储器的性能计数器的装置(在下文中也称为“装置100”)的布局。
参照图1,装置100可以包括请求确定模块102,用以查明(ascertain)与计算机存储器108的存储器地址范围106相关联的请求104。存储器地址范围106可以被分配给多个指定性能层110中的指定性能层。例如,基于诸如时延、吞吐量、耐久性等因素,指定性能层可以包括不同类型的指定性能。存储器地址范围106可以对应于计算机存储器108中的页面112,其中页面112包括由请求104访问的内容114。如图1所示,页面(1)至(N)可以各自被分配给多个指定性能层110中的指定性能层。计算机存储器108可以包括诸如RAM等易失性存储器、诸如只读存储器、闪存、磁性计算机存储设备等非易失性存储器。计算机存储器108可以被设置在计算机系统116上。
计数器控制模块118可以查明与存储器地址范围106的性能属性相关联的性能值。例如,性能属性可以包括与存储器地址范围106相关联的时延、突发性、读写请求周期的分散性等。计数器控制模块118可以基于所查明的性能值来确定权重值。进一步地,计数器控制模块118可以基于所查明的请求104和所确定的权重值来递增与关联于存储器地址范围的计数器120相关联的计数值。在这方面,计算机存储器108可以包括多个计数器122。如图1所示,页面(1)至(N)可以各自被分配给计数器122中的对应计数器(1)至(N)。
计数值分析模块124可以基于与计数器120相关联的计数值126的分析来确定存储器地址范围106是否要被分配给多个指定性能层110中的不同的指定性能层。
基于存储器地址范围106要被分配给不同的指定性能层的确定,存储器地址范围分配模块128可以将存储器地址范围106分配给不同的指定性能层。
备选地或附加地,计数值分析模块124可以基于与计数器120相关联的计数值126的分析来确定例如由于争用而导致的存储器地址范围106的使用是否超过指定使用。在这方面,存储器地址范围分配模块128可以修改存储器地址范围106的使用以降低关于存储器地址范围106的争用,平衡包括该计算机存储器的计算机系统的机器资源,或者以其他方式提高关于存储器地址范围的性能。在这方面,资源可以包括带宽、功率等。
关于争用,如本文进一步详细公开的,假设计算机系统116的DRAM(未示出)被用作另一存储器系统(例如,DDR DIMM)的缓存,则可以有多个源被映射到缓存的目标存储器区域。在这方面,计数值分析模块124可以确定将多个源映射到缓存的目标存储器区域中是否是可接受的,或者该映射是否应该通过将特定物理存储器的计数值126与指定阈值进行比较来改变。在这方面,物理存储器可以表示与计数值126相关联的缓存。基于特定物理存储器的计数值126超过了指定阈值的确定,源映射模块130可以改变源(或多个源)到不同的物理存储器的映射,该不同的物理存储器被用作重新映射的源的缓存。通过这种方式,关于原始映射的物理存储器的争用可以被降低。
图2图示了根据本公开的实施例的包括用于测量装置100的计算机存储器使用的计数器的布局的示例。
参照图2,根据示例,计数器122可以被添加到DIMM(例如,DDR DIMM 200)和大容量存储器202。针对图2的示例,DDR DIMM200可以包括DIMM控制器204和动态随机存取存储器(DRAM)封装206。进一步地,大容量存储器202可以包括大容量存储器控制器208和大容量存储器封装210。
针对图2的示例,每个页面112可以包括针对读取操作数量的计数器120、分别针对写入操作数量的另一计数器120以及用于对与非数据承载周期(诸如,空闲周期、周转周期和刷新周期)相关联的时钟/周期的数量进行计数的其他计数器。每个计数器120可以覆盖与管理程序可以管理的页面112的大小相匹配的计算机存储器108的存储器范围。例如,对于x64兼容计算机系统,页面112的大小可以是2MiB。根据另一示例,对于ARM-64计算机系统,页面112的大小可以是1MiB。页面112的大小可以类似地针对其他类型的计算机系统而被确定。例如,不同大小的页面可以通过添加计数器值来容纳。例如,对于x64兼容计算机系统和ARM-64计算机系统,存储器范围可以在1MiB上被标准化,从而为x64兼容计算机系统添加成对的计数器值。因此,存储器为16GiB的DIMM可以包括16,384个读取计数器和16,384个写入计数器。
根据示例,计数器122可以是在255处饱和并且在再次采样之前被清零的8位计数器。在这方面,将计数器值复制到分离的静态存储器中的快照模式可以被使用,然后计数器可以被清零。
根据示例,计数器122可以在没有快照的情况下被采样。在这方面,计数器可以按照稳定的节奏被采样,该节奏在为每个计数器读取计数值之间提供大约相同的间隔。
针对图2的示例,关于图1的页面(1)至(N),OS或管理程序可以使用计数值来定位大容量存储器202中的“热页面”或DIMM(例如,DDR DIMM 200)中的“冷页面”。来自大容量存储器202的热页面可以被移动到DIMM。类似地,DIMM中的冷页面可以被移动到大容量存储器202。
“热页面”可以指的是关联存储器地址范围106的计数值126超过指定阈值的页面。备选地,阈值可以被设置,其中即使该页面已经丢弃了计算机系统116中的最大活动(由于计算机系统可能是空闲的),该页面也不可以被视为热的。“冷页面”可以指的是关联存储器地址范围106的计数值126低于指定阈值的页面。
如本文关于图1所公开的,计数值分析模块124可以基于与计数器120相关联的计数值126的分析来确定存储器地址范围106是否要被分配给多个指定性能层110中的不同的指定性能层。进一步地,基于存储器地址范围106将被分配给不同的指定性能层的确定,存储器地址范围分配模块128可以将存储器地址范围106分配给不同的指定性能层。在这方面,存储器地址范围分配模块128可以有效地移动“热页面”和“冷页面”的位置。即,存储器地址范围分配模块128可以基于对页面是“热页面”还是“冷页面”的确定来有效地重新映射特定页面位于何处。
如本文关于图1所公开的,计数值分析模块124可以基于与计数器120相关联的计数值126的分析来确定存储器地址范围106是否要被分配给多个指定性能层110中的不同的指定性能层。在这方面,计数值126可以在包括或不包括加权因子的情况下被分析。
例如,通过与关联于计算机存储器108的存储器地址范围106的请求数量(例如,每个请求104)成正比地递增计数值126,计数值126可以在不包括加权因子的情况下被分析。
备选地或附加地,通过应用考虑与计算机存储器108的存储器地址范围106相关联的请求104的不同方面的函数,计数值126可以在包括加权因子的情况下被分析。例如,加权因子可以被确定为时延和访问频率的乘积。例如,与指定性能层相关联的时延可以是固定的。然而,如果与指定性能层相关联的时延发生变化(例如,从100纳秒(ns)增加到300ns),那么关联计数值可以增加对应的权重(例如,针对从100ns增加到300ns,权重为3),以指示关联存储器区域的利用率。备选地或附加地,与指定性能层相关联的时延可以例如由于请求的排队而改变。计数器可以通过追踪读/写周期混合、周期序列和命令流水线强度来推断这种排队延迟。
备选地或附加地,通过考虑与请求相关的活动的突发程度,计数值126可以在包括加权因子的情况下被分析。例如,存储器控制器可以标识到达关联的存储器模块的请求周期的分散性(例如,读取到写入、连续读取等),这可以指示在存储器控制器处的排队。在这方面,计数值可以根据模块对操作成本的估计(例如,活动的突发程度)被分配权重。
如本文关于图1所公开的,计数器控制模块118可以基于所查明的请求104递增与存储器地址范围相关联的计数器120。进一步地,计数值分析模块124可以基于与计数器120相关联的计数值126的分析来确定存储器地址范围106是否要被分配给多个指定性能层110中的不同的指定性能层。在这方面,计数值126可以基于所查明的每个请求104的增量。备选地或附加地,计数值126可以基于“漏桶”方法来确定。针对“漏桶”方法,计数值可以根据所查明的请求104被递增,但是针对每个指定的时间段(例如,毫秒或时钟数),计数器的总当前计数值的指定量(例如,1/10、1/4或1/3)可以从总当前计数值中被减去。通过这种方式,由计数值分析模块124分析的计数值126可以表示相对于关联计数器的相对新的活动,因此可以忽视较旧的活动。指定量的总当前计数值的移除可以表示将衰减(例如,指数衰减)分配给计数值。
备选地或附加地,关于计数值分析模块124的操作,如果计数值126在指定的时间段(例如,120秒)内未由计数值分析模块124分析,那么计数器可以被清空,并且指定持续时间内(例如,在120秒内)的计数值可以被分析。
备选地或附加地,关于计数值分析模块124的操作,DRAM可以主要包括一种大小(例如,缓存行大小)的读/写。然而,根据读取或写入是短还是长,不同的成本(例如,权重)可以被分配给计数值。
一旦计数值由计数值分析模块124分析,关联计数器的计数值就可以被设置为零。例如,一旦计数值由计数值分析模块124读取,计数值就可以被设置为零。
关于计数器超限,当计数器达到最大计数值时,计数器可以进行分箱,其可以采用对数函数的形式。在这方面,每个后续的计数增量可以由递增地或非递增地增加计数值权重的函数加权。例如,关于增量增加,一旦计数器达到最大计数值,则下一计数值可以被加权5倍,随后的计数值可以被加权10倍等。关于非增量增加,一旦计数器达到最大计数值,则下一计数值可以被加权5倍,随后的计数值可以被加权20倍等。备选地或附加地,当一个计数器达到溢出条件时,同一组中的所有计数器都可以开始使用新的权重因子。该条件将在该组计数器的权重因子寄存器中被指示。备选地或附加地,一个计数器中的溢出条件可以使同一组中的所有计数器向右移其位值(例如,将其内容除以2)。该右移条件可以在权重因子寄存器(或除法因子寄存器)中被指示。
关于争用,如本文参照图1所公开的,计数值分析模块124可以基于与计数器120相关联的计数值126的分析来确定例如由于争用而导致的存储器地址范围106的使用是否超过指定使用。在这方面,存储器地址范围分配模块128可以修改存储器地址范围106的使用以降低关于存储器地址范围106的争用。例如,假设计算机系统116的DRAM(未示出)正在被用作另一存储器系统(例如,DDR DIMM 200)的缓存时,可能有多个源被映射到该缓存的目标存储器区域中。例如,多个虚拟地址可以关于DRAM被映射到一个物理存储器。通常,存储器地址空间的多个部分可以被设置以将物理存储器用作缓存。在该示例中,多个虚拟地址到物理存储器的映射可以由计数值分析模块124评估,以确定该映射是否可接受,或者该映射是否应该被改变。
针对存储器地址空间的多个部分可以使用物理存储器作为缓存的示例,可能存在两个或更多个存储器地址空间部分相对大量使用缓存的情况。这种相对大量的使用可能会导致争用,例如由于在用作缓存的物理存储器的改变期间时间的浪费,这可能会降低计算机系统116的性能。
根据示例,计数值分析模块124可以通过将特定物理存储器的计数值126与指定阈值进行比较来确定该映射是否可接受,或者该映射是否应该被改变。基于对特定物理存储器的计数值126超过指定阈值的确定,源映射模块130可以改变源(或多个源)到不同的物理存储器的映射,该不同的物理存储器被用作重新映射的源的缓存。通过这种方式,关于原始映射的物理存储器的争用可以被降低。如果在改变源到不同物理存储器的映射之后争用未被降低,则另一个源(或多个其他源)的映射可以被改变到不同的物理存储器,直到争用被令人满意地降低为止。
如本文所公开的,“热页面”可以指计数值的数量超过指定阈值的页面。在这方面,可能有多个源可能正在使用相同的存储器区域作为缓存,因此,如果有不同的源具有应被放置在缓存中的高度使用的页面(例如,热页面),则可能会引起争用,因此多个源可能会尝试使用相同的缓存空间。
如果最热页面上的活动级别被降低,则关于其他页面的活动可以平衡到更均匀的级别。在这方面,即使发生某些争用,总体争用级别也可以通过改变源到不同物理存储器的映射来降低。因此,计算机系统116的物理资产可以基于逻辑到物理定义的重新映射来重新分配。
关于计数器122的使用,当管理程序读取计数器122时,可能存在多达100个或数千个计数器122。管理程序可以基于计数值对计数器122进行排序,并标识最大或最小的计数值。针对最小的计数值,对于本文所公开的缓存操作和争用,最小的计数值可以被标识为用于重新映射到使用较少的位置的目的地。关于多个指定性能层,最小的计数值可以表示降级的候选,以移动到较低的指定性能层。关于最高计数值,对于本文所公开的缓存操作和争用,针对最热页面,多个竞争者之一可以被移动到更大的页面。针对多个指定性能层,最低性能层中的最热页面可以被移动到较高的指定性能层。
针对最高计数值,计数值可以按照可能标识具有最高计数值的页面的指定频率被读取。例如,如果计数器122饱和,则指定频率可以被降低,使得没有一个计数器或只有很少的计数器饱和,从而提供了哪些页面正在接收最大量使用的指示。
关于计数器122的其他应用,假设服务器包括两个套接口,并且虚拟机被分配给任一套接口,则服务器中可以有多个虚拟机,并且那些虚拟机可以包括不同级别的活动。如果一些最活跃的虚拟机被分配给一个套接口,则计算机系统116的性能可以通过将虚拟机之一移动到另一套接口来提高,从而使计算机系统116关于系统资源得到平衡。因此,计数器122可以充当存储器活动计数器,以估计其他类型的活动,诸如,CPU使用,以及通过移动设备来重新平衡计算机系统116,以便在系统资源之间获得更高的平衡概率。在这方面,虚拟机的活动可以通过将关于属于特定虚拟机的页面的计数值相加来确定。
关于计数器122的其他应用,存储器总线上的活动可以转化为功耗。在这方面,资源的重新分配可以基于功耗。例如,缓冲器的高计数值可以提供功耗的指示。高计数值可以用于检测过热的特定DIMM。例如,如果在给定的指定性能层上有多个DIMM,并且过热的DIMM正在访问页面,则关于过热的DIMM的活动可以被重新分配给其他DIMM以平衡负载,从而平衡与计算机系统116相关联的功耗。
图3-图5分别图示了根据示例的用于计算机存储器的性能计数器的示例框图300、示例方法400的流程图以及又一示例框图500。框图300、方法400和框图500可以通过示例而非限制的方式在上面参照图1描述的装置100上被实现。框图300、方法400和框图500可以在其他装置中被实践。除了示出框图300之外,图3示出了可以执行框图300的指令的装置100的硬件。该硬件可以包括处理器302和存储器304,该存储器304存储机器可读指令,该机器可读指令在由处理器执行时使处理器执行框图300的指令。存储器304可以表示非瞬态计算机可读介质。图4可以表示用于计算机存储器的性能计数器的示例方法以及该方法的步骤。图5可以表示根据示例的在其上存储有机器可读指令的非瞬态计算机可读介质502,该机器可读指令用以提供计算机存储器的性能计数器。机器可读指令在被执行时使处理器504执行同样在图5中示出的框图500的指令。
图3的处理器302和/或图5的处理器504可以包括单个或多个处理器或其他硬件处理电路,以执行本文描述的方法、功能和其他过程。这些方法、功能和其他过程可以体现为存储在计算机可读介质上的机器可读指令,该计算机可读介质可以是非瞬态的(例如,图5的非瞬态计算机可读介质502),诸如,硬件存储设备(例如,RAM(随机存取存储器)、ROM(只读存储器)、EPROM(可擦除可编程ROM)、EEPROM(电可擦除可编程ROM)、硬盘驱动器和闪存)。存储器304可以包括处理器的机器可读指令和数据可以在运行期间驻留的RAM。
参照图1至图3,尤其是图3所示的框图300,存储器304可以包括指令306,以查明与计算机存储器的存储器地址范围106相关联的请求104。存储器地址范围106可以被分配给多个指定性能层110中的指定性能层。
处理器302可以获取、译码和执行指令308,以查明与存储器地址范围106的性能属性相关联的性能值。
处理器302可以获取、译码和执行指令310,以基于所查明的性能值来确定权重值。
处理器302可以获取、译码和执行指令312,以基于所查明的请求104和所确定的权重值来递增与关联于存储器地址范围106的计数器120相关联的计数值126。
处理器302可以获取、译码和执行指令314,以基于与计数器120相关联的计数值126的分析来确定存储器地址范围106是否要被分配给多个指定性能层110中的不同的指定性能层。
基于存储器地址范围106要被分配给不同的指定性能层的确定,处理器302可以获取、译码和执行指令316以将存储器地址范围106分配给不同的指定性能层。
根据本文所公开的示例,性能属性可以包括与存储器地址范围106相关联的时延。在这方面,与存储器地址范围106的时延属性相关联的时延值可以被查明,并且基于所查明的时延值,权重值可以被确定。
根据本文所公开的示例,性能属性可以包括与存储器地址范围106相关联的请求的间歇增加或减少(例如,突发性)。在这方面,与存储器地址范围106的请求属性的间歇增加或减少相关联的请求值的间歇增加或减少可以被查明,并且基于所查明的请求值的间歇增加或减少,权重值可以被确定。
根据本文所公开的示例,性能属性可以包括与存储器地址范围106相关联的读写请求周期的分散性。读写请求周期可以包括读取到写入、写入到读取、连续读取和/或连续写入。在这方面,与存储器地址范围106的读写请求周期属性的分散性相关联的读写请求周期值的分散性可以被查明,并且基于所查明的读写请求周期值的分散性,权重值可以被确定。
根据本文所公开的示例,基于所查明的性能值,权重值可以通过根据来自基础性能值的性能值的增加或减少成比例地增加或减少基础权重值而被确定(例如,如本文关于从100纳秒(ns)增加到300ns等所公开的)。计数值126的增量增加或减少可以通过将所确定的权重值和与关联于存储器地址范围106的计数器120相关联的基础计数值126增量相乘来确定。基于所查明的请求104,计数值126可以按照所确定的计数值126的增量增加或增量减少来递增。
根据本文所公开的示例,与计数器120相关联的计数值126可以被确定。可以进行如下确定:其是关于自与计数器120相关联的计数值126的确定以来是否已经过去了指定时间段。基于自与计数器120相关联的计数值126的确定以来指定时间段是否已经过去的确定,计数值126可以被降低指定量(例如,如本文关于“漏桶”方法所公开的)。
根据本文所公开的示例,与计数器120相关联的计数值126可以在小于与计数器120相关联的所有计数值的总持续时间的指定持续时间(例如,120秒)内被确定。基于所查明的请求104和所确定的权重值,与关联于存储器地址范围106的计数器120相关联的所确定的计数值126可以被递增。
根据本文所公开的示例,可以进行如下确定:其是关于请求104是否包括相对短的读取、相对短的写入、相对长的读取或相对长的写入。基于所查明的性能值以及请求104是否包括相对短的读取、相对短的写入、相对长的读取或相对长的写入的确定,权重值可以被确定。
根据本文所公开的示例,可以进行如下确定:其是关于计数值126是否等于最大计数值126。基于计数值126等于最大计数值126的确定,权重值可以被确定以在最大计数值126之后递增地增加计数值。
根据本文所公开的示例,可以进行如下确定:其是关于计数值126是否等于最大计数值126。基于计数值126等于最大计数值126的确定,权重值可以被确定以在最大计数值126之后非递增地增加计数值。
参照图1-图2和图4,尤其是图4,针对方法400,在框402,该方法可以包括查明与计算机存储器的存储器地址范围106相关联的请求104。
在框404,该方法可以包括基于所查明的请求104来递增与关联于存储器地址范围106的计数器120相关联的计数值126。
在框406,该方法可以包括根据与计数器120相关联的计数值126和与存储器地址范围106的性能属性相关联的性能值来确定聚合值。
在框408,该方法可以包括基于聚合值的分析来确定存储器地址范围106的使用是否超过指定使用。
在框410,基于存储器地址范围106的使用超过了指定使用的确定,该方法可以包括修改存储器地址范围106的使用以降低关于存储器地址范围106的争用。例如,基于存储器地址范围106的使用超过了指定使用的确定,该方法可以包括修改存储器地址范围106的使用以降低关于存储器地址范围106的争用,从而平衡包括计算机存储器的计算机系统116的机器资源,或者以其他方式提高关于存储器地址范围106的性能。在这方面,资源可以包括带宽、功率等。
参照图1-图2和图5,尤其是图5,针对框图500,非瞬态计算机可读介质502可以包括指令506,以查明与计算机存储器的存储器地址范围106中所包括的页面112相关联的请求104。根据示例,计算机存储器可以包括多个页面,包括页面112。
处理器504可以获取、译码和执行指令508,以查明与存储器地址范围106的性能属性相关联的性能值。
处理器504可以获取、译码和执行指令510,以基于所查明的性能值来确定权重值。
处理器504可以获取、译码和执行指令512,以基于所查明的请求104和所确定的权重值来递增与关联于页面112的计数器120相关联的计数值126。
处理器504可以获取、译码和执行指令514,以基于与包括计数器120的多个计数器相关联的计数值的分析来标识多个页面中的最高活动度(activity)页面112。在这方面,最高活动度页面112可以被分配给多个指定性能层110中的指定性能层。
处理器504可以获取、译码和执行指令516,以将最高活动度页面112移动到多个指定性能层110中的另一指定性能层。
本文已经描述和图示的是示例及其一些变型。本文使用的术语、描述和附图仅以说明的方式陈述,并不意味着限制。在主题的精神和范围之内,可以有许多变型,其旨在由以下权利要求及其等效物来限定,其中除非另有指示,否则所有术语均以其最广泛的合理意义表示。

Claims (15)

1.一种装置,包括:
处理器;以及
存储机器可读指令的存储器,所述机器可读指令在由所述处理器执行时使所述处理器:
查明与计算机存储器的存储器地址范围相关联的请求,其中所述存储器地址范围被分配给多个指定性能层中的指定性能层;
查明与所述存储器地址范围的性能属性相关联的性能值;
基于所查明的所述性能值,确定权重值;
基于所查明的所述请求和所确定的所述权重值,递增与关联于所述存储器地址范围的计数器相关联的计数值;
基于与所述计数器相关联的所述计数值的分析,确定所述存储器地址范围是否要被分配给所述多个指定性能层中的不同的指定性能层;以及
基于所述存储器地址范围要被分配给所述不同的指定性能层的确定,将所述存储器地址范围分配给所述不同的指定性能层。
2.根据权利要求1所述的装置,其中所述性能属性包括与所述存储器地址范围相关联的时延,并且其中用以查明与所述存储器地址范围的所述性能属性相关联的所述性能值并且基于所查明的所述性能值来确定所述权重值的所述机器可读指令在由所述处理器执行时还使所述处理器:
查明与所述存储器地址范围的所述时延属性相关联的时延值;以及
基于所查明的所述时延值,确定所述权重值。
3.根据权利要求1所述的装置,其中所述性能属性包括与所述存储器地址范围相关联的请求的间歇增加或减少,并且其中用以查明与所述存储器地址范围的所述性能属性相关联的所述性能值并且基于所查明的所述性能值来确定所述权重值的所述机器可读指令在由所述处理器执行时还使所述处理器:
查明与所述存储器地址范围的请求属性的所述间歇增加或减少相关联的请求值的所述间歇增加或减少;以及
基于请求值的所查明的所述间歇增加或减少,确定所述权重值。
4.根据权利要求1所述的装置,其中所述性能属性包括与所述存储器地址范围相关联的读写请求周期的分散性,其中所述读写请求周期包括读取到写入、写入到读取、连续读取或连续写入中的至少一种,并且其中用以查明与所述存储器地址范围的所述性能属性相关联的所述性能值并且基于所查明的所述性能值来确定所述权重值的所述机器可读指令在由所述处理器执行时还使所述处理器:
查明与所述存储器地址范围的读写请求周期属性的所述分散性相关联的读写请求周期值的所述分散性;以及
基于读写请求周期值的所查明的所述分散性,确定所述权重值。
5.根据权利要求1所述的装置,其中用以基于所查明的所述性能值确定所述权重值并且基于所查明的所述请求和所确定的所述权重值递增与关联于所述存储器地址范围的所述计数器相关联的所述计数值的所述机器可读指令在由所述处理器执行时还使所述处理器:
通过根据来自基础性能值的所述性能值的增加或减少成比例地增加或减少基础权重值,来基于所查明的所述性能值确定所述权重值;
通过将所确定的所述权重值和与关联于所述存储器地址范围的所述计数器相关联的基础计数值增量相乘,来确定计数值增量增加或减少;以及
基于所查明的所述请求,以所确定的所述计数值增量增加或增量减少来递增所述计数值。
6.根据权利要求1所述的装置,其中所述机器可读指令在由所述处理器执行时还使所述处理器:
确定与所述计数器相关联的所述计数值;
确定自与所述计数器相关联的所述计数值的所述确定以来是否已经过去了指定时间段;以及
基于自与所述计数器相关联的所述计数值的所述确定以来已经过去了所述指定时间段的确定,将所述计数值降低指定量。
7.根据权利要求1所述的装置,其中用以基于所查明的所述请求和所确定的所述权重值递增与关联于所述存储器地址范围的所述计数器相关联的所述计数值的所述机器可读指令在由所述处理器执行时还使所述处理器:
确定指定持续时间内与所述计数器相关联的所述计数值,所述指定持续时间小于与所述计数器相关联的所有计数值的总持续时间;以及
基于所查明的所述请求和所确定的所述权重值,递增与关联于所述存储器地址范围的所述计数器相关联的所确定的所述计数值。
8.根据权利要求1所述的装置,其中用以基于所查明的所述性能值确定所述权重值的所述机器可读指令在由所述处理器执行时还使所述处理器:
确定所述请求是否包括相对短的读取、相对短的写入、相对长的读取或相对长的写入;以及
基于所查明的所述性能值以及所述请求是否包括所述相对短的读取、所述相对短的写入、所述相对长的读取或所述相对长的写入的所述确定,确定所述权重值。
9.根据权利要求1所述的装置,其中用以基于所查明的所述性能值确定所述权重值的所述机器可读指令在由所述处理器执行时还使所述处理器:
确定所述计数值是否等于最大计数值;以及
基于所述计数值等于所述最大计数值的确定,确定所述权重值在所述最大计数值之后递增地增加计数值。
10.根据权利要求1所述的装置,其中用以基于所查明的所述性能值确定所述权重值的所述机器可读指令在由所述处理器执行时还使所述处理器:
确定所述计数值是否等于最大计数值;以及
基于所述计数值等于所述最大计数值的确定,确定所述权重值在所述最大计数值之后非递增地增加计数值。
11.一种计算机实现的方法,包括:
由至少一个处理器查明与计算机存储器的存储器地址范围相关联的请求;
由所述至少一个处理器基于所查明的所述请求,递增与关联于所述存储器地址范围的计数器相关联的计数值;
由所述至少一个处理器根据与所述计数器相关联的所述计数值以及与所述存储器地址范围的性能属性相关联的性能值来确定聚合值;
由所述至少一个处理器基于所述聚合值的分析来确定所述存储器地址范围的使用是否超过指定使用;以及
基于所述存储器地址范围的所述使用超过所述指定使用的确定,由所述至少一个处理器修改所述存储器地址范围的所述使用以降低关于所述存储器地址范围的争用。
12.根据权利要求11所述的计算机实现的方法,其中所述性能属性包括与所述存储器地址范围相关联的时延,并且其中由所述至少一个处理器根据与所述计数器相关联的所述计数值以及与所述存储器地址范围的所述性能属性相关联的所述性能值来确定所述聚合值还包括:
由所述至少一个处理器根据与所述计数器相关联的所述计数值以及与所述存储器地址范围的所述时延属性相关联的所述时延值来确定所述聚合值。
13.根据权利要求11所述的计算机实现的方法,其中所述性能属性包括与所述存储器地址范围相关联的请求的间歇增加或减少,并且其中由所述至少一个处理器根据与所述计数器相关联的所述计数值以及与所述存储器地址范围的所述性能属性相关联的所述性能值来确定所述聚合值还包括:
由所述至少一个处理器根据与所述计数器相关联的所述计数值以及与所述存储器地址范围的请求属性的所述间歇增加或减少相关联的请求值的所述间歇增加或减少来确定所述聚合值。
14.根据权利要求11所述的计算机实现的方法,其中所述性能属性包括与所述存储器地址范围相关联的读写请求周期的分散性,并且其中所述读写请求周期包括读取到写入、写入到读取、连续读取或连续写入中的至少一种,并且其中由所述至少一个处理器根据与所述计数器相关联的所述计数值以及与所述存储器地址范围的所述性能属性相关联的所述性能值来确定所述聚合值还包括:
由所述至少一个处理器根据与所述计数器相关联的所述计数值以及与所述存储器地址范围的读写请求周期属性的所述分散性相关联的读写请求周期值的所述分散性来确定所述聚合值。
15.一种在其上存储有机器可读指令的计算机可读介质,所述机器可读指令在由处理器执行时使所述处理器:
查明与被包括在计算机存储器的存储器地址范围中的页面相关联的请求,其中所述计算机存储器包括多个页面,所述多个页面包括所述页面;
查明与所述存储器地址范围的性能属性相关联的性能值;
基于所查明的所述性能值,确定权重值;
基于所查明的所述请求和所确定的所述权重值,递增与关联于所述页面的计数器相关联的计数值;
基于与包括所述计数器的多个计数器相关联的计数值的分析,标识所述多个页面中的最高活动度页面,其中所述最高活动度页面被分配给多个指定性能层中的一个指定性能层;以及
将所述最高活动度页面移动到所述多个指定性能层中的另一指定性能层。
CN201880072567.6A 2017-11-09 2018-11-02 计算机存储器的性能计数器 Active CN111316220B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202310869702.2A CN116755634A (zh) 2017-11-09 2018-11-02 计算机存储器的性能计数器
CN202310869840.0A CN117055806A (zh) 2017-11-09 2018-11-02 计算机存储器的性能计数器

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762583909P 2017-11-09 2017-11-09
US62/583,909 2017-11-09
US15/984,219 2018-05-18
US15/984,219 US10509721B2 (en) 2017-11-09 2018-05-18 Performance counters for computer memory
PCT/US2018/058818 WO2019094259A2 (en) 2017-11-09 2018-11-02 Performance counters for computer memory

Related Child Applications (2)

Application Number Title Priority Date Filing Date
CN202310869840.0A Division CN117055806A (zh) 2017-11-09 2018-11-02 计算机存储器的性能计数器
CN202310869702.2A Division CN116755634A (zh) 2017-11-09 2018-11-02 计算机存储器的性能计数器

Publications (2)

Publication Number Publication Date
CN111316220A true CN111316220A (zh) 2020-06-19
CN111316220B CN111316220B (zh) 2023-07-14

Family

ID=66327181

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201880072567.6A Active CN111316220B (zh) 2017-11-09 2018-11-02 计算机存储器的性能计数器
CN202310869702.2A Pending CN116755634A (zh) 2017-11-09 2018-11-02 计算机存储器的性能计数器
CN202310869840.0A Pending CN117055806A (zh) 2017-11-09 2018-11-02 计算机存储器的性能计数器

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN202310869702.2A Pending CN116755634A (zh) 2017-11-09 2018-11-02 计算机存储器的性能计数器
CN202310869840.0A Pending CN117055806A (zh) 2017-11-09 2018-11-02 计算机存储器的性能计数器

Country Status (5)

Country Link
US (3) US10509721B2 (zh)
EP (1) EP3707587B1 (zh)
CN (3) CN111316220B (zh)
TW (3) TWI779110B (zh)
WO (1) WO2019094259A2 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10509721B2 (en) * 2017-11-09 2019-12-17 Microsoft Technology Licensing, Llc Performance counters for computer memory
US10534543B2 (en) * 2018-06-01 2020-01-14 Micron Technology, Inc. Using counters to efficiently track busy time of storage systems
US10599576B2 (en) * 2018-07-23 2020-03-24 International Business Machines Corporation Hybrid memory access frequency
US10802977B2 (en) * 2018-12-12 2020-10-13 Advanced Micro Devices, Inc. Memory page access counts based on page refresh
US11893266B2 (en) * 2019-05-03 2024-02-06 University of Pittsburgh—of the Commonwealth System of Higher Education Method and apparatus for adaptive page migration and pinning for oversubscribed irregular applications
US11080205B2 (en) * 2019-08-29 2021-08-03 Micron Technology, Inc. Classifying access frequency of a memory sub-system component
US12008398B2 (en) * 2019-12-28 2024-06-11 Intel Corporation Performance monitoring in heterogeneous systems
KR20210111993A (ko) * 2020-03-04 2021-09-14 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법
US11442654B2 (en) 2020-10-15 2022-09-13 Microsoft Technology Licensing, Llc Managing and ranking memory resources
US11755235B2 (en) * 2020-11-13 2023-09-12 Ciena Corporation Increasing random access bandwidth of a DDR memory in a counter application
US20230031304A1 (en) * 2021-07-22 2023-02-02 Vmware, Inc. Optimized memory tiering
CN114442927B (zh) * 2021-12-22 2023-11-03 天翼云科技有限公司 一种数据存储空间的管理方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130132638A1 (en) * 2011-11-21 2013-05-23 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US20140025916A1 (en) * 2012-07-18 2014-01-23 Hitachi, Ltd. Storage system and storage control method

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4947393A (en) 1988-09-12 1990-08-07 Unisys Corporation Activity verification system for memory or logic
EP1331565B1 (en) 2002-01-29 2018-09-12 Texas Instruments France Application execution profiling in conjunction with a virtual machine
US8079031B2 (en) * 2005-10-21 2011-12-13 Intel Corporation Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric
US8171216B2 (en) * 2009-05-29 2012-05-01 Dell Products, Lp System and method for managing devices in an information handling system
US8880835B2 (en) 2009-07-07 2014-11-04 International Business Machines Corporation Adjusting location of tiered storage residence based on usage patterns
US8832381B2 (en) * 2011-02-21 2014-09-09 Advanced Micro Devices, Inc. Cache and a method for replacing entries in the cache
US8478939B2 (en) * 2011-07-07 2013-07-02 Lsi Corporation Relative heat index based hot data determination for block based storage tiering
US8856264B2 (en) * 2011-10-28 2014-10-07 Hitachi, Ltd. Computer system and management system therefor
US8738877B2 (en) 2011-12-14 2014-05-27 Advance Micro Devices, Inc. Processor with garbage-collection based classification of memory
US9240235B2 (en) * 2013-12-19 2016-01-19 Sandisk Technologies Inc. Mitigating disturb effects for non-volatile memory
US9411735B2 (en) 2014-04-15 2016-08-09 International Business Machines Corporation Counter-based wide fetch management
US9501420B2 (en) * 2014-10-22 2016-11-22 Netapp, Inc. Cache optimization technique for large working data sets
US9910785B2 (en) * 2014-12-14 2018-03-06 Via Alliance Semiconductor Co., Ltd Cache memory budgeted by ways based on memory access type
EP3049915B1 (en) * 2014-12-14 2020-02-12 VIA Alliance Semiconductor Co., Ltd. Prefetching with level of aggressiveness based on effectiveness by memory access type
KR101835949B1 (ko) * 2014-12-14 2018-03-08 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 메모리 접근 타입을 고려한 캐시 치환 정책
CN106233265A (zh) 2015-02-26 2016-12-14 斯特拉托斯卡莱有限公司 将访问频率层次结构用于逐出目标的选择
WO2016170631A1 (ja) * 2015-04-22 2016-10-27 株式会社日立製作所 ストレージシステム
US20170075593A1 (en) 2015-09-11 2017-03-16 Sandisk Technologies Inc. System and method for counter flush frequency
US20170185292A1 (en) 2015-12-23 2017-06-29 Intel Corporation Memory Management of High-Performance Memory
US10509721B2 (en) * 2017-11-09 2019-12-17 Microsoft Technology Licensing, Llc Performance counters for computer memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130132638A1 (en) * 2011-11-21 2013-05-23 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US20140025916A1 (en) * 2012-07-18 2014-01-23 Hitachi, Ltd. Storage system and storage control method

Also Published As

Publication number Publication date
US20200081826A1 (en) 2020-03-12
TWI804321B (zh) 2023-06-01
US11625322B2 (en) 2023-04-11
CN116755634A (zh) 2023-09-15
TW202334823A (zh) 2023-09-01
TW202236081A (zh) 2022-09-16
TWI779110B (zh) 2022-10-01
WO2019094259A3 (en) 2019-12-26
US11210207B2 (en) 2021-12-28
US20210374046A1 (en) 2021-12-02
EP3707587A2 (en) 2020-09-16
US20190138437A1 (en) 2019-05-09
US10509721B2 (en) 2019-12-17
WO2019094259A2 (en) 2019-05-16
EP3707587B1 (en) 2024-05-22
CN111316220B (zh) 2023-07-14
TW201933082A (zh) 2019-08-16
CN117055806A (zh) 2023-11-14

Similar Documents

Publication Publication Date Title
CN111316220B (zh) 计算机存储器的性能计数器
Liu et al. Hierarchical hybrid memory management in OS for tiered memory systems
US10698832B2 (en) Method of using memory allocation to address hot and cold data
US9971548B1 (en) Storage resource management employing performance analytics
US7707379B2 (en) Dynamic latency map for memory optimization
US9841914B2 (en) Managed energy-efficient hybrid main memory systems
US10698732B2 (en) Page ranking in operating system virtual pages in hybrid memory systems
US10025504B2 (en) Information processing method, information processing apparatus and non-transitory computer readable medium
US9690708B2 (en) Real-time cache behavior forecast using hypothetical cache
US20040250041A1 (en) Heap allocation
US10853219B2 (en) Real-time input/output bandwidth estimation
US7890314B2 (en) Method for modeling performance of embedded processors having combined cache and memory hierarchy
US20090276600A1 (en) Method and apparatus for determining memory usage for a computing device
Liu et al. Synergistic coupling of SSD and hard disk for QoS-aware virtual memory
CN112947851A (zh) Numa系统和系统中的页面迁移方法
US20230033029A1 (en) Optimized memory tiering
CN111902804B (zh) 用于管理存储设备的资源并量化i/o请求成本的系统和方法
US20230031304A1 (en) Optimized memory tiering
US20220164118A1 (en) Managing and ranking memory resources
Scargall et al. Profiling and Performance
Bäckemo et al. Minimizing read bottlenecks in I/O bound systems, Effective and adaptive I/O using C++
CN114595063A (zh) 确定数据的访问频繁程度的方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant