CN116069240A - 存储器池管理 - Google Patents
存储器池管理 Download PDFInfo
- Publication number
- CN116069240A CN116069240A CN202211107532.6A CN202211107532A CN116069240A CN 116069240 A CN116069240 A CN 116069240A CN 202211107532 A CN202211107532 A CN 202211107532A CN 116069240 A CN116069240 A CN 116069240A
- Authority
- CN
- China
- Prior art keywords
- memory
- memory pool
- pool
- data
- processors
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
Abstract
本文描述的示例涉及提供到操作系统(OS)的接口以创建不同存储器池类别来分配给一个或多个进程并且将存储器池类别分配给一个或多个进程中的进程。在一些示例中,不同存储器池类别中的存储器池类别定义可供一个或多个进程访问的至少一个存储器池中的存储器设备的混合。在一些示例中,存储器设备与多个存储器池类别相关联以提供多个不同种类的存储器资源能力。
Description
背景技术
云计算为客户端设备提供了对远程计算机的计算和存储资源的访问。客户端可以利用远程计算机或计算机集群来执行各种处理或计算操作以及远程数据处理和数据存储或检索。例如,客户端可以是智能电话、诸如智能家居之类的物联网(Internet-of-Things,IoT)兼容设备、建筑电器(例如,冰箱、灯、相机、或者锁)、可穿戴设备(例如,健康监视器、智能手表、智能眼镜)、联网车辆(例如,自动驾驶汽车)、以及智能城市(例如,交通传感器、停车传感器、能量使用传感器)。远程计算机或计算机集群可包括数据中心,该数据中心使用高速联网连接与客户端相连接。然而,从客户端向远程计算机传送数据,对于对及时接收来自远程计算机的结果有严格要求的时间敏感型应用而言,可能会招致不可接受的延时。
一些远程设备集群包括可由一个或多个计算节点访问的存储器池。频繁访问的存储器页可被存储在计算节点的本地存储器中,而不那么频繁访问的存储器页可被存储在较远的存储器池中。相对于计算节点,存储器池具有不同的延时特性,由此计算节点从一些存储器池的写入或读取速度比其他存储器池快。
云服务提供商可以添加基础设施和服务器来支持基础设施即服务(Infrastructure as a Service,IaaS)和平台即服务(Platform as a Service,PaaS)。一些解决方案通过添加新的存储器池来扩大存储器容量。对硬件资源的需求是弹性的,并且添加额外的基础设施可能比较昂贵并且会推高数据中心的总拥有成本(total cost ofownership,TCO),例如在对硬件资源的需求较低时。
附图说明
图1描绘了系统的示例,其中存储器池可由计算节点访问。
图2描绘了控制群组与CPU、网络类别、和存储器池的关联的示例。
图3描绘了基于控制群组策略从不同的存储器池向进程分配存储器的示例。
图4描绘了配置资源的控制群组的示例方式。
图5描绘了容器与SLA类别的关联的示例。
图6描绘了与容器相关联的SLA类别的变化的示例。
图7描绘了取决于工作负载急迫性的SLA类别与容器的关联的示例。
图8描绘了基于存储器池可用性的跨节点的负载平衡的示例。
图9描绘了示例过程。
图10描绘了示例系统。
图11、图12、图13A、和图13B描绘了将页聚类成集群并且预测对数据的未来访问的示例,以确定哪些数据要从缓存和/或本地存储器迁移到存储器池,从存储器池迁移到更慢的存储器池,或保留在其当前存储器中。
图14描绘了示例过程。
图15描绘了示例系统。
具体实施方式
一些示例通过将分配的存储器指派给一个或多个控制群组标识符,来从本地和远程存储器池中分配存储器。本地存储器可以是片上系统(system on chip,SoC)的一部分,或者连接到计算平台的电路板上并且可由其访问。池式存储器可以是通过与交换机和路由器的连接来添加的,并且是可经由网络或结构由计算平台访问的。控制群组可以代表从本地存储器设备或者一个或多个远程存储器池分配的存储器。对控制群组的利用可能限制和扼制工作负载对存储器池的利用。协调器可以利用控制群组标识符来控制对本地存储器和不同类型或延时的存储器池的混合(mixture)的访问。在一些示例中,协调器可以基于数据中心中的多个服务器中的特定服务器的能力来选择该特定服务器执行进程,以通过满足或超过与该进程相关联的服务水平协议(service level agreement,SLA)的方式访问与控制群组相关联的一个或多个存储器设备。云服务提供商可以控制存储器池和本地存储器的使用量,并且在不同级别的存储器池之间进行区分。
控制群组应用程序接口(application program interface,API)或者配置文件可以定义应用或进程可以访问本地存储器和存储器池的混合内的哪个存储器区域。在一些示例中,操作系统(operating system,OS)可以提供控制群组API,并且系统管理员可以使用控制群组API来定义包括的存储器资源以及是否可以使用存储器池。一些示例为OS提供了在异构的存储器池中选择存储器池的能力,相对于执行OS的计算平台而言,异构的存储器池具有不同的访问速率。在OS级别,可以配置或定义本地存储器和存储器池的混合,以限制或扩大本地或存储器池资源以及存储器池中的特定存储器池资源的使用。使用控制群组API可以通过对于工作负载基于其控制群组提供对要使用哪个存储器硬件的控制来允许存储器分配策略。工作负载可用的存储器的混合可以使用OS发生,并且工作负载不需要管理存储器分配。
一些示例规定,云服务提供商要针对容器化工作负载支持存储器池知晓的协调策略。可以基于由控制群组API控制的精细存储器要求(例如,延时、带宽)在计算节点上协调容器化工作负载。在一些示例中,控制群组API可以允许CSP管理存储器池到容器化工作负载的分配。例如,一些工作负载可以接收对具有较高延时和较低网络传输带宽的远程存储器池的访问,而其他工作负载可以接收对具有较低延时和较高网络传输带宽的本地存储器和存储器池的访问。
在一些示例中,服务水平协议(SLA)可以与硬件存储器资源的混合相关联。可以基于计算节点上的可用存储器以及可用存储器控制群组是否可以满足工作负载的SLA,选择计算节点来执行工作负载。
图1描绘了系统的示例,其中存储器池可由计算节点访问。计算节点100可包括处理器102(例如,中央处理单元(central processing unit,CPU)、图形处理单元(graphicsprocessing unit,GPU)、核心、现场可编程门阵列(field programmable gate array,FPGA)、专用集成电路(application specific integrated circuit,ASIC)、和/或加速器)以及存储器资源(例如,存储器、存储装置、和/或缓存)。在一些示例中,核心可以由等等出售或设计。例如,计算节点100可以执行进程,该进程包括以下各项中的一个或多个:应用、虚拟机、容器、微服务、无服务器应用,等等。处理器可以执行操作系统。例如,计算节点100可被实现为服务器、服务器机架、计算平台,或者其他。计算节点100可包括与系统1400类似的技术。
本文描述的各种示例可以执行由微服务组成的应用,其中微服务在其自己的进程中运行,并且使用协议(例如,应用程序接口(API)、超文本传送协议(Hypertext TransferProtocol,HTTP)资源API、消息服务、远程过程调用(remote procedure call,RPC)、或者谷歌RPC(Google RPC,gRPC))进行通信。微服务可以使用服务网格彼此通信,并且在一个或多个数据中心或边缘网络中被执行。可以使用这些服务的集中管理来独立部署微服务。管理系统可以用不同的编程语言来编写,并且使用不同的数据存储技术。微服务的特征可在于以下各项中的一个或多个:多语言编程(例如,用多种语言编写的代码,以捕捉单种语言无法提供的额外功能和效率),或者轻量级容器或虚拟机部署,以及分散的连续微服务交付。
虚拟机(virtual machine,VM)可以是运行操作系统和一个或多个应用的软件。VM可以由规范、配置文件、虚拟盘文件、非易失性随机访问存储器(non-volatile randomaccess memory,NVRAM)设置文件、和日志文件来定义,并且由主机计算平台的物理资源来支持。VM可包括安装在软件上的操作系统(OA)或应用环境,它模仿专用硬件。终端用户在虚拟机上的体验与他们在专用硬件上的体验是相同的。专门的软件——被称为管理程序——完全模拟PC客户端或服务器的CPU、存储器、硬盘、网络、和其他硬件资源,使得虚拟机能够共享这些资源。管理程序可以模拟多个相互隔离的虚拟硬件平台,允许虚拟机在同一底层物理主机上运行Server、VMware ESXi、和其他操作系统。
容器可以是应用、配置、和依赖关系的软件包,以便应用在一个计算环境到另一个计算环境上可靠地运行。容器可以共享安装在服务器平台上的操作系统,并且作为孤立的进程运行。容器可以是软件包,该软件包包含软件运行所需要的一切,例如系统工具、库、和设置。容器可以与其他软件和操作系统本身隔离开来。容器的隔离性质提供了几个益处。首先,容器中的软件在不同的环境中的运行将是相同的。例如,包括PHP和MySQL的容器可以在计算机和机器上相同地运行。其次,由于软件不会影响主机操作系统,所以容器提供了额外的安全性。虽然安装的应用可更改系统设置和修改资源(例如Windows注册表),但容器只能修改容器内的设置。
存储器104可包括以下各项中的一个或多个:一个或多个寄存器,一个或多个缓存设备(例如,第1级缓存(L1)、第2级缓存(L2)、第3级缓存(L3)、较低级缓存(lower levelcache,LLC)),易失性存储器设备,非易失性存储器设备,或者持久性存储器设备。例如,存储器102可包括静态随机访问存储器(static random access memory,SRAM)存储器技术或者与高带宽存储器(high bandwidth memory,HBM)或者双数据速率(double data rate,DDR)等等相符合的存储器技术。存储器104可以使用高速接口(例如,双数据速率(doubledata rate,DDR)、计算快速链路(Compute Express Link,CXL)(例如,计算快速链路规范修订版2.0,版本0.9(2020),以及其早期版本、修订版或者变化)、外围组件互连快速(Peripheral Component Interconnect express,PCIe)(例如,PCI快速基础规范1.0(2002),以及其早期版本、修订版或者变化)或者其他接口连接到处理器102和/或网络接口106。在一些示例中,计算节点100可以被形成为片上系统(SoC)。
计算节点100可包括网络或结构接口104,以使用网络或结构与一个或多个存储器池节点150-0至150-N通信。存储器池节点150可包括网络或结构接口152、处理器154(例如,CPU、GPU、加速器,等等)、以及存储器池资源156(例如,存储器、持久性存储器、存储装置、和/或缓存)。虽然这个示例仅仅示出了一个计算节点耦合到多个存储器池节点,但多个计算节点可以耦合到多个存储器池节点。例如,存储器池节点150-0至150-N中的一个或多个可以使用网络接口和一个或多个交换机或路由器耦合到网络接口106。
存储器控制群组管理器108可以将来自本地存储器104和存储器池节点150-0至150-N之中的存储器设备的混合映射到控制群组标识符。在一些示例中,本地存储器104可以提供最高的存储器访问速率(从存储器介质读取或者向存储器介质写入),存储器池节点150-0可以提供次高的存储器访问速率(从存储器介质读取或者向存储器介质写入),而存储器池节点150-N可以提供最低的存储器访问速率(从存储器介质读取或者向存储器介质写入)。一些示例按页粒度管理存储器内容,虽然可以管理更大或更小的存储器区域。存储器页可以是4096字节,或者其他大小。
在一些示例中,存储器控制群组管理器108可以将控制群组标识符与SLA存储器参数关联起来。例如,SLA类别可以使用用户空间API被映射到控制群组标识符,并且可以被用户空间进程(例如,虚拟机、容器、应用、微服务、或者无服务器应用)访问。系统管理员或协调器可以将存储器池控制群组标识符与用户定义的SLA类别关联起来。存储器的SLA类别可以补充定义控制群组的资源分配策略的类别并且在这种类别之外被使用,所述策略例如是CPU亲和力(例如,控制群组(cgroups))、网络封包优先级,等等。
存储器控制群组管理器108可以在运行时重配置与控制群组标识符相关联的存储器设备的混合。重配置的混合可能不满足关联的SLA,并且可能需要与存储器设备访问速率(例如,从存储器或存储介质访问数据的速率)的较低SLA层级相关联。
为了请求控制群组标识符和关联的存储器资源,进程可以向OS发出创建控制群组API[控制群组标识符]。OS可以管理控制群组标识符和关联的存储器设备。例如,可以使用各种格式的控制群组API。
控制群组API[存储器池标识符,要分配给控制群组的进程的存储器量]或者
控制群组API[存储器池标识符,从可用的本地存储器和存储器池分配给进程的存储器的百分比]。
在一些示例中,存储器控制群组管理器108可以由处理器102执行的进程或者可编程或固定功能电路执行。
图2描绘了控制群组与CPU、网络类别、和存储器池的关联的示例。控制群组提供了限制或扼制工作负载对特定CPU、网络接口设备资源、和存储器资源的利用的能力。OS内核可以将存储器设备中的可寻址存储器区域分配给控制群组。用户空间中的控制群组API可以被访问,从而系统管理员或者协调器可以配置存储器设备的混合以及存储器设备中可供访问的关联存储器地址范围。下面的表格1提供了处理器资源、网络接口设备发送速率、和存储器池与SLA级别的映射的示例。
表格1:将存储器池利用策略映射到SLA类别
在这个示例中,控制群组标识符可以是类别A、类别B、和类别C。
在一些示例中,对于存储器池,控制群组标识符可以允许设置:
可以分配给群组中的每个进程的最大和最小存储器量的值(例如,512MB来自池A,32MB来自池B,0MB来自池C);
可以从整个群组分配给一个或多个进程的最大和最小存储器量的值(例如,8GB来自池A,1GB来自池B,0MB来自池C);和/或
从每个存储器池分配的存储器的比例(例如:60%来自池A,40%来自池B)。
图3描绘了基于控制群组策略从不同的存储器池向进程分配存储器的示例。不同的存储器池具有不同的特性。例如,多个存储器池302、304、和306可以供进程A和进程B使用。例如,存储器池302可以提供具有最高数据访问速率(例如,读取和/或写入速率)的本地存储器池(向执行进程A和B的处理器提供),但相对于存储器池304和306具有最小的大小(例如,可以读取或写入的数据量)和最大的成本。存储器池302可以代表第一非均一存储器访问(non-uniform memory access,NUMA)节点。
例如,存储器池304可以提供具有第二高数据访问速率(例如,读取和/或写入速率)的本地存储器池(向执行进程A和B的处理器提供),但相对于存储器池302和306具有中等大小和最大成本。存储器池304可以代表第二NUMA节点。第二NUMA节点可以代表与第一NUMA节点不同的NUMA域。第二NUMA节点可以提供与对第一NUMA节点的存储器的访问时间不同的对第二NUMA节点中的存储器的访问时间。
例如,存储器池306可以提供具有最低最高数据访问速率(例如,读取和/或写入速率)的远程存储器池(向执行进程A和B的处理器提供),但相对于存储器池302和304具有最大大小和最低成本。
不同的控制群组标识符308可以被指派给存储器池302-306。例如,控制群组标识符0、1、和2可以与相应的存储器池302、304、和306相关联。注意,存储器池302-306内的存储器设备可以变化,而关联的速度、大小、和成本可以保持相同。
存储器管理单元(memory management unit,MMU)310可以执行虚拟到物理存储器地址转译。MMU 310可以向进程A提供对与指派给进程A的控制群组标识符相关联的一个或多个存储器池中的存储器地址范围的访问。类似地,MMU 310可以向进程B提供对与指派给进程B的控制群组标识符相关联的一个或多个存储器池中的存储器地址范围的访问。指派给进程A和进程B的控制群组标识符可以是相同的或不同的。
图4描绘了配置资源的控制群组的示例方式。例如,使用控制群组API 402,操作系统400可以配置或接收控制群组标识符的配置。控制群组标识符可以指仅仅本地存储器、仅仅一个或多个存储器池、或者本地存储器和一个或多个存储器池的混合的存储器池分配410,如本文所述。服务或守护进程可以使用控制群组API 402将存储器池分配410传达给OS400,以创建和配置存储器池控制群组中的存储器设备。在一些示例中,可以使用Linuxcgconfig文件来创建控制群组。在一些示例中,存储器池控制群组创建可以在OS启动或重启动时发生。
存储器池分配410可包括对一个或多个存储器池中的最大存储器量的分配、峰值存储器访问速率、以及可用于进程的可用存储器的相对百分比,即使分配给进程的存储器少于分配给进程的一个或多个存储器池中分配的最大存储器量。例如,存储器池分配410可以指示出与使用API 402定义的控制群组标识符相关联的进程最多被分配2GB或者最多被分配从池A分配的存储器的10%,从池B中分配4GB,而从池C中不分配。存储器池分配410可以与控制群组标识符0相关联。可以定义具有不同值的更多控制群组以实现不同策略。
用于其他资源的控制群组API 404可以提供与控制群组标识符相关联的处理器和/或网络接口资源的分配,以分配给进程(例如,进程1或2)。响应于经由MMU API 406来自进程1或2的请求,可以将与控制群组标识符0相关联的存储器分配给进程1或2。根据控制群组策略的存储器分配(malloc())可以由内核处理。
关于图5-图8,虽然描绘了容器,但VM、微服务、应用、无服务器应用、或者其他进程可以与SLA类别相关联。图5描绘了容器与SLA类别的关联的示例。例如,容器1和4可以与SLAA相关联;容器3、5、和6可以与SLA B相关联;而容器2可以与SLA C相关联。在容器中运行的进程可以访问关联SLA类别可用的资源,从而无需对每个进程或工作负载进行资源配置,并且存储器池(和其他资源)可以凭借容器的SLA类别而可用。
由于SLA类别是用户定义的,所以SLA类别与系统资源的实际映射可以因系统而异。在上面的示例中,一种系统可以存在,其中没有定义SLA类别C,也没有远程存储器池可用。
图6描绘了与容器相关联的SLA类别的变化的示例。通过将不同的SLA类别与容器相关联,可以将容器与升级或降级的SLA类别相关联。可以通过将不同的SLA类别与容器相关联来调整容器可用的存储器。CSP可以改变分配给容器的存储器资源控制群组标识符,以便连同SLA类别的变化一起变化。分配给容器的存储器资源可以在容器运行时基于总体资源可用性或者基于产品供应而动态地变化。
例如,高级SLA类别可以提供对本地存储器资源的访问,同时也提供来自远程存储器池的扩展存储器支持。入门SLA类别可以提供对本地存储器的有限访问,并且倾向于使用远程存储器。可以提供一些选项,来在给定时段内将工作负载的SLA类别从入门升级到高级,以允许快速数据处理。一旦数据处理时段结束,该工作负载的SLA类别就恢复到入门。
图7描绘了取决于工作负载急迫性的SLA类别与容器的关联的示例。在具有混合急迫性的综合系统中,工作负载要求因工作负载而异。例如,在工业系统中,软性可编程控制器(programmable logic controller,PLC)工作负载可以为实时和5G时间敏感联网(TimeSensitive Networking,TSN)应用请求对本地存储器的低且确定性延时的访问。另一方面,低急迫性的工作负载可以机会性地利用可用资源。容器化的人机界面(human machineinterface,HMI)或者具有操作技术(operational technology,OT)网关的信息技术(information technology,IT)系统就可能是这种情况。利用与控制群组标识符相关联的SLA类别,可以施行策略,以只向这种工作负载提供特定的存储器池。在混合急迫性的情况下,特定存储器池可以是远程存储器,它提供的性能比本地存储器低。例如,协调器可以管理具有低急迫性的尽力而为工作负载在计算节点的池上的执行,同时提供系统运作所需的存储器资源,被专门分配给具有高急迫性的工作负载。协调器的示例包括Kubernetes、管理和协调(Management and Orchestration,MANO)、Docker,等等。
在微服务体系结构中,容器化的工作负载可能不受特定硬件资源的约束,而是可允许对资源的更好利用以及减少资源利用不足。作为一个示例,在HMI工作负载中,渲染和显示是解耦的,从而,渲染发生在一个节点上并且被流传输到具有视频流的显示器的另一个节点。在这个示例中,渲染工作负载的急迫性较低,并且可以被固定到入门SLA类别C并且利用远程存储器。如果GPU资源越来越低(因为SLA类别B的工作负载在请求它),则协调器可以将这个工作负载迁移到GPU空闲的计算节点,同时确保存储器资源遵循SLA类别C策略。
图8描绘了基于存储器池可用性的跨节点的负载平衡的示例。容器在节点上的执行的协调可以是存储器知晓的,从而容器可以被迁移到不同的节点并且保留存储器性能。节点的系统可以由共同的协调器控制,该协调器是控制群组知晓的。当存储器池被添加到与控制群组相关联的资源时,协调器可以在现有的资源约束(例如CPU或网络负载平衡)之上,在需要时利用存储器池。
例如,容器可以在同一SLA类别A内被从节点2迁移到节点3,并且维持对同一存储器控制群组的利用。例如,当节点2上的本地存储器池可用性较低时,容器可以被迁移到节点3,以保留存储器资源能力。
例如,当远程存储器池在节点3上对于SLA类别C变得不可用时,容器可以在同一SLA类别C内被从节点3迁移到节点2,以便在节点2上执行时保留存储器资源能力。
图9描绘了示例过程。该过程可以由以下各项中的一个或多个执行:操作系统、协调器、处理器、或者电路。在902,可以从本地存储器和一个或多个存储器池中选择存储器设备的混合。在一些示例中,不同的存储器池可以表现出不同量的可寻址存储器地址、存储器访问延时(例如,写入或读取数据的速率)和成本或者相同的大小、存储器访问延时和成本。在一些示例中,该混合可以不包括本地存储器,而仅仅包括在一个或多个存储器池中分配的可寻址存储器区域。
在904,可以将控制群组标识符与存储器设备的混合关联起来。不同的控制群组标识符可以识别具有可寻址存储器地址量、存储器访问延时、和成本的不同特性的存储器设备的不同混合。在906,控制群组标识符可以与用户定义的服务水平协议(SLA)类别或层级相关联。例如,与可寻址存储器地址量、存储器访问延时、和成本的特性相关联的控制群组标识符可以与SLA类别或层级相关联,该SLA类别或层级指定与该控制群组标识符相关联的特性所满足或超过的存储器设备特性。
在908,可以将控制群组标识符指派给进程以提供对存储器资源的访问。例如,可以使用API来基于与进程相关联的SLA类别或层级将存储器资源指派给进程。在一些示例中,在910,基于进程的执行迁移到另一个计算节点,可以维持可用于该进程的存储器资源。例如,相同的存储器设备混合可以继续是在另一个计算节点上执行的进程可用的。然而,如果存储器设备的特性基于执行进程的计算节点的变化而变化,例如更高的延时,以至于当在另一节点上执行时将不满足该进程的SLA,则该进程可以返回到906以将存储器设备的不同分组指派给该进程以满足该进程的SLA类别或层级。
在912,基于与进程相关联的SLA类别或层级的变化,可以将存储器设备的另一分组指派给该进程。存储器设备的另一分组可以提供满足已改变的SLA类别或层级的资源。例如,如果SLA类别或层级增大到更高的类别或层级,则可以选择存储器设备的另一分组来供进程使用,其资源满足或超过下一个SLA类别或层级的要求,并且存储器设备的这种另一分组的控制群组标识符可以与该SLA类别和进程相关联。例如,如果SLA类别或层级减小到更高的类别或层级,则可以选择存储器设备的另一分组来供进程使用,其资源满足或超过减小的SLA类别或层级的要求,并且存储器设备的这种另一分组的控制群组标识符可以与减小的SLA类别和进程相关联。
因此,可以通过为存储器设备的混合使用控制群组标识符来管理存储器设备的利用。
分层级存储器系统中的数据放置
一些实施例使用具有至少两级存储器的存储器(在此也称为“2LM”),其中包括系统盘级存储的缓存子集(除了例如运行时数据以外)。这个主存储器包括第一级(在此可替代地称为“近端存储器”),其包括由例如动态随机访问存储器(dynamic random accessmemory,DRAM)或其他易失性存储器构成的较小的较快速存储器;以及第二级(在此可替代地称为“远端存储器”),其包括较大且较慢的(相对于近端存储器而言)易失性存储器(例如,DRAM)或者非易失性存储器存储装置(例如,闪存或者可字节寻址的非易失性存储器(例如,Intel))。远端存储器作为“主存储器”被呈现给主机操作系统(OS),而近端存储器是远端存储器的缓存,它对OS是透明的,从而使得下面描述的实施例看起来与现有技术的主存储器解决方案相同。两级存储器的管理可以由经由主机中央处理单元(CPU)执行的逻辑和模块的组合来完成。近端存储器可以经由高带宽、低延时手段与主机系统CPU耦合,以实现高效处理。远端存储器可以经由低带宽、高延时手段(与近端存储器相比)与CPU耦合。
在分层级存储器系统,例如2LM和池式存储器系统中,CPU可以寻址具有异质的延时和带宽特性的存储器设备。慢速存储器可以指高延时存储器和/或低网络带宽,而快速存储器可以指低延时存储器和/或高带宽网络接口。这种环境可包括基于NUMA节点或者基于具有持久性存储器和/或易失性存储器的系统的池式存储器。使用存储器池作为远端存储器将对作业产生性能影响。在确定存储器池是否被认为是远、慢、近、或者快时,可以考虑封包从发送方到接收方再回到发送方的往返时间(round trip time,RTT)。
数据放置策略包括使用最快的存储器,直到它满为止,然后使用下一个最快的存储器,直到它满为止,等等依此类推;将存储器中的数据移至靠近进程运行的地方(例如,CPU);将进程移至靠近存储其数据的地方;以及其他。当进程的存储器访问模式在一个存储器区域和另一个存储器区域之间有很大不同,并且访问模式随时间变化时,这种数据放置策略可能不会减小访问数据的延时。可以预期不再需要页并且将其移动到慢速存储器,然后在其被访问时将其移回到快速存储器,然后再次移动到慢速存储器,等等依此类推(往复)。由于页表结构在数据移动期间被锁定,工作负载执行可能被暂停。此外,网络和存储器带宽被页移动占用,这可能对其他工作负载的性能产生负面影响。
一些示例利用基于人工智能(artificial intelligence,AI)的技术来为工作负载检测每个集群页的存储器访问模式,并且使用此信息来确定是否将数据预取到离执行工作负载的处理器较近的存储器,或者将数据迁移到离执行工作负载的处理器较远的存储器。在分层级存储器系统中使用存储器访问模式检测来预测访问,可以通过将被预测为保持冷的或者未被访问的页移动到慢速存储器或者较远的存储器,从而释放快速或者较近的存储器,来增加可用的较近存储器。示例可以预取被预测要被访问的冷页,这是通过在页故障发生前将它们从慢速存储器移动到快速存储器来实现的。示例可以禁止将被预测会被再次访问的页移动到慢速存储器。示例可以在预期存储器带宽和/或网络带宽占用较低时安排页移动,以降低存储器带宽和网络带宽限制工作负载性能的可能性。
图10描绘了示例系统。计算节点1000可包括与计算节点100和/或系统1400类似的技术。计算节点1000可以访问本地存储器104中的数据和/或存储在存储器池节点150-0至150-N中的一个或多个中的数据。在一些示例中,集群分类1004和/或预取/迁移1006可以由处理器102执行的进程或者可编程或固定功能电路来执行。
集群分类1004可以确定将成为集群或类别的一部分的一个或多个页。可以依据工作负载或工作并且基于存储器访问模式来动态地定义类别。对于给定的工作负载所访问的页,即使在给定的静态定义的类别内,存储器访问模式也可以有很大的变化。例如,存储器访问模式之间的差异可以受到以下影响:工作负载引擎的初始存储器分配和每个用户请求的存储器分配之间的分裂;基于Java的工作负载,由于Java虚拟机(Java virtualmachine,JVM)存储器管理,这意味着特定的模式;在运行完整OS的虚拟机中运行的工作负载,包括冗余的和可能未使用的服务。
集群分类1004可以考虑数据种类,以确定是否要监视集群或类别的数据访问模式,以预测数据是否要被迁移到更远、更慢、或者更冷的存储器或存储装置;预取到近的或者更快的存储器;或者保留在存储它的存储器中。例如,一些数据种类更有可能被存储在本地存储器中。例如,以下由OS类别定义的数据类型更有可能被访问,并且更有可能被存储在本地存储器中:文件操作(例如,将文件映射到存储器中,以及对文件进行读写),即使访问频率低;具有低访问频率的共享对象(例如,图形库);堆;或者栈。然而,具有低访问频率的匿名页可以被移动到远程存储器或者较慢的存储器。
一些数据集群或数据类别可以被排除在对数据访问模式进行监视以预测数据是否要被迁移、预取、或者保留之外。例如,指向共享对象(例如,.so或者.dll)的页可以被其他进程使用,并且要被保留在本地存储器中,而不被移动,因为移动可能对其执行产生负面影响。
处理器执行的OS可以访问页表(page table,PT),该页表记录了页是否曾被访问。OS可以在存储器或寄存器中存储随时间推移的页的访问的元数据。OS可以将这个页访问信息暴露给用户空间中的进程。下面的表格1说明了提供给进程的页的元数据的数据结构,指示出在时间戳t1,t2,…tn对页p1,p2,…pn的访问,其中i指示出在这个时间戳期间该页是否曾被访问。
<![CDATA[t<sub>1</sub>]]> | <![CDATA[t<sub>2</sub>]]> | … | <![CDATA[t<sub>n</sub>]]> | |
<![CDATA[p<sub>1</sub>]]> | <![CDATA[i(t<sub>1</sub>,p<sub>1</sub>)]]> | <![CDATA[i(t<sub>2</sub>p<sub>1</sub>)]]> | <![CDATA[i(t<sub>n</sub>,p<sub>1</sub>)]]> | |
<![CDATA[p<sub>2</sub>]]> | <![CDATA[i(t<sub>1</sub>,p<sub>2</sub>)]]> | <![CDATA[i(t<sub>2</sub>,p<sub>2</sub>)]]> | <![CDATA[i(t<sub>n</sub>,p<sub>2</sub>)]]> | |
… | ||||
<![CDATA[p<sub>m</sub>]]> | <![CDATA[i(t<sub>1</sub>,p<sub>m</sub>)]]> | <![CDATA[i(t<sub>2</sub>,p<sub>m</sub>)]]> | <![CDATA[i(t<sub>n</sub>,p<sub>m</sub>)]]> |
表格1
可以经由接口来访问来自内核页结构的元数据,以将元数据拷贝到选定的用户空间进程。元数据可以提供给控制存储器管理单元(MMU)的内核。元数据的示例包括页表条目中携带的访问比特,该访问比特指示出与页表条目相关联的数据是否被访问过,以及是否被认为是热页或冷页。热页可以指进程或进程群组高频率访问的存储器页,而冷页可以指进程或进程群组低频率访问的存储器页。内核空间代码可以在对工作负载执行性能影响有限的情况下执行页行走,以将元数据暴露给用户空间进程或者预取/迁移1006。
在一些示例中,预取/迁移1006可以轮询给定进程或进程群组的随时间推移的页的元数据。该信息可以被存储,用于异步离线分析,这允许了从先前对数据的访问中学习。在逐页的基础上决定是否以及向哪里移动页是CPU密集型的。在一些示例中,预取/迁移1006可以在集群的基础上执行分析,其中一个集群可能包括多个页。集群ID可以表示一个或多个页的群组。集群ID可以基于访问模式,其中具有相似访问模式的集群的页被分组到一个集群中。在一些示例中,预取/迁移1006可以确定是否在集群级别上预取或迁移数据。例如,集群可以基于在某个时间窗口上的访问次数被进行分组。集群ID可以表示在时间窗口上的集群访问的范围,例如[0-1000次访问],[1001-3000次访问],等等。
基于所识别的非排除类别的一个或多个页的集群,预取/迁移1006可以为给定的进程或进程群组(例如,VM、容器、微服务、无服务器应用)跟踪存储器访问,并且预测在未来时间窗口中是否要访问集群或者一个或多个页。例如,基于多个时间间隔,其中在X%的时间中集群被访问并且在(100-X)%的时间中集群没有被访问,这样的集群可以被保持在本地存储器中。例如,基于在Y%的时间中集群被访问并且在(100-Y)%的时间中集群没有被访问,集群可以被拷贝到存储器池。在一些示例中,Y小于X。较近的时间间隔可以比较老的时间间隔获得更重的权重,以确定集群是否要被从近端存储器迁移到存储器池。AI和ML推理技术可用于使用基于稀疏数据的图形分析来预测热或冷集群。
图11、图12、图13A、和图13B描绘了将页聚类成集群并且预测对数据的未来访问的示例,以确定哪些数据要从缓存和/或本地存储器迁移到存储器池,从存储器池迁移到更慢的存储器池,或者保留在其当前存储器中。
图11描绘了访问模式的示例。X轴表示时间,Y轴表示独特页,并且方块表示某个页在某个时间窗口期间曾被访问。为了说明,下图示出了给定进程或进程群组在一段时间内对每页的存储器访问。一些示例可以将页一起分组到集群,并且预测对页的集群的访问。通过使用作为时间系列在采样时间中在用户空间中收集的页元数据,可以实现将页映射到集群。在图11的示例中,可以基于每个时间窗口的页访问次数来识别集群1、2、和3。集群1的页可以保留在本地或快速存储器中,因为集群3的页中的数据被最频繁地访问。集群2和3可具有如此不频繁的访问,以至于与集群2和3相关联的页可以在进程的生命周期内被移动到存储器池。
图12描绘了将页指派到集群或子集群的示例。具有相似访问模式的页可以被分组到集群1中。例如,在某个时间窗口中具有第一范围内的访问次数的页可以被指派到第一子集群,并且在某个时间窗口中具有第二范围内的访问次数的页可以被指派到第二子集群。在这个示例中,在集群1内,第一子集群可以表示热页,而第二子集群可以表示冷页。与第一子集群相关联的页可以被迁移或预取到相对于执行访问第一子集群中的数据的进程的处理器的本地或更快的存储器中,或者被保留在本地或更快的存储器中(如果这种页已经被存储在本地或更快的存储器中的话)。与第二子集群相关联的、访问频率较低的页,可以被迁移到相对于执行访问第二子集群中的数据的进程的处理器而言较慢的存储器中。因此,页可以被划分为子集群,以确定是否迁移或预取数据。
图13A描绘了子集群的模式检测的示例。一个或多个页的子集群的访问速率可用于训练AI模型执行模式检测并且预测该子集群在未来时间窗口中是否可能是热的或者冷的。可以用来自子集群的访问速率输入来单独训练AI模型,以检测具有给定置信度的模式。如果置信度很低,因为集群中的存储器访问看起来是随机的,这是不可避免的,那么该模型可以被丢弃。否则,如果某个模型的置信度水平达到或超过阈值,那么该模型可以被保留,并且使用特定硬件环境中的不同工作负载在反复运行中得到改进。这特别适合于微服务体系结构,该体系结构具有产生内容或者对用户请求的响应的相同进程或进程群组的克隆。
图13B描绘了使用经训练的模型来预测子集群是否会在后续时间区域中存储热页或冷页的示例。经训练的模型可以用来识别集群的已知存储器访问模式,从而预测集群级别的访问。基于预测的子集群的热或冷状态,可以发生一个或多个页的预取、迁移、或者保留,如本文所述。
图14描绘了示例过程。在1402,确定存储器的页的访问速率。例如,存储器可包括执行从页访问数据的进程的处理器的本地存储器,以及一个或多个网络或结构连接的存储器池。在1404,将访问速率桶内的页和桶内的关联页用集群进行分组。例如,关于页访问的内核空间元数据可以被浮现给用户空间进程,并且页的访问速率可以被跟踪。具有适合在同一窗口内的访问速率的页可以被分组到同一集群中。在1406,可以基于对子集群组的访问模式来训练AI模型。例如,不包括被排除的种类(如前所述)的数据的集群可以被划分成子集群,并且子集群的热和冷状态可以被识别。基于子集群的热和冷状态,可以训练AI模型。在1408,可以对是否要预取数据、迁移数据、或者将数据保留在其存储器设备中进行预测。可以基于预测的数据在感兴趣的时间窗口中的热状态,将数据预取到本地或更快的存储器中。可以基于预测的数据在感兴趣的时间窗口中的慢状态,将数据迁移到远程池式存储器或者较慢的存储器中。如果对感兴趣的时间窗口中的热或冷状态的预测与存储该数据的存储器相一致,则可将数据保留在存储器位置中。
图15描绘了示例计算系统。系统1500可用于确定是否将存储器资源与控制群组和SLA类别相关联、预取、迁移或者保留数据,如本文所述。处理器1510可包括任何类型的微处理器、中央处理单元(central processing unit,CPU)、图形处理单元(graphicsprocessing unit,GPU)、处理核心、或者用来为系统1500提供处理的其他处理硬件、或者处理器的组合。处理器1510控制系统1500的整体操作,并且可以是或者可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(digital signal processor,DSP)、可编程控制器、专用集成电路(application specific integrated circuit,ASIC)、可编程逻辑器件(programmable logic device,PLD),等等,或者这些设备的组合。
在一个示例中,系统1500包括与处理器1510耦合的接口1512,它可以代表更高速度的接口或者高吞吐量接口,用于需要更高带宽连接的系统组件,例如存储器子系统1520或图形接口组件1540,或者加速器1542。接口1512代表接口电路,它可以是独立的组件,或者可被集成到处理器管芯上。如果存在,则图形接口1540与图形组件相接口,用于向系统1500的用户提供视觉显示。在一个示例中,图形接口1540可以驱动向用户提供输出的高清晰度(high definition,HD)显示器。高清晰度可以指具有大约100PPI(每英寸像素)或更大的像素密度的显示器,并且可包括诸如全HD(例如,1080p)、视网膜显示器、4K(超高清或UHD)之类的格式或其他格式。在一个示例中,显示器可包括触摸屏显示器。在一个示例中,图形接口1540基于存储在存储器1530中的数据或者基于由处理器1510执行的操作或者这两者来生成显示。在一个示例中,图形接口1540基于存储在存储器1530中的数据或者基于由处理器1510执行的操作或者这两者来生成显示。
加速器1542可以是固定功能的或可编程的负载转移引擎,该引擎可被处理器1510访问或使用。例如,加速器1542之中的加速器可以提供压缩(DC)能力、密码服务(例如公钥加密(public key encryption,PKE))、密码、散列/认证能力、解密、或者其他能力或服务。在一些实施例中,额外地或者替代地,加速器1542之中的加速器提供如本文所述的现场选择控制器能力。在一些情况下,加速器1542可以被集成到CPU插座(例如,包括CPU并且提供与CPU的电接口的主板或电路板的连接器)中。例如,加速器1542可包括单核或多核处理器、图形处理单元、逻辑执行单元、单级或多级缓存、可用来独立执行程序或线程的功能单元、专用集成电路(application specific integrated circuit,ASIC)、神经网络处理器(neural network processor,NNP)、可编程控制逻辑、以及可编程处理元件,例如现场可编程门阵列(field programmable gate array,FPGA)或者可编程逻辑器件(programmablelogic device,PLD)。加速器1542可以提供多个神经网络、CPU、处理器核心、通用图形处理单元,或者图形处理单元可供人工智能(artificial intelligence,AI)或机器学习(machine learning,ML)模型使用。例如,AI模型可以使用或包括以下各项中的一个或多个:强化学习方案、Q学习方案、深度Q学习、或者异步优势行动者-评价者(AsynchronousAdvantage Actor-Critic,A3C)、组合神经网络、递归组合神经网络、或者其他AI或ML模型。多个神经网络、处理器核心、或图形处理单元可供AI或ML模型使用。
存储器子系统1520代表系统1500的主存储器,并且为将由处理器1510执行的代码或者在执行例程时将要使用的数据值提供存储。存储器子系统1520可包括一个或多个存储器设备1530,例如只读存储器(read-only memory,ROM)、闪存、一个或多个品种的随机访问存储器(random access memory,RAM)(比如DRAM)、或者其他存储器设备、或者这些设备的组合。存储器1530存储和容宿——除其他外——操作系统(operating system,OS)1532,以为系统1500中的指令的执行提供软件平台。此外,应用1534可以从存储器1530在OS 1532的软件平台上执行。应用1534代表具有其自己的操作逻辑,以执行一个或多个功能的执行的程序。进程1536代表向OS 1532或一个或多个应用1534或者其组合提供辅助功能的代理或例程。OS 1532、应用1534、和进程1536提供软件逻辑以为系统1500提供功能。在一个示例中,存储器子系统1520包括存储器控制器1522,它是用于生成和发出命令给存储器1530的存储器控制器。将会理解,存储器控制器1522可以是处理器1510的物理部分或者接口1512的物理部分。例如,存储器控制器1522可以是集成的存储器控制器,与处理器1510一起被集成到电路上。
虽然没有具体图示,但将会理解,系统1500可包括设备之间的一个或多个总线或总线系统,例如存储器总线、图形总线、接口总线,或者其他。总线或其他信号线可以将组件通信地或电气地耦合在一起,或者同时将组件通信地且电气地耦合。总线可包括物理通信线路、点到点连接、桥接器、适配器、控制器、或者其他电路或者这些的组合。总线可包括例如以下各项中的一个或多个:系统总线、外围组件互连(Peripheral ComponentInterconnect,PCI)总线、Hyper Transport或工业标准体系结构(industry standardarchitecture,ISA)总线、小型计算机系统接口(small computer system interface,SCSI)总线、通用串行总线(universal serial bus,USB)、或者电气与电子工程师学会(Institute of Electrical and Electronics Engineers,IEEE)标准1394总线(Firewire)。
在一个示例中,系统1500包括接口1514,它可以耦合到接口1512。在一个示例中,接口1514代表接口电路,它可包括独立的组件和集成电路。在一个示例中,多个用户接口组件或外围组件或者这两者耦合到接口1514。网络接口1550向系统1500提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口1550可包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)、或者其他基于有线或无线标准的或专属的接口。网络接口1550可以将数据发送给在同一数据中心或机架中的设备或者远程设备,这可包括发送存储在存储器中的数据。
网络接口1550的一些示例是基础设施处理单元(Infrastructure ProcessingUnit,IPU)或数据处理单元(data processing unit,DPU)的一部分,或者被IPU或DPU所利用。xPU至少可以指IPU、DPU、GPU、GPGPU、或者其他处理单元(例如,加速器设备)。IPU或DPU可包括网络接口,其具有一个或多个可编程管线或固定功能的处理器来执行本来可由CPU执行的操作的负载转移。IPU或DPU可包括一个或多个存储器设备。在一些示例中,IPU或DPU可以执行虚拟交换机操作,管理存储事务(例如,压缩、密码术、虚拟化),并且管理在其他IPU、DPU、服务器、或设备上执行的操作。
在一个示例中,系统1500包括一个或多个输入/输出(I/O)接口1560。I/O接口1560可包括一个或多个接口组件,用户通过这些接口组件与系统1500进行交互(例如,音频、字母数字、触觉/触摸、或者其他接互)。外围接口1570可包括上文没有具体提到的任何硬件接口。外设一般是指依赖性地连接到系统1500的设备。依赖性连接是指这样的连接:系统1500提供软件平台或硬件平台或者这两者,操作在该平台上执行,并且用户与该平台进行交互。
在一个示例中,系统1500包括存储子系统1580,来以非易失方式存储数据。在一个示例中,在某些系统实现方式中,存储装置1580的至少某些组件可以与存储器子系统1520的组件重叠。存储子系统1580包括(一个或多个)存储设备1584,其可以是或者可以包括用于以非易失性方式存储大量数据的任何传统介质,例如一个或多个磁性的、固态的、或者基于光学的盘,或者这些的组合。存储装置1584以持久的状态保存代码或指令和数据1586(例如,尽管到系统1500的电力中断,该值仍被保留)。存储装置1584可以被笼统地认为是“存储器”,虽然存储器1530通常是执行或操作存储器,以提供指令给处理器1510。存储装置1584是非易失性的,而存储器1530可包括易失性存储器(例如,如果到系统1500的电力被中断,数据的值或状态是不确定的)。在一个示例中,存储子系统1580包括控制器1582来与存储装置1584相接口。在一个示例中,控制器1582是接口1514或处理器1510的物理部分,或者可包括处理器1510和接口1514两者中的电路或逻辑。
易失性存储器是在到设备的电力被中断的情况下状态不确定(并且因此存储在其中的数据不确定)的存储器。动态易失性存储器使用刷新存储在设备中的数据来维持状态。动态易失性存储器的一个示例包括DRAM(Dynamic Random Access Memory,动态随机访问存储器),或者某种变体,例如同步DRAM(Synchronous DRAM,SDRAM)。易失性存储器的示例包括缓存。如本文所述的存储器子系统可与若干个存储器技术兼容,例如DDR3(双倍数据速率版本3,由JEDEC(Joint Electronic Device Engineering Council,联合电子设备工程委员会)于2007年6月16日最初发布)。DDR4(DDR版本4,初始规范由JEDEC于2012年9月发布),DDR4E(DDR版本4),LPDDR3(低功率DDR版本3,JESD209-3B,2013年8月由JEDEC发布),LPDDR4(LPDDR版本4,JESD209-4,最初由JEDEC于2014年8月发布),WIO2(宽输入/输出版本2,JESD229-2,最初由JEDEC于2014年8月发布),HBM(高带宽存储器,JESD325,最初由JEDEC于2013年10月发布)、LPDDR5(当前在被JEDEC讨论)、HBM2(HBM版本2,当前在被JEDEC讨论),或者其他存储器技术或存储器技术的组合,以及基于这种规范的衍生或扩展的技术。
非易失性存储器(non-volatile memory,NVM)设备是一种存储器,其状态即使在到该设备的电力被中断的情况下也是确定的。在一个实施例中,NVM设备可包括可块寻址的存储器设备,例如NAND技术,或者更具体而言,多阈值级NAND闪存(例如,单级单元(Single-Level Cell,“SLC”),多级单元(Multi-Level Cell,“MLC”),四级单元(Quad-Level Cell,“QLC”),三级单元(Tri-Level Cell,“TLC”),或者一些其他NAND)。NVM设备还可包括可字节寻址的就地写入的三维交叉点存储器设备,或者其他可字节寻址的就地写入的NVM设备(也称为持续性存储器),例如单级或多级相变存储器(Phase Change Memory,PCM)或者带开关的相变存储器(phase change memory with a switch,PCMS),OptaneTM存储器,使用硫属化合物相变材料(例如,硫属化合物玻璃)的NVM设备,包括金属氧化物基、氧空位基、和导电桥随机访问存储器(Conductive Bridge Random Access Memory,CB-RAM)的电阻性存储器,纳米线存储器,铁电随机访问存储器(FeRAM、FRAM),包含了忆阻器技术的磁阻随机访问存储器(magneto resistive random access memory,MRAM),自旋转移矩(spintransfer torque,STT)-MRAM,基于自旋电磁结存储器的设备,基于磁性隧道结(magnetictunneling junction,MTJ)的设备,基于DW(Domain Wall,畴壁)和SOT(Spin OrbitTransfer,自旋轨道转移)的设备,基于晶闸管的存储器设备,或者上述各项中的一个或多个的组合,或者其他存储器。
电源(未描绘)向系统1500的组件提供电力。更具体而言,电源通常与系统1500中的一个或多个电力供应源接口,以向系统1500的组件提供电力。在一个示例中,电力供应源包括AC到DC(交流电到直流电)适配器,以插入到壁式插座中。这种AC电力可以是可再生能量(例如,太阳能)电源。在一个示例中,电源包括DC电源,例如外部AC到DC转换器。在一个示例中,电源或电力供应源包括无线充电硬件,以经由接近充电场来充电。在一个示例中,电源可包括内部电池、交流供应源、基于运动的电力供应源、太阳能电力供应源、或者燃料电池源。
在一示例中,可以使用处理器、存储器、存储装置、网络接口、和其他组件的互连计算托架来实现系统1500。可以使用高速互连,例如:以太网(IEEE 802.3)、远程直接存储器访问(remote direct memory access,RDMA)、InfiniBand、互联网广域RDMA协议(InternetWide Area RDMA Protocol,iWARP)、传输控制协议(Transmission Control Protocol,TCP)、用户数据报协议(User Datagram Protocol,UDP)、快速UDP互联网连接(quick UDPInternet Connection,QUIC)、基于聚合以太网的RDMA(RDMA over Converged Ethernet,RoCE)、快速外围组件互连(Peripheral Component Interconnect express,PCIe)、英特尔QuickPath互连(QuickPath Interconnect,QPI)、英特尔超级路径互连(Ultra PathInterconnect,UPI)、英特尔片上系统架构(Intel On-Chip System Fabric,IOSF)、Omni-Path、计算快速链路(Compute Express Link,CXL)、HyperTransport、高速架构、NVLink、高级微控制器总线体系结构(Advanced Microcontroller Bus Architecture,AMBA)互连、OpenCAPI、Gen-Z、无限架构(Infinity Fabric,IF)、加速器缓存相干互连(Cache CoherentInterconnect for Accelerator,CCIX)、3GPP长期演进(Long Term Evolution,LTE)(4G)、3GPP 5G、以及这些的变体。可以使用诸如基于架构的NVMe(NVMe over Fabrics,NVMe-oF)或NVMe之类的协议将数据拷贝或存储到虚拟化存储节点或者访问数据。
本文的实施例可被实现在各种类型的计算、智能电话、平板、个人计算机、和联网设备中,例如交换机、路由器、机架、和刀片服务器,例如在数据中心和/或服务器场环境中使用的那些。数据中心和服务器场中使用的服务器包括阵列式服务器配置,例如基于机架的服务器或刀片服务器。这些服务器经由各种网络配设在通信中互连,例如将各组服务器划分为局域网(Local Area Network,LAN),在LAN之间有适当的交换和路由设施,以形成私有内联网。例如,云主机设施通常可采用具有众多服务器的大型数据中心。刀片包括单独的计算平台,该计算平台被配置为执行服务器类型的功能,即,“卡上服务器”。因此,每个刀片包括传统服务器所共有的组件,包括主印刷电路板(主板),其提供内部布线(例如,总线),用于耦合适当的集成电路(integrated circuit,IC)和安放到板上的其他组件。
在一些示例中,可联系以下事物来使用本文描述的网络接口和其他实施例:基站(例如,3G、4G、5G,等等),宏基站(例如,5G网络),皮站(例如,IEEE 802.11兼容接入点),纳米站(例如,用于点对多点(Point-to-MultiPoint,PtMP)应用),驻地内数据中心,驻地外数据中心,边缘网络元件,雾网络元件,和/或混合数据中心(例如,使用虚拟化、云和软件定义联网来跨物理数据中心和分布式多云环境递送应用工作负载的数据中心)。
可以利用硬件元素、软件元素、或者两者的组合来实现各种示例。在一些示例中,硬件元素可包括设备、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器,等等)、集成电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组,等等。在一些示例中,软件元素可包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或者这些的任意组合。确定一示例是否利用硬件元素和/或软件元素来实现可按照给定的实现方式所期望的根据任何数目的因素而变化,例如期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度、以及其他设计或性能约束。处理器可以是硬件状态机、数字控制逻辑、中央处理单元、或者任何硬件、固件、和/或软件元素的一个或多个组合。
一些示例可以利用制品或者至少一个计算机可读介质来实现或者被实现为制品或者至少一个计算机可读介质。计算机可读介质可包括非暂态存储介质来存储逻辑。在一些示例中,非暂态存储介质可包括一种或多种类型的能够存储电子数据的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦除或不可擦除存储器、可写或可改写存储器,等等。在一些示例中,逻辑可包括各种软件元素,例如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或者这些的任意组合。
根据一些示例,计算机可读介质可包括非暂态存储介质来存储或维护指令,这些指令当被机器、计算设备、或系统执行时,使得该机器、计算设备、或系统执行根据描述的示例的方法和/或操作。指令可包括任何适当类型的代码,例如源代码、经编译的代码、经解析的代码,可执行代码、静态代码、动态代码,等等。可根据预定的计算机语言、方式、或语法来实现指令,用于指示机器、计算设备、或系统执行特定的功能。可利用任何适当的高级别的、低级别的、面向对象的、视觉的、编译的、和/或解析的编程语言来实现指令。
至少一个示例的一个或多个方面可由存储在至少一个机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现,这些指令当被机器、计算设备、或系统读取时,使得该机器、计算设备、或系统制作逻辑来执行本文描述的技术。这种被称为“IP核”的表现形式可被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到实际制作该逻辑或处理器的制作机器中。
短语“一个示例”或者“一示例”的出现不一定全都指的是同一示例或实施例。本文描述的任何方面可以与本文描述的任何其他方面或类似方面相组合,无论这些方面是否是针对同一附图或元素来描述的。附图中描绘的块功能的分割、省略、或包括并不推断出用于实现这些功能的硬件组件、电路、软件、和/或元件在实施例中一定会被分割、省略、或包括。
可利用表述“耦合”和“连接”以及其衍生词来描述一些示例。这些术语并不一定打算是彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可指示出两个或更多个元素与彼此发生直接物理或电气接触。然而,术语“耦合”也可以指两个或更多个元素没有与彼此发生直接接触,但仍与彼此合作或交互。
术语“第一”、“第二”之类的在本文中并不表示任何顺序、数量、或重要性,而是用来区分一个元素与另一个元素。本文的术语“一”并不表示对数量的限制,而是表示至少一个被提及的项目的存在。本文提到信号时使用的术语“断言”指的是该信号的一种状态,在这种状态下,信号是有效的,并且该状态可以通过向该信号施加任何逻辑电平(无论是逻辑0还是逻辑1)来实现。术语“随后”或“之后”可以指紧随在后或者跟随在某个或某些其他事件之后。根据替换实施例,也可以执行其他操作序列。此外,取决于特定的应用,可以添加或去除额外的操作。可以使用变化的任意组合,并且受益于本公开的本领域普通技术人员将会理解其许多变化、修改、和替代性实施例。
除非另有具体声明,否则诸如短语“X、Y、或Z中的至少一者”这样的析取语言在上下文内被理解为一般用来陈述一项目、术语等等可以是X、Y、或Z,或者其任意组合(例如,X、Y、和/或Z)。从而,这种析取语言一般不打算也不应当暗示某些实施例要求至少一个X、至少一个Y、或者至少一个Z的每一者存在。此外,除非另有具体声明,否则诸如短语“X、Y、和Z中的至少一者”这样的连接性语言也应当被理解为指X、Y、Z或者其任意组合,包括“X、Y、和/或Z。”
下面提供本文公开的设备、系统和方法的说明性示例。设备、系统和方法的实施例可包括下面描述的示例中的任何一个或多个,以及其任意组合。
示例1包括一个或多个示例,并且包括计算机可读介质,该介质包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:提供到操作系统(OS)的接口以创建不同存储器池类别来分配给一个或多个进程,并且将存储器池类别分配给所述一个或多个进程中的进程。
示例2包括一个或多个示例,其中,所述接口包括应用程序接口(API)或配置文件。
示例3包括一个或多个示例,其中,所述不同存储器池类别中的存储器池类别定义可供所述一个或多个进程访问的至少一个存储器池中的存储器设备的混合。
示例4包括一个或多个示例,包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:将存储器设备与多个存储器池类别相关联以提供多个不同种类的存储器资源能力。
示例5包括一个或多个示例,包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:基于存储器资源可用性的变化来改变与所述不同存储器池类别中的存储器池类别相关联的存储器设备。
示例6包括一个或多个示例,包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:将所述不同存储器池类别中的存储器池类别与服务水平协议(SLA)类别相关联,其中,所述SLA类别指定所述一个或多个进程中的进程所要求的存储器资源能力。
示例7包括一个或多个示例,其中,基于所述一个或多个进程中的进程到另一计算节点的迁移,迁移的进程保留对分配的存储器池类别的访问。
示例8包括一个或多个示例,包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:基于一时间段中的访问次数将两个或更多个存储器页的群组分类到集群中;基于所述时间段中的访问次数将两个或更多个存储器页的第二群组分类到第二集群中;并且在逐集群的基础上,确定是否要预取或者迁移与集群相关联的数据。
示例9包括一个或多个示例,包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:提供在用户空间进程处在一时间范围中的页访问次数以识别随着时间的推移对页的访问。
示例10包括一个或多个示例,包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:预测与所述集群相关联的数据在未来时间段中是否要被访问,其中,确定是否要预取或迁移与所述集群相关联的数据包括:基于预测到与所述集群相关联的数据在所述未来时间段中要被访问,将所述数据预取到相比存储所述数据的存储器与更低延时的访问相关联的存储器中。
示例11包括一个或多个示例,包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:基于预测到与所述集群相关联的数据在所述未来时间段中不会被访问,将所述数据迁移到相比存储所述数据的存储器与更高延时的访问相关联的存储器中。
示例12包括一个或多个示例,其中,将所述数据预取到相比存储所述数据的存储器与更低延时的访问相关联的存储器中包括:当预期存储器带宽占用小于阈值时,引起数据迁移。
示例13包括一个或多个示例,并且包括一种装置,该装置包括:存储器池,其包括存储器设备和电路,所述电路当操作时被配置为:联系对存储器池类别的访问,提供对所述存储器池中的一个或多个存储器设备的集合的访问,其中所述存储器池中的一个或多个存储器设备的集合被分配到所述存储器池类别。
示例14包括一个或多个示例,其中,所述存储器池类别定义所述存储器池中可供一个或多个进程访问的存储器设备的混合。
示例15包括一个或多个示例,其中,所述存储器池中的一个或多个存储器设备的第二集合被分配到第二存储器池类别,并且其中,所述一个或多个存储器设备的集合和第二集合与不同种类的存储器资源能力相关联。
示例16包括一个或多个示例,包括与所述存储器池通信地耦合的服务器,其中,进程被分配来访问与所述存储器池类别相关联的一个或多个存储器设备的集合,并且其中,基于所述进程从所述服务器到另一服务器的迁移,迁移的进程保留对所述一个或多个存储器设备的集合的访问。
示例17包括一个或多个示例,包括与所述存储器池通信地耦合并且包括存储器设备的服务器,其中,所述存储器设备被分配到所述存储器池类别。
示例18包括一个或多个示例,包括与所述存储器池通信地耦合的服务器,其中,所述服务器:提供到操作系统(OS)的接口以创建不同存储器池类别来分配给在所述服务器上执行的一个或多个进程,并且将所述存储器池类别分配给所述一个或多个进程中的进程。
示例19包括一个或多个示例,包括数据中心,其中,所述数据中心包括所述服务器、第二服务器、以及所述存储器池,并且其中,所述第二服务器执行协调器来基于服务器的能力选择执行进程的服务器,以访问与满足或超过与所述进程相关联的服务水平协议(SLA)的存储器池类别相关联的一个或多个存储器设备的集合。
示例20包括一个或多个示例,并且包括一种方法,该方法包括:将不同存储器池类别中的一个存储器池类别分配给进程,其中,分配的存储器池类别与包括存储器池的存储器设备的存储器设备的混合相关联。
示例21包括一个或多个示例,并且包括基于一时间段中的访问次数将两个或更多个存储器页的群组分类到集群中;基于所述时间段中的访问次数将两个或更多个存储器页的第二群组分类到第二集群中;并且在逐集群的基础上,确定是否要预取或者迁移与集群相关联的数据。
Claims (21)
1.一种计算机可读介质,包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:
提供到操作系统(OS)的接口以创建不同存储器池类别来分配给一个或多个进程,并且
将存储器池类别分配给所述一个或多个进程中的进程。
2.如权利要求1所述的计算机可读介质,其中,所述接口包括应用程序接口(API)或配置文件。
3.如权利要求1所述的计算机可读介质,其中,所述不同存储器池类别中的存储器池类别定义可供所述一个或多个进程访问的至少一个存储器池中的存储器设备的混合。
4.如权利要求1所述的计算机可读介质,包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:
将存储器设备与多个存储器池类别相关联以提供多个不同种类的存储器资源能力。
5.如权利要求1所述的计算机可读介质,包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:
基于存储器资源可用性的变化来改变与所述不同存储器池类别中的存储器池类别相关联的存储器设备。
6.如权利要求1所述的计算机可读介质,包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:
将所述不同存储器池类别中的存储器池类别与服务水平协议(SLA)类别相关联,其中,所述SLA类别指定所述一个或多个进程中的进程所要求的存储器资源能力。
7.如权利要求1所述的计算机可读介质,其中,基于所述一个或多个进程中的进程到另一计算节点的迁移,迁移的进程保留对分配的存储器池类别的访问。
8.如权利要求1所述的计算机可读介质,包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:
基于一时间段中的访问次数将两个或更多个存储器页的群组分类到集群中;
基于所述时间段中的访问次数将两个或更多个存储器页的第二群组分类到第二集群中;并且
在逐集群的基础上,确定是否要预取或者迁移与集群相关联的数据。
9.如权利要求8所述的计算机可读介质,包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:
向用户空间进程提供在一时间范围中的页访问次数以识别随着时间的推移对页的访问。
10.如权利要求8所述的计算机可读介质,包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:
预测与所述集群相关联的数据在未来时间段中是否要被访问,其中,确定是否要预取或者迁移与所述集群相关联的数据包括:
基于预测到与所述集群相关联的数据在所述未来时间段中要被访问,将所述数据预取到相比存储所述数据的存储器与更低延时的访问相关联的存储器中。
11.如权利要求10所述的计算机可读介质,包括存储在其上的指令,所述指令在被一个或多个处理器执行的情况下使得所述一个或多个处理器:
基于预测到与所述集群相关联的数据在所述未来时间段中不会被访问,将所述数据迁移到相比存储所述数据的存储器与更高延时的访问相关联的存储器中。
12.如权利要求10所述的计算机可读介质,其中,将所述数据预取到相比存储所述数据的存储器与更低延时的访问相关联的存储器中包括:
基于存储器带宽占用而引起数据迁移。
13.一种装置,包括:
存储器池,包括存储器设备和电路,所述电路当操作时被配置为:
联系对存储器池类别的访问,提供对所述存储器池中的一个或多个存储器设备的集合的访问,其中,所述存储器池中的所述一个或多个存储器设备的集合被分配到所述存储器池类别。
14.如权利要求13所述的装置,其中,所述存储器池类别定义所述存储器池中可供一个或多个进程访问的存储器设备的混合。
15.如权利要求13所述的装置,其中,所述存储器池中的一个或多个存储器设备的第二集合被分配到第二存储器池类别,并且其中,所述一个或多个存储器设备的集合和第二集合与不同种类的存储器资源能力相关联。
16.如权利要求13所述的装置,包括与所述存储器池通信地耦合的服务器,其中,进程被分配来访问与所述存储器池类别相关联的所述一个或多个存储器设备的集合,并且其中,基于所述进程从所述服务器到另一服务器的迁移,迁移的进程保留对所述一个或多个存储器设备的集合的访问。
17.如权利要求13所述的装置,包括与所述存储器池通信地耦合并且包括存储器设备的服务器,其中,所述存储器设备被分配到所述存储器池类别。
18.如权利要求13所述的装置,包括与所述存储器池通信地耦合的服务器,其中,所述服务器:
提供到操作系统(OS)的接口以创建不同存储器池类别来分配给在所述服务器上执行的一个或多个进程,并且
将所述存储器池类别分配给所述一个或多个进程中的进程。
19.如权利要求18所述的装置,包括数据中心,其中,所述数据中心包括所述服务器、第二服务器、以及所述存储器池,并且其中,所述第二服务器执行协调器来基于与进程相关联的服务水平协议(SLA)选择执行该进程的服务器。
20.一种方法,包括:
将不同存储器池类别中的一个存储器池类别分配给进程,其中,分配的存储器池类别与包括存储器池的存储器设备的存储器设备的混合相关联。
21.如权利要求20所述的方法,包括:
基于一时间段中的访问次数将两个或更多个存储器页的群组分类到集群中;
基于所述时间段中的访问次数将两个或更多个存储器页的第二群组分类到第二集群中;并且
在逐集群的基础上,确定是否要预取或者迁移与集群相关联的数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/514,530 | 2021-10-29 | ||
US17/514,530 US20220050722A1 (en) | 2021-10-29 | 2021-10-29 | Memory pool management |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116069240A true CN116069240A (zh) | 2023-05-05 |
Family
ID=80224206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211107532.6A Pending CN116069240A (zh) | 2021-10-29 | 2022-09-13 | 存储器池管理 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220050722A1 (zh) |
CN (1) | CN116069240A (zh) |
DE (1) | DE102022124530A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112311826B (zh) * | 2019-07-30 | 2022-05-03 | 贵州白山云科技股份有限公司 | 内容分发系统中访问请求的处理方法、装置及系统 |
US20210117334A1 (en) * | 2020-12-23 | 2021-04-22 | Intel Corporation | Memory controller to manage quality of service enforcement and migration between local and pooled memory |
US11789649B2 (en) * | 2021-04-22 | 2023-10-17 | Nvidia Corporation | Combined on-package and off-package memory system |
US20230168952A1 (en) * | 2021-11-30 | 2023-06-01 | International Business Machines Corporation | Buffer pool resource allocation |
-
2021
- 2021-10-29 US US17/514,530 patent/US20220050722A1/en active Pending
-
2022
- 2022-09-13 CN CN202211107532.6A patent/CN116069240A/zh active Pending
- 2022-09-23 DE DE102022124530.6A patent/DE102022124530A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102022124530A1 (de) | 2023-05-04 |
US20220050722A1 (en) | 2022-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210073151A1 (en) | Page-based remote memory access using system memory interface network device | |
US20220050722A1 (en) | Memory pool management | |
US20210271517A1 (en) | Resource selection based in part on workload | |
CN115039077A (zh) | 为实时虚拟化执行环境迁移维护存储命名空间标识符 | |
CN115210693A (zh) | 具有可预测时延的存储事务 | |
CN112988632A (zh) | 设备之间的共享存储器空间 | |
US10733110B1 (en) | Collecting statistics for persistent memory | |
US20210117244A1 (en) | Resource manager access control | |
US20220029929A1 (en) | Technologies that provide policy enforcement for resource access | |
US20210359955A1 (en) | Cache allocation system | |
US20210258265A1 (en) | Resource management for components of a virtualized execution environment | |
US20210326177A1 (en) | Queue scaling based, at least, in part, on processing load | |
US20220086226A1 (en) | Virtual device portability | |
US20210329354A1 (en) | Telemetry collection technologies | |
CN114662088A (zh) | 用于提供对内核和用户空间存储器区域的访问的技术 | |
WO2022271246A1 (en) | Network interface device management of service execution failover | |
EP4145284A1 (en) | Technologies to offload workload execution | |
CN112513821A (zh) | 用于scm应用的多实例2lm架构 | |
CN115904212A (zh) | 数据处理的方法、装置、处理器和混合内存系统 | |
CN116389542A (zh) | 具有可配置的池化资源的平台 | |
CN112992207A (zh) | 用于减少未对齐的写入操作的写入放大的缓冲器 | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
US20220197819A1 (en) | Dynamic load balancing for pooled memory | |
US20220334963A1 (en) | Memory access tracing | |
EP4030284A1 (en) | Virtual device portability |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |