CN114385073A - 操作存储系统的方法和对存储资源的层级进行分区的方法 - Google Patents
操作存储系统的方法和对存储资源的层级进行分区的方法 Download PDFInfo
- Publication number
- CN114385073A CN114385073A CN202110953967.1A CN202110953967A CN114385073A CN 114385073 A CN114385073 A CN 114385073A CN 202110953967 A CN202110953967 A CN 202110953967A CN 114385073 A CN114385073 A CN 114385073A
- Authority
- CN
- China
- Prior art keywords
- client
- partition
- workload
- storage
- hierarchy
- 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
- 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
- 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/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- 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/5083—Techniques for rebalancing the load in a distributed 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
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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
Abstract
公开了操作存储系统的方法和对存储资源的层级进行分区的方法。操作存储系统的方法可包括:将存储资源的层级的第一分区分配给第一客户端,其中,所述层级至少部分地作为存储缓存进行操作,将存储资源的所述层级的第二分区分配给第二客户端,监视第一客户端的工作负载,监视第二客户端的工作负载,以及基于监视的第一客户端的工作负载和监视的第二客户端的工作负载,将存储资源的所述层级的第一分区重新分配给第一客户端。所述方法还可包括:基于监视的第一客户端的工作负载和监视的第二客户端的工作负载,将存储资源的所述层级的第二分区重新分配给第二客户端。
Description
本申请要求于2020年10月6日提交的题为“具有分区管理的分解式存储的系统、方法和装置(Systems,Methods,and Devices for Disaggregated Storage with PartitionManagement)”的第63/088,447号美国临时专利申请以及于2021年2月4日提交的第17/168,172号美国专利申请的优先权和权益,其通过引用被包含。
技术领域
本公开总体涉及数据处理,更具体地,涉及用于存储资源的分区管理的系统、方法和装置。
背景技术
存储系统可将存储资源划分为分区,以供一个或多个存储客户端使用。
在该背景技术部分中公开的上述信息仅用于增强对发明的背景的理解,因此,它可包含不构成现有技术的信息。
发明内容
一种操作存储系统的方法可包括:将存储资源的层级的第一分区分配给第一客户端,其中,所述层级至少部分地作为存储缓存进行操作;将存储资源的所述层级的第二分区分配给第二客户端;监视第一客户端的工作负载;监视第二客户端的工作负载;以及基于监视的第一客户端的工作负载和监视的第二客户端的工作负载将存储资源的所述层级的第一分区重新分配给第一客户端。所述方法还可包括:基于监视的第一客户端的工作负载和监视的第二客户端的工作负载,将存储资源的所述层级的第二分区重新分配给第二客户端。第一分区可基于第一客户端的工作负载的输入和/或输出(I/O)需求被重新分配。第一分区可基于第二客户端的工作负载的I/O需求被重新分配。第一分区可基于第一客户端的工作负载的性能改变估计被重新分配。第一分区可基于第二客户端的工作负载的性能改变估计被重新分配。第一分区可基于第一客户端的工作负载的读写比率被重新分配。第一分区可基于第一客户端的工作负载的工作集被重新分配。第一分区可基于第一客户端的工作负载的工作卷被重新分配。
一种系统可包括:存储层,包括存储资源的被配置为至少部分地作为存储缓存进行操作的层级;应用服务器层,被配置为处理来自第一客户端和第二客户端的针对存储层的I/O请求;监视逻辑,被配置为监视第一客户端的工作负载和第二客户端的工作负载;决策逻辑,被配置为基于监视的第一客户端的工作负载和监视的第二客户端的工作负载来确定调整的分区方案;以及分区逻辑,被配置为将存储资源的所述层级的第一分区分配给第一客户端,将存储资源的所述层级的第二分区分配给第二客户端,并且基于调整的分区方案将存储资源的所述层级的第一分区重新分配给第一客户端。监视逻辑可包括I/O滤波器。监视逻辑可包括超级监督者。应用服务器层可包括被配置为将标准化的I/O接口提供给第一客户端和第二客户端的接口。
一种对存储资源的层级进行分区的方法可包括:确定所述层级的第一客户端和所述层级的第二客户端的读取工作卷和写入工作卷;基于读取工作卷和写入工作卷来确定工作负载类型;以及基于工作负载类型在第一客户端与第二客户端之间对存储资源的所述层级进行分区。所述方法还可包括基于读取工作卷和写入工作卷确定读取比率;以及基于读取比率来确定工作负载类型。基于读取比率确定工作负载类型的步骤可包括将读取比率与阈值进行比较。所述方法还可包括基于工作负载类型来确定工作集大小;以及基于工作集大小在第一客户端与第二客户端之间对存储资源的所述层级进行分区。所述方法还可包括基于工作负载类型来确定工作卷大小;以及基于工作卷大小在第一客户端与第二客户端之间对存储资源的所述层级进行分区。
一种检测存储资源的层级的访问的突发的方法可包括:监视存储资源的所述层级的工作负载,确定工作负载的突发度,以及基于突发度检测访问的突发。基于突发度检测访问的突发的步骤可包括将突发度与突发阈值进行比较。确定工作负载的突发度的步骤可包括确定工作负载的读取强度。确定工作负载的突发度的步骤可包括确定工作负载的工作卷的改变,并且基于工作负载的工作卷的改变来计算突发度。确定工作负载的突发度的步骤可包括确定工作负载的工作集的改变,并且基于工作负载的工作集的改变来计算突发度。
一种对存储资源的层级进行分区的方法可包括:监视存储资源的所述层级的工作负载,基于监视的工作负载确定第一客户端的第一缓存需求,基于监视的工作负载确定第二客户端的第二缓存需求,至少部分基于第一缓存需求将存储资源的所述层级的第一分区分配给第一客户端,以及至少部分基于第二缓存需求将存储资源的所述层级的第二分区分配给第二客户端。第一分区和第二分区可至少部分地与第一缓存需求和第二缓存需求成比例被分配。确定第一缓存需求的步骤可包括确定第一客户端的第一工作负载量,确定第二缓存需求的步骤可包括确定第二客户端的第二工作负载量。第一工作负载量和第二工作负载量可至少部分基于监视的工作负载的强度被确定。第一工作负载量可至少部分基于第一客户端的工作卷大小被确定,第二工作负载量可至少部分基于第二客户端的工作卷大小被确定。第一工作负载量可至少部分基于第一客户端的工作集大小被确定,第二工作负载量可至少部分基于第二客户端的工作集大小被确定。所述方法还可包括对第一工作负载量进行加权,以及对第二工作负载量进行加权。所述方法还可包括基于加权的第一工作负载量和加权的第二工作负载量对第一客户端和第二客户端进行排序。所述方法还可包括至少部分基于加权的第一工作负载量将存储资源的所述层级的第一分区分配给第一客户端,以及至少部分基于加权的第二工作负载量将存储资源的所述层级的第二分区分配给第二客户端。
一种对存储资源的层级进行分区的方法可包括:确定针对存储资源的所述层级的第一客户端和第二客户端的第一分区计划;基于第一分区计划确定第一预期缓存命中量;确定针对存储资源的所述层级的第一客户端和第二客户端的第二分区计划;基于第二分区计划确定第二预期缓存命中量;以及基于第一预期缓存命中量和第二预期缓存命中量来选择第一分区计划或第二分区计划中的一个。所述方法还可包括:基于第一分区计划来确定第一客户端的第一预期命中率;基于第一分区计划来确定第二客户端的第二预期命中率;基于第一分区计划来确定第一客户端的第一预期工作卷;以及基于第一分区计划来确定第二客户端的第二预期工作卷。确定第一预期缓存命中量的步骤可包括确定第一客户端的第一预期命中率和第一预期工作卷与第二客户端的第二预期命中率和第二预期工作卷的加权和。所述方法还可包括:确定针对存储资源的所述层级的第一客户端和第二客户端的第三分区计划,基于第三分区计划确定第三预期缓存命中量,基于第一预期缓存命中量、第二预期缓存命中量和第三预期缓存命中量来选择第一分区计划、第二分区计划或第三分区计划中的一个。
一种确定针对存储资源的层级的客户端的预期缓存命中率的方法可包括:通过客户端针对存储资源的所述层级记录I/O事务;基于记录的I/O事务来确定重用距离;以及基于重用距离确定预期缓存命中率。确定预期缓存命中率的步骤可包括:基于记录的I/O事务来确定重用距离的分布函数,以及基于分布函数确定预期缓存命中率。预期缓存命中率可基于重用距离与缓存大小之间的差。
一种确定针对存储资源的层级的客户端的预期工作卷的方法可包括:通过客户端针对存储资源的所述层级记录I/O事务;确定记录的I/O事务的加权平均值,以及基于加权平均值来确定预期工作卷。加权平均值可以以指数方式被加权。
一种对存储资源的层级进行分区的方法可包括:将存储资源的所述层级的第一分区分配给客户端,其中,所述层级至少部分地作为存储缓存进行操作;将存储资源的所述层级的第二分区分配给客户端,其中,第二分区的大小可大于第一分区的大小;以及被动更新第二分区。被动更新第二分区的步骤可包括:基于客户端的工作负载的一个或多个I/O事务来更新第二分区。第二分区可基于分区调整和内容更新窗被分配。
一种针对存储资源的层级预取数据的方法可包括:将存储资源的所述层级的第一分区分配给客户端,其中,所述层级至少部分地作为存储缓存进行操作;确定客户端的I/O请求大小的模式;将存储资源的所述层级的第二分区分配给客户端,其中,第二分区的大小可大于第一分区的大小;以及使用基于I/O请求大小的模式的预取数据大小来预取第二分区的数据。预取数据大小可包括客户端的高的I/O大小流行度。所述方法还可包括将放大因子应用到预取数据大小。
一种对存储资源的层级进行分区的方法可包括:基于第一客户端的特性的预先知识,将存储资源的所述层级的第一区域中的第一分区分配给第一客户端;以及基于第二客户端的特性的预先知识,将存储资源的所述层级的第二区域中的第二分区分配给第二客户端。所述方法还可包括调整第一区域的大小和第二区域的大小。第一区域的大小和第二区域的大小可成比例地被调整。第一区域的大小可基于第一区域的第一需求量被调整,第二区域的大小可基于第二区域的需求量被调整。第一区域可包括读取密集型区域,并且第一区域的大小可基于工作集大小被调整。第一区域可包括写入密集型区域,并且第一区域的大小可基于工作卷大小被调整。第一区域可包括读写密集型区域,并且第一区域的大小可基于工作卷大小被调整。所述特性可包括读取比率、工作卷大小或工作集大小中的至少一个。
附图说明
贯穿附图,为了说明的目的,附图不必按比例绘制,并且类似结构或功能的元件通常可由相同的参考标号或由其部分表示。附图仅意在促进在此描述的各种实施例的描述。附图没有描述在此公开的教导的每个方面,并且不限制权利要求的范围。为了防止附图变得模糊,不是所有的组件、连接等会被示出,并且不是所有的组件会具有参考标号。然而,可根据附图容易地清楚组件配置的模式。附图与说明书一起示出本公开的示例实施例,并且与说明书一起用于解释本公开的原理。
图1示出根据公开的示例实施例的存储系统架构的实施例。
图2示出根据公开的示例实施例的存储系统架构的示例实施例。
图3示出根据公开的示例实施例的存储系统软件架构的实施例。
图4示出根据公开的示例实施例的用于面向文件的存储操作的接口的输入和输出的示例实施例。
图5示出根据公开的示例实施例的用于面向对象的存储操作的接口的输入和输出的示例实施例。
图6示出根据公开的示例实施例的存储层的示例实施例。
图7示出根据公开的示例实施例的用于分区管理器系统的工作流架构的示例实施例。
图8示出根据公开的示例实施例的用于分区管理器系统的工作流的时间窗的示例实施例。
图9示出根据公开的示例实施例的混合的读取和写入工作负载的示例实施例。
图10示出根据公开的示例实施例的混合读取和写入工作负载的示例实施例。
图11示出根据公开的示例实施例的突发计算和突发检测方法的示例实施例。
图12示出根据公开的示例实施例的用于突发工作负载的分区方法的方法的示例实施例。
图13示出根据公开的示例实施例的用于命中率估计操作的CDF曲线的示例实施例。
图14示出根据公开的示例实施例的分区和内容更新工作流的示例实施例。
图15示出根据公开的示例实施例的适应性预取大小调整方法的示例实施例。
图16示出根据公开的示例实施例的适应性预取大小调整方法的示例实施例。
图17示出根据公开的示例实施例的基于预先知识的区划方法的示例实施例。
图18示出根据公开的示例实施例的基于预先知识的区划工作流的示例实施例。
图19示出根据公开的示例实施例的操作存储系统的方法的实施例。
具体实施方式
1.引言
1.1概述
具有一个或多个层级(tier)的存储资源的存储系统可将层级中的一个或多个划分成单独的分区,每个分区可由多个存储客户端中的一个访问。例如存储资源可根据访问的特性(诸如,性能、延迟等)被划分成不同的层级。在一些实施例中,根据公开的示例实施例的分区管理器系统可周期性地和/或动态地调整针对存储客户端中的一个或多个的层级中的一个或多个的分区大小。分区调整处理(可被称为重新分区)可改善或优化存储系统的整体性能和/或确保对存储客户端的公平性。在一些实施例中,根据公开的示例实施例的分区管理器系统可基于一个或多个因素(诸如,运行时工作负载分析、性能改善估计、服务质量(QoS)、服务等级协议(SLA)等)来提供自动重新分区的决策制定和/或操作。
1.2存储工作负载
在用于游戏流传输的存储系统的一些实施例中,大百分比的游戏设置(gameplay)输入和/或输出(I/O)工作负载可以是读取密集型或者甚至是只读的。根据公开的示例实施例的分区管理器系统和方法的一些实施例可基于读取密集型工作负载与非读取密集型工作负载之间的差异来提供不同的缓存重新分区策略。
在存储系统的一些实施例中,不同客户端的工作负载可具有不同的行为,并且甚至一个客户端的同一工作负载可在运行时(runtime)期间变化。根据公开的示例实施例的分区管理器系统和方法的一些实施例可将顶层级存储资源均等地分配给每个客户端和/或允许客户端基于客户端需求对顶层级存储资源进行自由竞争。然而,在一些实施例中,这些技术中的一个或两个可能未充分利用包括顶层级存储资源的存储资源。根据公开的示例实施例的分区管理器系统和方法的一些实施例可周期性地捕获和/或预测I/O改变以通过针对具有不同突发水平的工作负载使用不同的分区方法来适应性地重新分配包括顶层级资源的存储资源。根据实现细节,这可提高存储缓存命中率和/或降低I/O管理成本。
在存储系统的一些实施例中,对于不同的工作负载,I/O大小分布可不同。根据公开的示例实施例的分区管理器系统和方法的一些实施例可针对第一-第二-层级(first-second-tier)预取操作使用适应性地I/O大小。根据实现细节,这可提高总体命中率和/或降低I/O延迟。
在存储系统的一些实施例中,在部署阶段期间,可能没有足够的客户端运行时数据可用于实现顶层级缓存存储到客户端的有效分配。根据公开的示例实施例的分区管理器系统和方法的一些实施例可使用例如来自客户端模式库、供应商选择硬件和/或软件、QoS、SLA等的客户端的预先知识(例如,先验知识)来执行顶层级缓存存储到客户端的初始分区。在一些实施例中,可基于一个或多个因素(诸如,工作负载读取比率、工作负载工作集大小等)的预先知识,将不同的客户端放置到不同的工作负载区域中。在一些实施例中,区划(zoning,或称为区域划分)可以是物理区划、虚拟区划和/或它们的任何组合。在物理区划中,粒度可大于或等于存储装置的大小(例如,将多个存储装置分组成一个区域)。在虚拟区划中,粒度可小于或等于存储装置的大小(例如,存储装置内部的区划)。
1.3分区管理
根据公开的示例实施例的分区管理系统和/或方法的一些实施例可对可由多个客户端共享的存储系统的一个或多个层级(例如,顶层级)进行周期性地和/或动态地重新分区。一些实施例可将顶层级存储资源分配给需要它的客户端(例如,基于动态I/O需求)和/或分配给可从其受益最多的客户端(例如,基于性能改善的估计)。分配可基于例如分析运行时工作负载参数(诸如,读写比率、工作集(working set)改变、工作卷(working volume)改变等)。
一些实施例可提供分区优化框架,分区优化框架可考虑一些或所有存储客户端的各种因素(诸如,最近工作负载监视窗期间工作负载的变化、一个或多个客户端的权重(例如,基于QoS、SLA等)、在分区大小增大或减小的情况下可预期的估计命中率等)。
一些实施例可提供突发检测方法以确定当前工作负载是否是突发的。如果当前工作负载是突发的,则系统可能没有足够的时间在I/O突发到达之前应用分区优化框架。因此,对于突发的工作负载,可使用主动分区方案(aggressive partitioning scheme)来快速对客户端之间的存储的顶层级进行分区。在一些实施例中,主动分区方案可基于例如由工作卷大小(对于非读取密集型工作负载)或工作集大小(对于读取密集型工作负载)确定的最近需求来成比例地调整分区。
一些实施例可实现通过在部署阶段期间基于预先知识将客户端分离成不同区域来执行初始分区的技术。根据实现细节,基于区域的分区技术可降低装置侧写入放大、超量供应、购置(ownership)的总成本等,并且可改善延迟、吞吐量、预测能力等。
1.4存储类型
根据公开的示例实施例的分区管理系统、方法、设备、工作流等可与任何类型的存储(诸如,直连式存储(DAS)、存储区域网络(SAN)、分解式存储等)一起使用。
在根据公开的示例实施例的DAS系统中,存储装置(诸如,固态驱动器(SSD)和硬盘驱动器(HDD))可附接到单个服务器。该配置可为在该服务器上运行的任何工作负载提供相对高的性能。存储装置容量和/或性能对该服务器来说可以是可用的,并且容量和/或性能可提高(向服务器添加驱动器)或扩展(通过添加附加的服务器)。
在根据公开的示例实施例的SAN系统中,存储装置可被布置在存储阵列中,存储阵列可被设置为对网络上的一个或多个服务器可用。SAN系统可将存储分配给许多服务器(例如,数十或数百个服务器),这可提高容量利用。
在根据公开的示例实施例的云计算的一些实施例中,客户端装置可被实现为可分配任务和/或收集分配的任务的结果的轻终端,而繁重的计算任务可在远程分布式服务器集群上执行。这种轻终端/重数据中心结构可涉及高可用性存储系统。在一些实施例中,存储输入和/或输出(I/O)可能是例如数据中心中的瓶颈。
在根据公开的示例实施例的分解式存储系统中,一些数量的存储装置可用作可例如通过高性能网络结构分配给网络上的任何服务器的逻辑存储池。在一些实施例中,分解式存储系统可用SAN的灵活性来提供本地存储的性能,和/或可以是动态可重新配置的,这可使得物理资源能够被重新配置以使性能提高或最大化和/或降低延迟。
2.架构
图1示出根据公开的示例实施例的存储系统架构的实施例。图1中示出的架构可表示硬件、软件、工作流和/或它们的任何组合。
图1中示出的实施例可包括应用服务器层104和存储层106。存储层106可包括任何数量和/或类型的存储资源,存储资源可被配置为具有一个或多个层级的池(包括下面描述的那些)。例如,存储资源的第一层级可作为存储资源的一个或多个其他层级的存储缓存进行操作。层级中的一个或多个可被划分成可被分配给存储客户端102中的一个或多个的分区。
应用服务器层104可包括任何数量和/或类型的计算和/或I/O资源,计算和/或I/O资源被配置为使得一个或多个存储客户端102能够访问存储层106中的存储资源池。
应用服务器层104可通过一个或多个连接108连接到存储客户端102中的一个或多个。应用服务器层104可通过一个或多个连接110连接到存储层106。连接108和110可利用任何数量和/或类型的网络、互连等(包括下面描述的那些)来实现。
应用服务器层104和存储层106可分别包括逻辑140和142,逻辑140和142可用于实现由相应层执行的任何功能(诸如,监视系统的操作、做出决策、执行系统操作、执行计算等)。在一些实施例中,逻辑140和142可实现在此公开的任何技术(诸如,监视存储层106的一个或多个层级的工作负载、确定工作负载的读取强度、在I/O访问中检测突发、确定工作卷、确定工作集、确定重新分区策略、对存储层的一个或多个层级进行分区、实现分区策略、实现客户端区划技术等)。
逻辑140和142以及在此描述的任何方法、技术、处理等可利用硬件、软件或它们的任何组合来实现。例如,在一些实施例中,逻辑140和142中的任何一个可利用执行存储在易失性存储器(诸如,动态随机存取存储器(DRAM)和/或静态随机存取存储器(SRAM))、非易失性存储器(诸如,闪存等)以及图形处理器(GPU)、神经处理器(NPU)等中的指令的以下项来实现:组合逻辑、顺序逻辑、一个或多个定时器、计数器、寄存器、状态机、复杂可编程逻辑器件(CPLD)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、复杂指令集计算机(CISC)处理器和/或精简指令集计算机(RISC)处理器等。
针对图1中示出的实施例以及在此描述的所有其他实施例描述的操作和/或组件是示例操作和/或示例组件。在一些实施例中,可省略一些操作和/或组件和/或可包括其他操作和/或组件。此外,在一些实施例中,操作和/或组件的时间顺序和/或空间顺序可变化。尽管一些组件可被示出为单独的组件,但是在一些实施例中,单独示出的一些组件可集成到单个组件中,和/或示出为单个组件的一些组件可利用多个组件来实现。
2.1数据中心架构
图2示出根据公开的示例实施例的存储系统架构的示例实施例。图2中示出的系统可包括云客户端层(CCL,或者客户端云层)202、应用服务器层(ASL)204和存储层206。在一些实施例中,存储层206可被实现为后端存储层(BSL)。客户端云层202和应用服务器层204可例如通过一个或多个网络208连接。应用服务器层204和存储层206可例如通过I/O路径210连接。
在一些实施例中,客户端云层202可包括任何数量和/或类型的云客户端装置203(例如,异构装置),并且最终可通过网络208中的一个或多个连接到应用服务器层204,云客户端装置203可通过任何数量和/或类型的网络连接到客户端云层202和/或连接在客户端云层202之间。云客户端装置203的示例可包括台式计算机和/或膝上型计算机、服务器、智能电话、平板计算机、打印机、扫描仪、互联网连接的电器等。客户端云层202可处理任何数量的以下情况和/或处理:I/O拥塞、延迟和/或超时、工作负载激增、丢失分组(droppedpacket)等。
一个或多个网络208可基于任何数量和/或类型的网络硬件、软件、协议等利用任何数量和/或类型的网络(包括局域网(LAN)、城域网(MAN)、广域网(WAN)等)来实现。网络类型的示例可包括以太网、无限带宽、光纤通道、Wi-Fi、蓝牙等。
在一些实施例中,应用服务器层204可利用任何数量和/或类型的服务器设备来实现,服务器设备包括配置在一个或多个机箱、服务器机架、服务器机架组、数据室、数据中心、边缘数据中心、移动边缘数据中心和/或其任何组合等中的主板、交换机板、I/O卡和/或模块、背板、中板、网络接口卡(NIC)等。应用服务器层204可处理任何数量的以下情况和/或处理:资源分配、数据争用、I/O延迟和/或错误、I/O等待和/或排队、I/O超时、锁定(例如,过度锁定)、系统不稳定性、中央处理器(CPU)开销等。
I/O路径210可利用任何数量和/或类型的连接以及它们的组合(诸如,通过结构的NVMe(NVMe-oF)等))来实现,连接包括一个或多个互连和/或协议(诸如,快速外围组件互连(PCIe)、计算快速链路(Compute Express Link,CXL)、高级可扩展接口(AXI)等)、一个或多个存储连接和/或协议(诸如,串行ATA(SATA)、串行附接SCSI(SAS)、非易失性存储器快速(NVMe)等)、一个或多个网络连接和/或协议(诸如,以太网、光纤通道、无线带宽等。
存储层208可利用任何数量和/或类型的存储设备(诸如,固态驱动器(SSD)、硬盘驱动器(HDD)、光盘驱动器、基于任何类型的持久性存储器(诸如,具有体电阻变化的交叉网格的(cross-gridded)非易失性存储器等)的驱动器、和/或它们的任何组合)来实现。这样的设备可以以任何形式和/或配置(例如,具有诸如3.5英寸、2.5英寸、1.8英寸、M.2等的形状因子和/或使用诸如SATA、SAS、U.2等的任何连接器配置的存储装置)来实现。一些实施例可完全或部分地利用服务器机箱、服务器机架、数据室、数据中心、边缘数据中心、移动边缘数据中心和/或它们的任何组合等来实现和/或在服务器机箱、服务器机架、数据室、数据中心、边缘数据中心、移动边缘数据中心和/或它们的任何组合等内实现。
在一些实施例中,应用服务器层204和存储层206的组合可实现数据中心。因此,根据实现细节,应用服务器层204和存储层206可被认为是近场布置,而客户端云层202和应用服务器层204可被认为是远场布置。
图2中示出的实施例还可包括一个或多个分区管理器应用212,分区管理器应用212可例如接口连接在客户端云层202与应用服务器层204之间和/或在应用服务器层204与存储层206之间。在一些实施例中,分区管理器应用可确定如何将存储层206中的存储资源的一个或多个层级(例如,存储资源的顶层级)分配给不同的客户端(例如,云客户端203)和/或它们的应用。
尽管公开的原理不限于任何特定的实现细节,但是为了说明的目的,一些示例实施例可如下实现。客户端云层202可通过利用多Gb以太网连接(例如,10Gb/25Gb/40Gb/100Gb以太网)实现的一个或多个LAN、MAN或WAN连接到应用服务器层204。应用服务器层204可采用一个或多个PCIe互连,PCIe互连可使用PCIe第4代(PCIe Gen 4)递送超过8GB/秒的吞吐量。应用服务器层204可使用一个或多个NVMe-oF连接来连接到存储层206,例如,NVMe存储装置可通过一个或多个NVMe-oF连接来递送数百万的输入和/或输出操作每秒(IOPS)。根据实现细节,这样的实施例可降低或消除带宽限制和/或瓶颈。
2.2软件I/O路径架构
图3示出根据公开的示例实施例的存储系统软件架构的实施例。例如,图3中示出的软件架构可与图2中示出的存储系统架构一起使用,但是它也可与其他系统一起使用。图3中示出的实施例可包括云客户端层(CCL)302、应用服务器层(ASL)304和存储层(例如,BSL)306。
在一些实施例中,客户端云层302可包括一个或多个客户端303,每个客户端303可运行一个或多个操作系统(OS)316和一个或多个应用(APP)314。在该示例中,可存在N个客户端(其中,N是正整数):客户端1、客户端2、……、客户端N。在一些实施例中,客户端303可被建模为操作系统316和/或应用314。根据实现细节,客户端303可具有一个或多个操作系统316和/或应用314。此外,每个操作系统316可托管(host)任何数量的应用314。
根据实现细节,客户端中的一些或全部可彼此隔离。客户端的示例可包括图2中示出的任何单独的客户端203以及例如可从云服务供应商租给用户的一个或多个虚拟机(VM)。根据实现细节,客户端303(诸如,VM)可基于例如用户应用而具有不同的工作负载特性,因此它们可对存储I/O速度具有不同水平的敏感度。
每个客户端303(也可被称为存储客户端)可通过网络连接318连接到应用服务器层304,网络连接318可例如使用任何数量和/或类型的网络连接(诸如,上面参照图2描述的网络连接)来实现。对于VM,网络连接可被实现为虚拟网络连接。
应用服务器层304可包括I/O过滤器320、分区管理器接口(或称为接口)322和分区决策制定器324。在一些实施例中,I/O过滤器320可利用一个或多个超级监督者(hypervisor,又称为虚拟机监视器)来实现或者作为一个或多个超级监督者的一部分来实现,超级监督者也可用于例如实现客户端VM。I/O过滤器320可采集客户端的与I/O相关的统计信息,并将这些统计信息提供给分区决策制定器324。在包括超级监督者的实施例中,可使用超级监督者软件来托管一个或多个VM,超级监督者软件可具有可用于处理I/O请求和/或采集I/O统计信息的内置的I/O过滤器函数(例如,“IOFilter()”)。为了说明的目的,图3中示出的实施例中的I/O过滤器320可被示出为超级监督者,但是其他类型的I/O过滤器可被使用。
在一些实施例中,分区管理器接口322可为客户端303中的一个或多个提供标准I/O接口。根据实现细节,如下面更详细描述的那样,分区管理器接口322可为基于文件的系统、键值对象存储系统和/或任何其他类型的存储系统和/或它们的组合提供操作。分区管理器接口322可通过I/O路径326与存储层306接口连接,I/O路径326可使用任何数量和/或类型的连接(诸如,参照图2中示出的I/O路径210描述的连接)来实现。
分区决策制定器324可在各种时间(例如,以周期性间隔)做出决策,以触发存储层306的一个或多个层级的重新分区。例如,如果一个或多个客户端被迁移到其他层级,则重新分区可基于预测的客户端性能以及相应的迁移开销。
存储层306可操作存储装置的一个或多个层级328,存储装置的一个或多个层级328被布置为例如可在不同客户端之间分配的存储资源的池。在该示例中,可存在M个层级(其中,M是正整数):层级1、层级2、……、层级M。在一些实施例中,不同的层级可具有不同的特性(例如,访问速度、容量等之间的权衡)。在图3中示出的实施例中,所有存储装置可被示出为各种类型的SSD,但是任何类型和/或配置的存储资源可被使用。
存储层306还可包括分区器330,分区器330可基于来自分区决策制定器324的分区决策来执行重新分区操作和/或触发层级328之间(例如,顶层级(层级1)与第二层级(层级2)之间)的一个或多个内容更新。在一些实施例中,根据公开的示例实施例的分区管理器系统的分区器330可针对每个客户端303调整存储池中的一个或多个层级328(例如,顶层级)的分区的分配。客户端303中的每个可访问由分区器330分配的一个或多个层级328的一个或多个相应分区。
尽管图3中示出的一些组件可被示出为与其他特定组件相关联的单独组件,但是在其他实施例中,组件可与其他组件组合、分开和/或相关联。例如,在一些实施例中,分区决策制定器324和分区器330可被组合在位于应用服务器层304、存储层306和/或一些其他位置中的单个组件中。
分区管理器接口322可使得根据公开的示例实施例的分区管理器系统能够例如通过应用编程接口(API)向客户端303提供一个或多个接口和/或功能。
当来自客户端的I/O请求到达应用服务器层304时,超级监督者I/O过滤器(HIF)320可区分每个I/O流并进行统计分析(诸如,确定工作负载改变和/或顶层存储装置缓存命中率)。随后I/O请求可进行到分区管理器接口322,分区管理器接口322可针对各种客户端提供标准I/O接口。
算法1示出根据公开的示例实施例的可在存储层306上为客户端303提供面向文件的存储操作的接口的实施例的一些示例操作。当调用算法1中示出的函数中的一个时,由算法提供的返回类型可由“=>”符号指示。
图4示出根据公开的示例实施例的用于面向文件的存储操作的接口的输入和输出的示例实施例。图4中示出的实施例可例如与算法1中示出的实施例一起使用。图4中示出的每个函数可利用相应的输入来调用。然后,如图4所示,函数可利用相应的输出进行响应。
算法1
算法2示出根据公开的示例实施例的可在为客户端303提供存储层306上的面向对象的存储操作的接口的实施例的一些示例操作。当算法2中示出的函数中的一个被调用时,由算法提供的返回类型可由“=>”符号指示。
算法2
图5示出根据公开的示例实施例的用于面向对象的存储操作的接口的输入和输出的示例实施例。图5中示出的实施例可例如与算法2中示出的实施例一起使用。图5中示出的每个函数可利用相应的输入来调用。然后,如图5中所示,函数可利用相应的输出进行响应。
在算法1和图4中示出的面向文件的实施例中,接口可对文件(可由到文件的路径指向)进行操作。在算法2和图5中示出的面向对象的实施例中,接口可对键值对(可由键指向)进行操作。
在一些实施例中,根据公开的示例实施例的分区管理器系统可基于例如客户端请求来适应不同的存储系统。此外,根据实现细节,适应处理对于云客户端层302和/或存储层306可以是透明的。在一些实施例中,分区管理器接口322可基于对附加的存储类型的客户端需求而被扩展以支持附加的I/O存储类型(例如,定制的I/O存储类型)。
在I/O请求通过分区管理器接口322之后,分区决策制定器324可分析每个客户端的应用的行为和来自存储层级328中的一个或多个(例如,来自可作为存储缓存进行操作的顶层级)的相应反馈。在一些实施例中,分区决策制定器324可使用该分析和反馈来基于诸如服务质量(QoS)和/或每个客户端的实际工作负载行为的因素调整每个客户端的顶层级(层级1)的分区,例如以改善或优化整个存储系统的整体性能和/或确保公平性。分区决策制定器324可基于运行时工作负载分析结果来周期性地和/或动态地调整每个客户端的层级328中的一个或多个(例如,可以是最高性能层级的顶层级)的存储分区大小。
在具有两个或更多个层级的存储装置的一些实施例中,在此描述的算法和/或操作可在多对层级之间(例如,在层级1与层级2之间、在层级2与层级3之间、在层级1与层级3之间等)实现。
表1示出根据公开的示例实施例的全SSD存储层306的示例实施例的一些示例实现细节。每个层级可利用不同类型的存储装置来实现,不同类型的存储装置可具有适合于该层级的不同特性。表1中示出的细节可例如与图3中示出的存储层306的实施例一起使用。
在一些实施例中,出于说明原理的目的,一些示例值、示例参数等可被提供,但是原理不限于这些示例,并且其他值、参数等可被使用。
表1
参照表1,层级1可利用基于持久性存储器(诸如,具有体电阻改变的交叉网格非易失性存储器)的可提供极高的性能的存储装置来实现。层级1可例如作为其他层级中的一个或多个的存储缓存进行操作。层级2可利用单层单元(SLC)NVMe SSD来实现,SLC NVMe SSD可提供高的性能但不如层级1那么高。层级3可利用多层单元(MLC)NVMe SSD来实现,MLCNVMe SSD可提供中等水平性能。层级4和层级5可分别利用三层单元(TLC)NVMe SSD和四层单元(QLC)NVMe SSD来实现,TLC NVMe SSD和QLC NVMe SSD可提供相继更低的性能但容量更高。这样的实施例可用于例如云计算应用。根据公开的示例实施例的分区管理器系统可周期性地和/或动态地调整例如可作为用于存储系统(诸如,分解式存储系统)的存储缓存进行操作的顶层级中的每个客户端的分区。在一些实施例中,根据公开的示例实施例的分区管理器系统可例如在层级2与层级3之间应用类似的调整方法,其中,层级2可作为层级3的缓存层级进行操作等。
图6示出根据公开的示例实施例的存储层的示例实施例。在图6中示出的实施例中,存储层606可实现为具有SSD和HDD的组合的层级628。表2示出可例如与图6中示出的存储层606一起使用的一些示例实现细节。
表2
参照表2,层级1可利用SLC NVMe SSD来实现,SLC NVMe SSD可提供极高水平的性能和相对精细水平的粒度。层级1可例如作为其他层级中的一个或多个的存储缓存进行操作。层级2可利用QLC NVMe SSD来实现,QLC NVMe SSD可提供相对高水平的性能和相对粗糙水平的粒度。层级3可利用HDD来实现,HDD可提供相对低水平的性能和相对粗糙的粒度,但是成本相对低。
图6和表2中示出的实施例可用于例如在线游戏流传输服务数据中心。顶层级(层级1)可用于缓存运行时游戏数据(诸如,游戏的运行时实例、元数据、游戏设置的状态、热游戏图像(例如,热文件)的全部或部分等)。一些实施例可使用增量差分存储(deltadifferential storage)方法来进一步节省空间。第二层级(层级2)可具有相对高的性能和相对大的容量的组合来缓存热游戏图像。因此,层级2可作为层级3的缓存进行操作。第三层级(层级3)可具有大的容量,并且可用作游戏图像(例如,所有游戏图像)的储存库。
2.3工作流架构
图7示出根据公开的示例实施例的用于分区管理器系统的工作流架构的示例实施例。图7中示出的实施例可例如在在此公开的包括图1至图6中示出的实施例的任何实施例上使用、与在此公开的包括图1至图6中示出的实施例的任何实施例一起使用、与在此公开的包括图1至图6中示出的实施例的任何实施例结合使用等。出于说明的目的,可在具有存储层的系统的上下文中描述图7中示出的实施例,存储层具有可作为一个或多个其他层级的存储缓存进行操作的顶层级。然而,原理可应用于层级和/或缓存的任何其他配置。
图7中示出的实施例可包括工作负载监视器子系统(子系统1)702、突发检测器子系统(子系统2)710、策略选择器子系统(子系统3)718以及分区操作器子系统(子系统4)724。工作负载监视器子系统702可包括工作负载状态监视器(组件1)704和命中率监视器组件(组件2)706。突发检测器子系统710可包括突发度(burst degree)计算器(组件3)714以及突发检测器(组件4)716。策略选择器子系统718可包括主动解决方案组件(组件5)720和最优解决方案组件(组件6)722。分区操作器子系统724可包括分区器组件(组件7)726。
图7中示出的工作流可在整个循环中操作,以周期性地和/或动态地调整存储层的一个或多个层级中的每个客户端的存储分区大小。例如,工作流可基于运行时工作负载分析结果来调整每个客户端在顶层级(例如,在一些实现方式中的最高性能层级)中的存储分区大小。
在一些实施例中,图7中示出的工作流可在存储系统中并行运行的两个时间窗上操作。图8示出根据公开的示例实施例的用于分区管理器系统的工作流的时间窗的示例实施例。如图8中所示,第一窗(窗1)可在相对短的周期上操作,在该周期期间,工作流可监视工作负载行为和/或由工作负载监视器子系统702采集的缓存状态信息。
在一些实施例中,窗1可被实现为性能监视滑动窗(PMSW)708,其中在可随时间移动的时期(epoch)期间,工作流和/或缓存状态数据可被采样、采集、处理等。在一些示例实现方式中,窗1可具有大约5分钟的时期长度T1,但是任何其他时间段可被使用。在一些实施例中,窗1可设置这样的频率,突发检测器子系统710可按该频率对由工作负载监视器子系统702采集的工作流和/或缓存状态(例如,顶层级命中率)数据进行记录。可由突发检测器子系统710使用的工作负载行为的示例可包括最近时期中的工作集(WS)大小、最近时期中的工作卷(WV)大小、最近时期中的读取比率(R)等,这可在下面更详细地描述。在一些实施例中,根据公开的示例实施例的分区管理器系统可保留k个最近的连续或离散时期的工作流和/或缓存状态数据,其中,k可以是任何数字。在一些示例实现方式中,k可以是10。在一些实施例中,可将指数移动平均窗(EMAW)技术应用于k个时期的数据。
在一些实施例中,窗2可被实现为分区调整和内容更新窗(PACUW)712。窗2可确定新的重新分区评估可被触发的重新分区时段。在重新分区边界处,突发度计算器组件714可由窗2触发以确定用于计算突发度(Bd)的方法,突发度可基于读取比率(R)来指示即将发生的I/O突发,这可在下面更详细地描述。在一些实施例中,窗2可具有可比窗1的一个时期大的窗长度T2。例如,T2可以是大约一小时,但是任何其他时间段可被使用。在一些实施例中,因为根据实现细节,重新分区在带宽、功耗等方面可相对昂贵,所以实现比窗1长的窗2可降低操作分区管理器系统的成本。在一些实施例中,可选择窗1(T1)和窗2(T2)的相对长度以平衡性能与开销之间的权衡。例如,更频繁地重新分区可提供改善的性能,但是根据实现细节,与重新分区相关联的开销的增加可能超过改善的性能。在重新分区之间,突发检测器子系统710可继续接收工作集大小(WS)、工作卷大小(WV)、读取比率(R)和/或可由工作负载监视器子系统702在窗1时期期间收集的其他数据。
表3列出根据公开的示例实施例的与用于分区管理器系统的工作流相关的各个方面的一些示例实施例。表3列出每个方面以及可例如在在此公开的一个或多个算法中使用的相应的符号和相应的代码符号。在一些实施例中,表3中列出的方面可描述如下。
工作卷大小|V|可指示在存储装置或存储资源的其他单元上访问的数据的总量(例如,以字节为单位)。在存储器相关的上下文(例如,动态随机存取存储器(DRAM))中,工作卷大小可被称为印记(footprint)。
工作集大小|S|可指示访问的数据的总地址范围(例如,以字节为单位),总地址范围可以是例如工作卷的工作地址的集合。在一些实施例中,大的工作集可覆盖更多的存储空间。如果缓存大小大于或等于工作负载的工作集大小,则工作负载的I/O命中率可等于或接近100%(例如,使用最近最少使用(LRU)缓存算法)。
读取比率R可例如通过读取工作卷除以总工作卷来确定,其中,总工作卷可通过读取工作卷和写入工作卷之和来确定。在一些实施例中,读取比率的范围可以是百分之零至百分之百[0%,100%],其中,较高的读取比率可指示读取更密集的工作负载。
窗1 W1(例如,PMSW的长度)可指示在监视周期开始之前工作负载行为和/或缓存状态信息可被记录的时期长度T1。
窗2 W2(例如,PACUW的长度)可指示重新分区的时段T2。该窗可触发从突发检测器子系统710通过策略选择器子系统718到分区操作器子系统724的整个重新分区操作工作流。
表3
方面 | 代码符号 | 符号 |
工作卷大小 | WV | |V| |
工作集大小 | WS | |S| |
读取比率 | R | R |
PMSW的时期 | W1 | W<sub>1</sub> |
PACUW | W2 | W<sub>2</sub> |
再次参照图7,按照可由窗2确定的间隔,突发检测器子系统710可基于例如最近确定的不同的读取比率(R)来计算突发度(在一些实施例中,突发也可被称为尖峰(spike))。突发度计算可例如由突发度计算器714执行。对于读取密集型工作负载(如例如基于读取比率(R)确定的),可基于工作集(WS)大小改变来计算突发度。对于非读取密集型工作负载,可基于工作卷(WV)和/或印记大小改变来计算突发度。
在突发度计算器714确定突发度之后,它可将该信息传送到突发检测器716,突发检测器716可将突发度与预设阈值进行比较,以确定当前工作负载可被表示为突发还是非突发。突发/非突发确定可用于确定在策略选择器子系统718中使用哪种类型的重新分区策略。
如果当前工作负载是突发的,则图7中示出的工作流可调用主动解决方案组件720以应用主动重新分区策略,主动重新分区策略可例如基于一个或多个最近的PMSW时期期间的需求成比例地调整每个客户端的顶层级分区。例如,主动方法可基于其最近的工作集大小改变(对于读取密集型工作负载)或工作卷大小改变(对于非读取密集型工作负载)来调整每个客户端的分区。在一些实施例中,可相对快速地实现主动策略,这可使系统能够快速反应以适应即将发生的预期I/O突发。
然而,如果当前工作负载是非突发的,则系统可具有足够的时间来使用最优解决方案组件722来应用优化框架,最优解决方案组件722可尽力寻找全局最好的分区解决方案(例如,如下面描述的,通过求解、改善和/或最大化目标函数来最好地利用顶层级(例如,缓存层级))。因此,对于非突发工作负载,可选择最优解决方案组件722以基于优化框架来应用重新分区策略,优化框架可考虑与所有托管客户端相关的不同因素(诸如,一个或多个最近PMSW时期中的工作负载改变、在分区大小增大或减小的情况下的估计的命中率、基于例如服务质量(QoS)和/或服务等级协议(SLA)的每个客户端的权重等)。
分区器组件726可基于由策略选择器子系统718提供的结果分区策略,例如在存储级别的顶层级上进行实际的重新分区操作。图7中示出的工作流随后可循环回到等待将由突发检测器子系统710中的窗2触发的下一重新分区操作。
3.突发检测
由于较高的突发度可允许较少的时间来进行反应并且反之亦然,因此根据公开的示例实施例的突发检测器子系统710可检测存储层的当前工作负载可能是突发的还是非突发的,以使得策略选择器子系统718能够基于突发度来选择重新分区策略。在一些实施例中,突发(也可被称为尖峰)可由可在相对短的时间段内发生的对相对大量的数据的相对高的数量的I/O访问来表示。
在一些实施例中,突发检测操作可考虑所有或大多数客户端的I/O模式(例如,在一个或多个最近的PMSW时期中存储层的所有I/O客户端访问),以确定使用哪种策略进行重新分区。然而,在一些其他实施例中,突发状态确定可聚焦在相对少量的客户端(例如,基于每个客户端)。
在一些实施例中,突发度计算可基于所有或大多数客户端对顶层级存储的最近访问的读取比率(R)而涉及不同方法。例如,预设的读取比率阈值e可用于确定最近的工作负载是读取密集型还是非读取密集型。为了说明的目的,在此公开的一些示例实施例中,e可被设置为95%。然而,在其他实现方式中,e可被设置为例如在[0%,100%]的范围内的用于确定读取密集型工作负载的阈值的任何合适的值。
在一些实施例中,如果读取比率在范围[0,e)中,则工作负载可被分类为非读取密集型。在这种情况下,可使用工作卷的大小的改变来计算突发度。在一些实施例中,工作卷改变(也可被称为印记)可包括所有接触地址(touched address)的全部记录。因为如果存在相对大量的写入I/O,则每个新的写入请求可被分配给新的槽,并且对于相同地址的重复写入请求也可在缓存中被分配新的槽,所以对于非读取密集型工作负载,工作卷可用于计算突发度。因此,突发度计算可基于工作卷大小的改变。
图9示出根据公开的示例实施例的针对非读取密集型工作负载的I/O请求的示例实施例。在图9中示出的实施例中,可在时间T0至T5示出顶层级(例如,存储缓存)902。表904可指示每次对数据块(data chunk)A、B、C和D执行的读取操作或写入操作以及每个块中的数据量。字母可指示数据块,并且带记号的字母(例如,C')可指示更新的数据。在时间T0至T3,可将数据A、B、C和D写入顶层级902。在时间T4,B块中的两个以及两个A块可被去除(evict)并被C'数据覆写。在时间T5,可从顶层级902读取D块中的一个。因此,存储系统可为每个新的写入请求分配新的槽,并且相同地址的重复的写入请求也可在缓存中被分配新的槽(例如,在时间T4的四个新的数据块C)。因此,系统可将突发度计算基于工作负载的工作卷的大小的改变。
算法3示出根据公开的示例实施例的突发度计算的实施例的一些示例操作。算法3可例如由图7中示出的突发度计算器组件714(子系统2的组件3)执行。在算法3中示出的实施例中,用于非读取密集情况的参数选择的代码可位于第4行至第7行。在算法3中,curWV可表示当前工作卷,preWV可表示先前工作卷,curWS可表示当前工作集,preWS可表示先前工作集。
算法3
在一些实施例中,如果读取比率在范围[e,1]内,则工作负载可被分类为读取密集型。在这种情况下,可使用工作集的大小的改变来计算突发度。在一些实施例中,工作集可被表示为工作卷的去重版本。
图10示出根据公开的示例实施例的针对读取密集型工作负载的I/O请求的示例实施例。在图10中示出的实施例中,可在时间T0至T5示出顶层级(例如,存储缓存)1002。表1004可指示每次对数据块A、B、C和D执行的读取操作或写入操作以及每个块中的数据量。在时间T0至T3,可从顶层级1002读取数据块A、B、C和D。在时间T4,可再次读取数据块C。在时间T5,可再次读取数据块D。如图10中所示,在读取密集型工作负载的情况下,如果请求的I/O内容已被缓存在顶层级1002中(并且仍然存在于缓存中),则系统可以不为重复的I/O请求分配新的槽。因此,系统可将突发度计算基于工作负载的工作集的大小的改变(例如,已经接触的唯一地址)。
在算法3中示出的实施例中,用于读取密集情况的参数选择的代码可位于第8行至第10行。
一旦参数(例如,工作卷大小或工作集大小)已被选择用于突发计算,它就可用于计算突发度。在一些实施例中,例如,如等式1中所示,可使用分段函数来计算突发度。等式1中使用的一些符号可如下表示。
|Vcurwin|可表示当前PMSW时期的工作卷大小。
|Vprevwin|可表示先前PMSW时期的工作卷大小。
|Scurwin|可表示当前PMSW时期的工作集大小。
|Sprevwin|可表示先前PMSW时期的工作集大小。
增量函数可用于跟踪当前PMSW窗与先前PMSW窗之间的工作集大小的改变(Δ(Scurwin,Sprevwin))或工作卷大小的改变(Δ(Vcurwin,Vprevwin))。(在一些实施例中,可使用相同的方法来考虑多于两个的PMSW窗来计算突发度。)然后可如下将两个PMSW窗之间的相对差计算为突发度Bd:
然后可将Bd的计算值与预定义的突发阈值Bt进行比较。如果Bd>Bt,则可指示当前工作负载可表示为突发。Bt的值可预设为任何合适的值(例如,在百分之40至60的范围内)。在一些实施例中,将Bt的值设置为百分之50可确保突发的开始(上升边沿)和结束(下降边沿)可被捕获。例如,如果Bt被设置为百分之50,则可指示:如果多于工作卷大小改变(对于非读取密集情况)或工作集大小改变(对于读取密集情况)的百分之50的改变,则工作负载被确定为突发。
在一些实施例中,突发度计算器组件(诸如,图7中示出的组件3)的一些条件关系和支持考虑可如下。对于读取密集型工作负载,突发度计算可基于当前工作负载的工作集大小的改变。对于读取密集型工作负载,如果请求的I/O内容已被缓存在缓存中(并且仍然在缓存中),则存储系统可在顶层级(例如,存储缓存)中不为重复的I/O请求分配新的槽。因此,突发度计算可基于工作集(可包括已被接触的唯一地址)的改变。
对于非读取密集型工作负载,突发度计算可基于当前工作负载的工作卷大小的改变。如果工作负载包括相对大量的写入I/O,则新的槽可在顶层级中针对每个新的写入请求被分配,并且相同地址的重复写入请求也可在缓存中被分配新的槽。因此,突发度计算可基于工作负载的工作卷的改变。在一些实施例中,工作卷可以是可包括所有接触地址的全部记录的印记。因此,工作集可被表示为工作卷的去重版本。
在一些实施例中,突发检测器组件(诸如,图7中示出的组件4)的一些条件关系和支持考虑可如下。对于突发工作负载,求解优化框架可能花费比在突发到达之前可用的时间多的时间。因此,可将主动方法应用于重新分区操作。在一些实施例中,主动方法可基于其工作集大小(对于读取密集型工作负载)或工作卷大小(对于非读取密集型工作负载)的最近改变来调整每个客户端的分区。对于非突发工作负载,分区管理器系统可具有足够的时间来求解优化框架。因此,可将可尽力寻找全局最好的分区解决方案以实现最好的目标函数的优化方法应用于重新分区操作。
图11示出根据公开的示例实施例的突发计算和突发检测方法的示例实施例。该方法可在操作1102开始,在操作1102,可将当前工作负载的读取比率与读取比率阈值e进行比较。如果读取比率大于或等于e,则该方法可进行到操作1104,在操作1104,可将工作集的改变用于计算突发度Bd。然而,如果在操作1102确定读取比率小于e,则该方法可进行到操作1106,在操作1106,可将工作卷的改变用于计算突发度Bd。在操作1108至1110,可将突发度Bd与突发阈值Bt进行比较。如果突发度大于Bt,则该方法可进行到操作1112,在操作1112,将当前工作负载确定为突发工作负载。然而,如果在操作1110突发度小于或等于Bt,则该方法可进行到操作1114,在操作1114,将当前工作负载确定为非突发工作负载。
4.突发工作负载的分区方法
当突发I/O由突发检测器(诸如,突发检测器子系统710)识别时,根据公开的示例实施例的分区管理器系统可在存储的层级(例如,可作为存储缓存进行操作的顶层级)中基于其工作集大小(针对读取密集型工作负载)或工作卷大小(针对非读取密集型工作负载)的最近改变而主动地调整每个客户端的分区。在一些实施例中,这可导致可适应即将发生的I/O突发的相对快速的重新分区操作。
4.1突发工作负载的分区工作流
在一些实施例中,根据公开的示例实施例的用于突发工作负载的分区方法可至少部分地基于工作负载的以下两个方面中的一个或多个来确定每个客户端的分区大小:(1)(例如,PMSW的)最近时期期间的工作负载改变;和/或(2)当前时期中的缓存的命中率。
尽管不限于任何特定的实现细节,但是下面描述的用于突发工作负载的分区方法可例如由策略选择器子系统718的主动解决方案组件720基于关于工作负载的反馈(例如,从图7中示出的工作负载监视器子系统702接收的数据)被使用。
在一些实施例中,例如,工作负载改变可用于计算需要的空间大小(DSS)以快速适应工作负载改变。例如,客户端可经历可能涉及相对大量的缓存空间的I/O突发。然而,如果在缓存中没有可用的用于I/O突发的充足空间,则会增大该客户端的时延和/或延迟。在一些实施例中,DSS可用于减少或防止这种类型的情况。
在一些实施例中,例如,存储缓存命中率可用于计算保证的最小空间大小(GMSS)作为每个客户端的缓存的贡献率。在一些实施例中,这可用于减少或防止由其他客户端的I/O突发引起的缓存槽从缓存被冲刷。
图12示出根据公开的示例实施例的突发工作负载的分区方法的方法的示例实施例。图12中示出的方法可例如由图7中示出的主动解决方案组件720执行。该方法可在操作1202开始,在操作1202,可从PACUW窗712获得当前时期状态(算法4中的第3行至第4行),PACUW窗712可记录来自工作负载监视器子系统702中的PMSW窗708的多个时期信息。在操作1204,可如下所述计算每个客户端的工作负载量。在操作1206和操作1208,可如下所述基于工作负载量分别针对每个客户端计算缓存上限和缓存下限。在操作1210,可基于每个客户端的工作负载量和权重(在一些实施例中,权重可基于QoS)来对客户端列表进行排序。在操作1212,可将缓存逐个分区到每个客户端以满足每个客户端的上限,使得可首先分配具有较高权重(例如,优先级)的客户端的分区。在操作1214,可将分区计划发送到用于实现的分区操作器子系统724。
任何类型的权重函数可用于排序和/或分区操作。在一些实施例中,可使用任何权重函数来组合工作负载量和QoS。在一些示例实现方式中,基于百分比的QoS可与工作负载量相乘。例如,对于客户端i,利用工作负载量Wi和QoS百分比Qi,加权的工作负载量可被计算为
其中,v可以是所有客户端V的集合中的迭代的客户端。
算法4示出根据公开的示例实施例的突发工作负载的分区方法的方法的实施例的一些示例操作。算法4可例如由图7中示出的主动解决方案组件720执行。在算法4中示出的实施例中,用于获得当前时期状态的代码可位于第3行至第4行。在算法4中,curEpochStatus可表示当前时期状态。
算法4
4.2工作负载量
例如,从缓存槽分配的角度来看,工作负载量|W|可用于表示实际工作负载量。在一些实施例中,如等式3中所示,工作负载量可基于不同的工作负载读取比率通过分段函数来确定。
在一些实施例中,对于读取密集型工作负载,新缓存槽可不针对重复请求的地址被分配,因为它们不会修改内容。因此,如等式3中所示,如果最近的PMSW时期工作负载是非读取密集型工作负载,则工作卷可用作工作负载量。然而,如果最近的PMSW时期工作负载是读取密集型工作负载,则工作集可用作工作负载量。
在每个PMSW时期结束时,根据公开的示例实施例的分区管理系统可检查共享分解式存储系统的所有客户端的最近状态。表4示出可从工作负载监视器子系统702获得并且由突发检测器子系统710中的PACUW窗712记录的状态信息的一些示例值。表4中提供的值仅用于说明的目的,并且其他值可被获得和/或使用。
如表4中所示,可选择工作集大小|S|或工作卷大小|V|作为可用于计算下一时期分配的工作负载量|W|。
表4
在一些实施例中,状态信息可包括附加信息(诸如,接触的文件号、接触的文件部分与接触的文件大小百分比等)。
4.3上限和下限
对于突发工作负载,根据公开的示例实施例的分区管理系统可基于客户端在最近时期的工作负载量来主动地和/或按比例地向每个客户端分配顶层级存储资源(可作为缓存空间进行操作)。因此,系统可尝试动态地和/或主动地将更多的顶层级存储资源分配给在最近时期可具有更多突发I/O的客户端。在一些实施例中,系统可基于客户端的当前时期状态来尽力主动地将每个客户端的下一时期缓存空间推进到客户端的需求。为了实现这种分配,可使用如等式4中所阐述的上限在所有客户端之间按比例地重新分配缓存空间。在等式4中,|C|new表示可新的缓存大小,|C|max可表示最大缓存大小,|C|cur可表示当前缓存大小,|H|cur可表示当前命中率。
在一些实施例中,例如,因为上限可基于按比例分配方法接近于或匹配下一时期的大小,所以上限可被称为需要的空间大小(DSS)。
在一些实施例中,例如,下限可用于确保一个或多个客户端可具有保证的最小空间大小(GMSS),使得它们的缓存数据不会由于工作负载中的突发而容易被冲刷。例如,基于最后一个时期的命中率,缓存的最后一个命中率可在下一时期中是有用的。因此,该量可用作每个客户端的保证的最小缓存空间。
用于获得每个客户端的上限和下限的代码可位于算法4的第7行至第10行。
在一些实施例中,如果下限大于或等于上限,则可能存在特殊情况,在这种情况下,系统可将上限和下限的最小值分配给上限和下限两者。也就是说,上限=min(下限,上限),并且下限=min(下限,上限)。例如,当客户端的当前时期具有相对高的缓存命中数(例如,下限可能很大),而工作负载在当前时期中不被认为是突发的(例如,上限可能很小)时,这可能发生。在这种情况下,因为上限可以是基于预测的目标,所以上限可对分区量给予更大的影响。因此,DSS可覆盖任何现有的GMSS。(在一些实施例中,GMSS可意在防止客户端的缓存数据由于来自其他客户端的突发而被完全冲出(flushed out)。)这可在例如算法4的第11行至第13行中看到。
5.非突发工作负载的分区方法
在一些实施例中,对于非突发工作负载,根据公开的示例实施例的分区管理器系统可具有足够的时间来执行可考虑一个或多个因素(诸如,估计的命中率、工作负载、每个客户端的权重等)的更广泛优化的重新分区。
5.1非突发工作负载的分区工作流
在一些实施例中,根据公开的示例实施例的非突发工作负载的重新分区工作流可调整每个客户端(v)的分区大小,以便使目标函数最大化,这可提供用于评估给定分区计划的有效性的方式。
等式5提供了可用于例如对存储层的一个或多个层级(例如,可作为存储缓存进行操作的顶层级)进行重新分区的优化框架的实施例。表5提供了等式5中使用的符号的一些示例含义。尽管在等式5中示出的工作流的实施例不限于任何特定的实现细节,但是在一些实施例中,它可例如通过图7中示出的最优解决方案组件722来实现。
表5
S.t.:Δ|C|v∈[-|C|v,|C|max-|C|v]
ExpHitRatio(v,|C|V+Δ|C|V)∈[0%,100%] 等式5
如果客户端在下一PMSW时期中具有缓存大小改变Δ|C|v(例如,ExpHitRatio(v,|C|v+Δ|C|v))乘以其预期工作卷(例如,ExpWorkVol(v)),则等式5的框架可通过计算每个客户端的预期命中率的加权和开始。如上面在章节4.1中提到的,术语“权重”(Wv)可反映每个客户端的QoS、SLA等。可针对一系列可能的缓存分配情况迭代项Δ|C|v。在一些实施例中,可将迭代步骤的粒度设置为相对粗粒度的量(例如,100MB),这可降低与求解优化框架相关联的开销。
然后,等式5的框架可将加权和除以总缓存大小(|C|max)。
在一些实施例中,该结果的物理含义可被表示为以每字节的缓存容量表示的可基于实现特定分区计划而在下一时期中实现的预期命中量(例如,以字节为单位的工作卷)。因此,使等式5的目标函数最大化可改善或优化分区计划。
在一些实施例中,预期命中量可以是所有客户端的Δ|C|v的整体(即,Δ|C|v列表)。
等式5可包括约束部分(“S.t.”),其可应用以下限制:(1)每个客户端在顶层级存储中的空间的大小(例如,缓存大小);(2)预期命中率的范围处于[0%,100%];(3)所有改变(Δ|C|v)之和为零(因为缓存空间的量不会改变,它可仅在客户端之间重新分配);以及(4)所有客户端的权重之和为100%。
在一些实施例中,等式5中的目标函数可用于寻找所有客户端的增量列表(例如,顶层级存储量的变化)(其中,列表可表示为{Δ|C|opt(v∈{V})}以用于最优解决方案。如等式6中所示,基于列表{Δ|C|opt(v∈{V})},根据公开的示例实施例的分区管理器系统可返回所有客户端的最终重新分区计划。
5.2命中率估计
在一些实施例中,为了估计命中率(ExpHitRatio(v,|C|v+Δ|C|v)),可使用基于重新访问距离的分析建模框架来提供对一系列缓存配置和/或替换策略(例如,最近最少使用(LRU))的缓存性能的在线预测。
在算法5中示出了根据公开的示例实施例的基于重新访问距离的分析建模框架的示例实施例。可位于第1行至第6行的主过程可调用函数CDF.update(其中,CDF可指示累积分布函数)以更新CDF曲线(其可在第8行至第12行实现)。基于最新的CDF曲线,可通过将给定的缓存大小输入到CDF的getProbability函数(其可在第6行实现)来估计命中率。在一些实施例中,这可确定多少百分比的记录的访问数据可具有小于缓存大小(cacheSize)的重用距离。
函数runtimeUpdateRecordTable(其可在第14行至第37行实现)可以是在后台中运行的可在新的I/O请求到达时更新记录表的单独函数。在算法5中,curEpochID可表示当前时期ID。
算法5
在算法5中,函数runtimeUpdateRecordTable(clientID)可在运行时期间在后台运行。它可首先将传入的I/O请求(来自clientID(客户端ID))转换为数据块(databucket),数据块可具有设置为例如5MB或50MB的粒度以用于统计分析目的。名为curAccessTime的计数器可针对每个新数据块自加1。
算法5可记录传入的I/O请求数据块的当前访问与其最后访问之间的“距离”。在一些实施例中,距离可表示“绝对重新访问距离(ARD)”而不是“唯一重新访问距离(URD)”。
这可参照重新访问间隔(RI)来理解。地址轨迹T可以是递增顺序的连续整数的映射,表示轨迹中的连续位置。元组(x,τ)可用于表示其中(x,τ)∈T的所有访问,并且其中,x可表示地址且τ可标识其重复次数。轨迹中地址x的第一次出现可由(x,0)表示。表达式t=T-1可表示反函数,并且t(x,τ)可表示轨迹中地址x第τ次出现的位置。
如等式7中所示,RI可仅在τ>0时被定义,并且可表示x的第τ次出现与第(τ-1)次出现之间封闭的轨迹的部分。
然后,URD可如等式8中所示被计算。RI可表示轨迹中相同地址的两次出现之间的唯一地址的总数。
ARD也可如等式9中所示被计算。ARD可表示轨迹中相同地址的两次出现之间的位置的总数。
然后,该函数可搜索recordTable(记录表)中的每个新的块,这可例如通过哈希表来实现,其中,键可以是bucketID(块ID),并且值可以是多个因素的元组。如果未找到条目,则可指示这是该数据块第一次出现,因此可创建新条目,其中该条目的值保存在recordTable中。在一些实施例中,当前的epochID也可存储在表中,例如,以进一步帮助移出(fade out)旧数据。用于该操作的代码可位于算法5的第10行至第29行。
表6示出可通过函数runtimeUpdateRecordTable(clientID)记录在recordTable中的一些示例值。表6中提供的值仅用于说明的目的,并且可获得和/或使用其他值。
表6
在算法5中,可调用函数estimateHitRatio来估计给定缓存大小的缓存命中率。函数estimateHitRatio可触发函数CDF.update,函数CDF.update可更新CDF记录(例如,如图13中所示,通过构建最大重用距离和箱(bin)的百分比的新CDF曲线)。
图13示出根据公开的示例实施例的用于命中率估计操作的CDF曲线的示例实施例。图13中示出的CDF曲线可帮助估计给定clientID和cacheSize的命中率。在图13中,X轴可表示最大重用距离,并且y轴可表示具有比X轴中的某个距离低的最大重新访问距离的块的数量的百分比。因此,命中率估计操作可迭代不同的缓存大小(最大重用距离)以检查其可为该时段的工作负载提供的命中率的上限。在一些实施例中,仅当缓存大小大于最大重用距离时,缓存命中会是可能的。因此,可在缓存大小与LRU缓存算法命中率的理论最优结果之间建立连接。在一些实施例中,曲线可表示最大缓存命中率。因此,可向其分配减少调整。
5.3工作卷估计
在一些实施例中,可使用平均技术来估计工作卷ExpWorkVol(v)。例如,一些实施例可使用移动窗平均技术(诸如,加权移动平均(WMA)和/或指数加权移动平均(EWMA))来预测工作卷。在一些实施例中,加权平均可被实现为具有乘法因子的平均,以向样本窗中的不同位置处的数据给予不同的权重。因此,在数学上,加权移动平均可以是基准点与固定加权函数的卷积。在一些实施例中,EWMA技术可涉及以算术级数(arithmeticalprogression)减小的权重。
出于说明的目的,可在EWMA技术(其可采用一阶无限脉冲响应滤波器来应用可指数地减小的加权因子)和参数的一些特定值的上下文中描述一些实施例。然而,可根据本公开获得和/或使用其他技术和/或值。
表7提供了等式10中使用的符号的一些示例含义。尽管等式10中示出的工作流的实施例不限于任何特定的实现细节,但是在一些实施例中,它可例如通过图7中示出的最优解决方案组件722来实现。
表7
在一些实施例中,如等式10中所示,EWMA技术可用于基于客户端v的先前时期工作卷记录来计算(例如,预测)客户端的下一时期工作卷。
|V|v,t+1=α[|V|v,t+(1-α)|V|v,t-1+(1-α)2|V|v,t-2+(1-α)3|V|v,t-3+…] 等式10
因为等式10可以是具有递减项的无限和,所以根据公开的示例实施例的工作卷估计技术可限制等式10中使用的项的数量,以减少计算和/或存储(例如,用于记录I/O事务历史的存储)的开销。例如,记录的先前时期的数量可被限制为值“k”。也就是说,为了接近工作卷的预测,可从等式10省略第k(例如,等式11中的kmax)项之后的项。因此,等式10可被简化为等式11。
在一些实施例中,在初始化阶段期间,工作卷大小的很少的数据点会是可用的。因此,在初始化阶段期间,可例如根据前几个观测结果(observation)和/或4至5个PMSW时期的平均值来计算工作卷。
6.分区和内容更新
在策略选择器子系统718确定存储层级(例如,可作为存储缓存进行操作的顶层级)的分区策略之后,可将其传送到用于实现的分区操作器子系统724。在一些实施例中,实现分区策略可涉及去除(eviction)和/或提取操作。
6.1分区和内容更新工作流
图14示出根据公开的示例实施例的分区和内容更新工作流的示例实施例。尽管图14中示出的工作流的实施例不限于任何特定的实现细节,但是在一些实施例中,它可例如通过图7中示出的分区器组件726来实现。在一些实施例中,术语“缓存大小”、“缓存空间”、“新分区”和“配额”可互换使用。
图14中示出的工作流可在操作1402开始,在操作1402,可将客户端的新分区的大小与其当前分区的大小进行比较。在一些实施例中,比较可导致三种情况中的一种。(情况1)如果客户端的新分区的大小小于其先前大小,则工作流可进行到操作1404,在操作1404,工作流可去除客户端的缓存槽中的一个或多个,然后将分区收缩到新的大小。(情况2)如果客户端的新分区的大小等于其先前大小,则工作流可进行到操作1406,在操作1406,它可使分区处于当前大小。(情况3)如果客户端的新分区的大小大于其先前大小,则工作流可进行到操作1408,在操作1408,工作流可增大分区的大小。在情况3中,客户端的分区中的新空间可有两个选项。(选项1)工作流可进行到操作1410,其可被描述为被动选项。在被动选项中,客户端的分区中的新空间最初留空。因为新的I/O请求可逐渐填充空白空间,所以新的空白空间可逐渐填充。(选项2)工作流可进行到操作1412,其可被描述为主动选项。工作流可主动地从另一存储层级(例如,如果缓存是顶层级,则为第二层级)预取数据,并将数据复制到第一层级以填充空白空间。例如,在一些实施例中,工作流可将可能未被缓存但是可基于I/O历史被频繁使用的暖数据(warm data)复制到客户端的新分区中的空白空间。在一些实施例中,在填充所有新的空白空间之前,工作流可进行到操作1414,在操作1414,可如下所述适应性地调整预取大小。
在重新分区完成之后,客户端可继续使用其新配额,直到下一重新分区操作发生为止。
在一些实施例中,使用被动选项(选项1)或主动选项(选项2)的决策可涉及可基于系统实现细节加权的一个或多个权衡。例如,因为没有数据会被移动直到数据变为I/O请求的主体为止,所以被动选项可更简单地实现和/或可涉及少的开销。然而,在被动选项的情况下,因为空白可能未被填充(例如,直到未来的I/O突发填充空白为止),所以缓存空间增大的客户端的命中率可能未被充分利用。另外地或可选地,例如,如果突发的预测不准确和/或如果客户端的工作负载在下一时期期间改变,则空白空间中的一些可能未被充分利用。
在主动选项的情况下,因为更多的数据会在缓存中可用,所以客户端的命中率可增大。此外,主动填充空白空间可导致缓存空间的更好利用。然而,例如,因为系统可执行一个或多个操作来选择(包括选择之后的任何计算)并传递先前未被缓存在第一层级中的暖数据,所以主动选项可导致更高的开销。此外,可存在预取数据中的一些或全部在下一时期中可能不是有用的(例如,不被重新访问)的风险,从而导致额外的开销。
算法6示出根据公开的示例实施例的分区和内容更新工作流的实施例的一些示例操作。算法6可例如由图7中示出的分区器组件726执行。在算法6中示出的实施例中,用于处理情况1的代码可位于第4行至第6行,用于处理情况2的代码可位于第7行至第10行,并且用于处理情况3(包括选项1和选项2)的代码可位于第11行至第18行。在算法6中,curEpoch表示当前时期。
算法6
6.2适应性预取大小调整
在重新分区操作期间,如果客户端的新分区大小大于其先前大小,并且分区管理器系统决定主动填充新分区中的空白空间(例如,如上所述的情况3,选项2),则根据公开的示例实施例的分区管理器系统的一些实施例可提供适应性预取大小调整(APSA)特征。
在一些实施例中,APSA特征可例如基于每个客户端在最近时期中的最高的I/O大小流行度(top I/O-size popularity)来调整预取数据大小。例如,APSA特征可适应性地和/或自动地改变预取数据大小。预取技术可例如通过在数据被实际需要数据之前将数据从较慢的第二层级存储获取到较快的第一层级(缓存层级)存储来提升执行性能。在主动操作选项中,可预取数据以在客户端请求数据(例如,通过对先前空白的缓存位置进行I/O请求)之前填充新分配的分区的空白空间。
在一些实施例中,如果在最近时期中来自客户端的大多数I/O处于高的I/O大小(范围)(例如,16KB)中,则客户端将在未来遵循相同或相似的模式是可行的或可能的。因此,如果未来在第一层级中存在部分缓存命中,则使用高的I/O大小的粒度从第二层级预取暖数据可帮助再次绕过第二层级中的再次的查找处理(这可能是耗时的)。当在缓存中仅找到请求的I/O的一部分时,可能发生部分缓存命中,因此,可执行第二层级查找以找到请求的I/O的剩余部分。
因此,通过利用高的I/O大小的粒度执行预取,根据公开的示例实施例的分区管理器系统可帮助将部分缓存命中升级为完全缓存命中(例如,全部请求的I/O可被缓存在第一层级中)。
等式12示出根据公开的示例实施例的可用于实现适应性预取大小调整的等式的实施例。等式12可例如通过图7中示出的分区器组件726来实现。表8提供了等式12中使用的符号的一些示例含义,并且可进一步解释缓存未命中、部分缓存命中和完全缓存命中之间的关系。
在一些实施例中,CachedIOReq可被表示为新I/O请求的找到的数据(缓存在第一层级中),CachedIOReq可如下基于等式12被计算。
CachedIOReq={x|x∈IOReq,x∈CachedIO} 等式12
其中,IOReq可表示新I/O请求中的一组数据,并且CachedIO可表示当前在缓存层级中的所有数据。IOReq和CachedIO集合的并集可以是缓存中找到的该I/O的数据。
在一些实施例中,例如,可使用预设的预取放大因子AF以增大APSA特征的灵活性。作为示例,放大因子可处于[-100%,100%]的范围内。在一些实施例中,可进一步调整预取粒度(例如,通过将AF设置为5%使得与“高的I/O大小”相比,它可预取额外的5%的数据)。例如,在可考虑存储装置块和页对齐的情况下,这可能是有用的。例如,跨块界限I/O可触发比其I/O请求大小更多的数据访问。
表8
缓存状态 | 子类别 | 公式 |
缓存未命中 | N/A | |CachedIOReq|=0 |
缓存命中 | 部分缓存命中 | |IOReq|>|CachedIOReq| |
缓存命中 | 完全缓存命中 | |IOReq|≤|CachedIOReq| |
算法7示出根据公开的示例实施例的适应性预取大小调整特征的实施例的一些示例操作。算法7可例如由图7中示出的分区器组件726执行。在算法7中示出的实施例中,用于实现放大因子AF的代码可位于第6行至第7行。
算法7
图15示出根据公开的示例实施例的适应性预取大小调整方法的示例实施例。尽管图15中示出的实施例不限于任何特定的实现细节,但是在一些实施例中,它可例如由图7中示出的分区器组件726来实现。
图15中示出的方法可在操作1502开始,在操作1502,该方法可获得预取放大因子AF。在操作1504,该方法可创建可用于存储适应性预取大小调整方法的结果的结果列表。在操作1506,该方法可通过客户端迭代以确定每个客户端的高的I/O数据大小。在操作1508,可返回结果列表。
6.3用于填充空白缓存空间的数据选择
在重新分区操作期间,如果客户端的新分区大于其先前大小,并且分区管理器系统决定主动填充新分区中的空白空间(例如,如上所述的情况3,选项2),则根据公开的示例实施例的分区管理器系统的一些实施例可选择暖数据来填充空白空间。在一些实施例中,暖数据可不被缓存,但是基于I/O历史,暖数据可被频繁使用。
算法8示出根据公开的示例实施例的暖数据选择方法的实施例的一些示例操作。算法8可例如由图7中示出的分区器组件726执行。
算法8
在算法8中示出的实施例中,第4行至第6行的代码可创建候选的列表以存储第二层级中的所有降序排序的全局历史记录(GHR),这可例如通过每个数据块的访问频率进行排序。可使用任何块大小(例如,10MB)。在一些实施例中,可将一种或多种滑动窗技术(例如,EWMA)应用于全局历史,以记录在最近时期中已经访问的箱的I/O流行度统计。根据实现细节,这可更准确地反映暖数据访问行为。
如第6行所示,通过忽略已经缓存的数据(cachedIOList),该方法可进一步从最热到最冷地迭代每个块,并且(在一些实施例中,考虑到算法7中计算的放大的粒度)可将数据添加到dataToPrefetch(用于预取的数据)列表中的填充,直到空白空间已被填充。如果仍然存在任何空白空间,并且迭代的数据块大于空白,则可修剪数据块以填充空白来防止浪费任何空白空间。
如第14行所示,一旦空白空间被填充,dataToPrefetch就可被发送到预取函数,以执行从第二层级到顶层级(缓存层级)的实际内容更新。在内容更新完成之后,顶层级存储可使用任何缓存算法(诸如,LRU、应用感知缓存替换(ACR)、具有适应性替换的时钟(CAR)等)作为缓存进行运行。在一些实施例中,可支持直写(write through)和/或写回策略。
图16示出根据公开的示例实施例的适应型预取大小调整方法的示例实施例。尽管图16中示出的实施例不限于任何特定的实现细节,但是在一些实施例中,它可例如由图7中示出的分区器组件726来实现。
图16中示出的方法可在操作1602开始,在操作1602,可创建候选的列表。在操作1604,可例如基于使用的频率对候选的列表进行排序。在操作1606,可从候选的列表移除已经缓存的数据。在操作1608,循环可针对每个候选块开始。只要用于预取的数据的大小小于空白大小,操作1610、操作1612和操作1614就可分别基于被选择的粒度级别添加数据块,修剪可能大于空白的数据,并将结果添加到用于添加的数据的列表。在操作1608,一旦用于预取的数据的大小大于或等于空白大小,该方法就可进行到操作1616,操作1616可实现中断操作,然后进行到操作1618,在操作1618,将预取数据实际写入缓存。该方法可在操作1620终止。
7.基于预先知识的区划
在一些实施例中,在部署阶段(也可被称为早期阶段或初始阶段)期间,根据公开的示例实施例的分区管理器系统可能没有足够的信息来将存储的一个或多个层级(例如,可作为存储缓存进行操作的顶层级)分配给客户端。在这些情况下,分区管理器系统可使用例如来自客户端模式库、供应商选择硬件和/或软件、SLA、QoS等的客户端的I/O模式的预先知识来创建分区计划。
例如,在游戏流传输数据中心应用中,可存在一个或多个托管的游戏(诸如,可能涉及少的随机数据的频繁写入的第一人称射击游戏或可能涉及频繁的大量顺序读取I/O的赛车游戏)的特性的预先知识。作为另一示例,在通用数据中心中,可存在工作负载的预先知识(诸如,在可能是写入密集型的虚拟机上工作的开发者,并且虚拟机上的3D视频编辑可以是CPU密集型的并且可具有与高的工作卷大小和工作集大小混合的读写I/O)。
诸如这样的预先知识可用于实现一种或多种区划技术,以通过多个因素(例如,根据预先知识的每个工作负载的读取比率、工作集大小等)来分离工作负载。区划可以是物理的、虚拟的或它们的任何组合。在一些实施例中,物理区划的粒度可大于或等于存储装置的大小(例如,将多个存储装置分组为一个区域)。在一些实施例中,虚拟区划的粒度可小于或等于存储装置的大小(例如,存储装置内部的区划)。
图17示出根据公开的示例实施例的基于预先知识的区划方法的示例实施例。尽管图17中示出的实施例不限于任何特定的实现细节,但是在一些实施例中,它可例如由图7中示出的分区器组件726来实现。
在图17中示出的实施例中,如表1702中所示,前四个客户端(客户端1、客户端2、客户端3和客户端4)的预先知识可包括平均读取比率、平均工作集大小和平均工作卷大小。在一些实施例中,均值可基于历史记录的简单均值。可选地或另外地,在部署区划处理中可使用除了图17中列出的因素之外的因素。
在图17中示出的实施例中,存储1704的顶层级可利用SSD(例如,SSD01至SSD18)实现,并且存储1706的第二层级可利用HDD(例如,HDD01至HDD22)实现,但是任何其他数量和/或配置的层级和/或存储装置可被使用。
在该示例中,存储1704的顶层级可具有三个区域:针对具有读取比率在范围[90%,100%]内的工作负载的客户端的读取密集型区域、针对具有读取比率在范围[10%,90%)内的工作负载的客户端的读写混合型区域、以及针对具有读取比率在范围[0%,10%)内的工作负载的客户端的写入密集型区域。这些示例仅用于说明的目的,并且其他数量的区域、其他范围的值等可被用于创建区域。
在图17中示出的实施例中,分区管理器系统可基于例如(1)读取密集型区域的工作集大小和/或(2)读写混合型区域和/或写入密集型区域的工作卷大小来成比例地调整每个区域的大小。在一些实施例中,可重复地(例如,周期性地)应用如图17中示出的成比例的区域调整来更新区域大小。
在一些实施例中,在部署完成之后,根据公开的示例实施例的分区管理器系统可使用在此公开的任何技术在每个区域中单独地运行。例如,图7中示出的整个循环可在每个区域内运行。
算法9示出根据公开的示例实施例的基于预先知识的区划方法的实施例的一些示例操作。算法9可例如由图7中示出的分区器组件726执行。
算法9
在算法9中示出的实施例中,函数ZoneDeployment可采用两个输入preknowledgeTable(预先知识表)和topTierStorage(高层级存储),并且可使用如第2行所示的预设值zoneReadRatioThresholds(预设区域读取比率阈值)(可以是任何数量的区域)。在第3行,函数可通过将preknowledgeTable中的每个客户端的读取比率与阈值进行比较来创建zoneMemberPlan(区域成员计划)。在第4行至第6行,随后它可迭代zoneMemberPlan并基于成员客户端的工作集大小(对于读取密集型区域)或工作卷大小(对于其他区域)来计算每个区域的需求量。在第7行,随后该函数可基于每个区域的需求量(例如,zoneAmount)成比例地调整区域大小。在第8行,函数可基于zoneMemberPlan和ZoneSizePlan(区域大小计划)将客户端分配给区域。
在一些实施例中,并且根据实现细节,根据公开的示例实施例的基于预先知识的区划方法可:(1)降低装置侧写入放大;(2)减少过量提供(这可类似于早期替换,因为在两种情况下,主机可消耗更多装置);(3)减少存储装置中的存储器(这可能相对昂贵);(4)改善延迟、吞吐量和/或预测能力;和/或(5)启用软件生态系统,因为多个利益相关者可受益于一个或多个改善。
图18示出根据公开的示例实施例的基于预先知识的区划工作流的示例实施例。尽管图18中示出的实施例不限于任何特定的实现细节,但是在一些实施例中,它可例如由图7中示出的分区器组件726来实现。
图18中示出的实施例可在操作1802开始,在操作1802,可通过将预先知识表中的每个客户端的读取比率与区域读取比率阈值进行比较来创建区域成员计划。在操作1804,工作流可迭代区成员计划,并且基于成员客户端的工作集大小(对于读取密集型区域)或工作卷大小(对于其他区域)来计算每个区域的需求量。在操作1806,工作流可基于每个区域的需求量成比例地调整区域大小。在操作1808,工作流可基于区域成员计划和区域大小计划将客户端分配给区域。
图19示出根据公开的示例实施例的操作存储系统的方法的实施例。在操作1902,该方法可开始。在操作1904,该方法可将存储资源的层级的第一分区分配给第一客户端,其中,该层级至少部分地作为存储缓存进行操作。在操作1906,该方法可将存储资源的该层级的第二分区分配给第二客户端。在操作1908,该方法可监视第一客户端的工作负载。在操作1910,该方法可监视第二客户端的工作负载。在操作1912,该方法可基于监视的第一客户端的工作负载和监视的第二客户端的工作负载,将存储资源的该层级的第一分区重新分配给第一客户端。在操作1914,该方法可结束。
已经在各种实现细节的上下文中描述了上面公开的实施例,但是本公开的原理不限于这些或任何其他具体细节。例如,一些功能已被描述为由特定组件实现,但是在其他实施例中,功能可分布在不同位置的不同系统和组件之间并且具有各种用户接口。某些实施例已被描述为具有特定的处理、操作等,但是这些术语还包括其中特定的处理、步骤等可用多个处理、操作等实现的实施例,或者包括其中多个处理、操作等可集成到单个处理、步骤等中的实施例。对组件或元件的引用可仅表示组件或元件的一部分。例如,对集成电路的引用可表示集成电路的全部或者仅一部分,并且对块的引用可表示整个块或者一个或多个子块。除非从上下文另外清楚,否则在本公开和权利要求书中使用诸如“第一”和“第二”的术语可仅用于区分它们所修饰的事物的目的,并且可以不指示任何空间或时间顺序。在一些实施例中,“基于”可表示“至少部分地基于”。在一些实施例中,“分配”可表示“至少部分地分配”。对第一元件的引用可以不暗示存在第二元件。作为方便,可提供诸如章节标题等的各种组织辅助,但是根据这些辅助布置的主题和本公开的原理不受这些组织辅助限定或限制。
在此公开的原理具有独立的实用性并且可单独实现,并且不是每个实施例都可利用每个原理。然而,这些原理也可以以各种组合来实现,其中一些组合可以以协同的方式放大单个原理的益处。因此,可组合上述各种细节和实施例以产生根据本专利公开的发明原理的附加实施例。由于在不脱离发明构思的情况下,可在布置和细节上修改本专利公开的发明原理,因此这样的改变和修改被认为落入所附权利要求的范围内。
Claims (20)
1.一种操作存储系统的方法,所述方法包括:
将存储资源的层级的第一分区分配给第一客户端,其中,所述层级至少部分地作为存储缓存进行操作;
将存储资源的所述层级的第二分区分配给第二客户端;
监视第一客户端的工作负载;
监视第二客户端的工作负载;以及
基于第一客户端的工作负载和第二客户端的工作负载,将存储资源的所述层级的第一分区重新分配给第一客户端。
2.根据权利要求1所述的方法,其中,第一分区基于第一客户端的工作负载的输入和/或输出需求被重新分配。
3.根据权利要求1所述的方法,其中,第一分区基于第一客户端的工作负载的性能改变估计被重新分配。
4.根据权利要求1所述的方法,其中,第一分区基于第一客户端的工作负载的读写比率被重新分配。
5.根据权利要求1所述的方法,其中,第一分区基于第一客户端的工作负载的工作集被重新分配。
6.根据权利要求1所述的方法,其中,第一分区基于第一客户端的工作负载的工作卷被重新分配。
7.根据权利要求1所述的方法,还包括:
确定第一客户端的工作负载和第二客户端的工作负载的突发度;以及
基于突发度来检测存储资源的所述层级的访问是否是突发的。
8.根据权利要求1所述的方法,还包括:
基于第一客户端的工作负载来确定第一客户端的第一缓存需求;以及
基于第二客户端的工作负载来确定第二客户端的第二缓存需求;
其中,第一分区基于第一缓存需求被分配给第一客户端,并且
其中,第二分区基于第二缓存需求被分配给第二客户端。
9.根据权利要求1所述的方法,还包括:
记录第一客户端的工作负载的输入和/或输出事务;
基于记录的输入和/或输出事务来确定重用距离;以及
基于重用距离确定预期缓存命中率。
10.根据权利要求1所述的方法,
记录第一客户端的工作负载的输入和/或输出事务;
确定记录的输入和/或输出事务的加权平均值;以及
基于加权平均值来确定预期工作卷。
11.根据权利要求1所述的方法,其中,重新分配第一分区的步骤包括增大第一分区的大小,所述方法还包括基于第一客户端的工作负载的一个或多个输入和/或输出事务来更新第一分区。
12.根据权利要求1所述的方法,其中,重新分配第一分区的步骤包括增大第一分区的大小,所述方法还包括:
确定第一客户端的输入和/或输出请求大小的模式;以及
使用基于输入和/或输出请求大小的模式的预取数据大小来预取第一分区的数据。
13.根据权利要求1至12中的任一项所述的方法,其中,第一分区基于第一客户端的特性的预先知识被分配给第一客户端。
14.一种对存储资源的层级进行分区的方法,所述方法包括:
确定所述层级的第一客户端和所述层级的第二客户端的读取工作卷和写入工作卷;
基于读取工作卷和写入工作卷来确定工作负载类型;以及
基于工作负载类型在第一客户端与第二客户端之间对存储资源的所述层级进行分区。
15.根据权利要求14所述的方法,还包括:
基于读取工作卷和写入工作卷确定读取比率;以及
基于读取比率来确定工作负载类型。
16.根据权利要求14或15所述的方法,还包括:
基于工作负载类型来确定工作集大小;以及
基于工作集大小在第一客户端与第二客户端之间对存储资源的所述层级进行分区。
17.根据权利要求14或15所述的方法,还包括:
基于工作负载类型来确定工作卷大小;以及
基于工作卷大小在第一客户端与第二客户端之间对存储资源的所述层级进行分区。
18.一种对存储资源的层级进行分区的方法,所述方法包括:
确定存储资源的所述层级的第一客户端和第二客户端的第一分区计划;
基于第一分区计划确定第一预期缓存命中量;
确定存储资源的所述层级的第一客户端和第二客户端的第二分区计划;
基于第二分区计划确定第二预期缓存命中量;以及
基于第一预期缓存命中量和第二预期缓存命中量来选择第一分区计划和第二分区计划中的一个。
19.根据权利要求18所述的方法,还包括:
基于第一分区计划来确定第一客户端的第一预期命中率;
基于第一分区计划来确定第二客户端的第二预期命中率;
基于第一分区计划来确定第一客户端的第一预期工作卷;以及
基于第一分区计划来确定第二客户端的第二预期工作卷。
20.根据权利要求19所述的方法,其中,确定第一预期缓存命中量的步骤包括:确定第一客户端的第一预期命中率和第一预期工作卷与第二客户端的第二预期命中率和第二预期工作卷的加权和。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063088447P | 2020-10-06 | 2020-10-06 | |
US63/088,447 | 2020-10-06 | ||
US17/168,172 US11782624B2 (en) | 2020-10-06 | 2021-02-04 | Worflow-based partition allocation |
US17/168,172 | 2021-02-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385073A true CN114385073A (zh) | 2022-04-22 |
Family
ID=80931351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110953967.1A Pending CN114385073A (zh) | 2020-10-06 | 2021-08-19 | 操作存储系统的方法和对存储资源的层级进行分区的方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11782624B2 (zh) |
KR (1) | KR20220045902A (zh) |
CN (1) | CN114385073A (zh) |
TW (1) | TW202215248A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11836360B2 (en) * | 2021-12-08 | 2023-12-05 | International Business Machines Corporation | Generating multi-dimensional host-specific storage tiering |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5016876A (en) | 1988-10-14 | 1991-05-21 | Williams Electronics Games, Inc. | Video display co-processor for use in a video game |
US5052685A (en) | 1989-12-07 | 1991-10-01 | Qsound Ltd. | Sound processor for video game |
US5357604A (en) | 1992-01-30 | 1994-10-18 | A/N, Inc. | Graphics processor with enhanced memory control circuitry for use in a video game system or the like |
US5388841A (en) | 1992-01-30 | 1995-02-14 | A/N Inc. | External memory system having programmable graphics processor for use in a video game system or the like |
US6331856B1 (en) | 1995-11-22 | 2001-12-18 | Nintendo Co., Ltd. | Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing |
US6986137B1 (en) * | 1999-09-28 | 2006-01-10 | International Business Machines Corporation | Method, system and program products for managing logical processors of a computing environment |
US7024452B1 (en) | 2001-07-13 | 2006-04-04 | Vignette Corporation | Method and system for file-system based caching |
US7107403B2 (en) * | 2003-09-30 | 2006-09-12 | International Business Machines Corporation | System and method for dynamically allocating cache space among different workload classes that can have different quality of service (QoS) requirements where the system and method may maintain a history of recently evicted pages for each class and may determine a future cache size for the class based on the history and the QoS requirements |
US7660897B2 (en) * | 2004-08-03 | 2010-02-09 | International Business Machines Corporation | Method, system, and program for distributing application transactions among work servers |
US7831793B2 (en) | 2006-03-01 | 2010-11-09 | Quantum Corporation | Data storage system including unique block pool manager and applications in tiered storage |
US8538921B2 (en) | 2006-04-24 | 2013-09-17 | Yahoo! Inc. | File caching |
US7613876B2 (en) | 2006-06-08 | 2009-11-03 | Bitmicro Networks, Inc. | Hybrid multi-tiered caching storage system |
GB2529670A (en) | 2014-08-28 | 2016-03-02 | Ibm | Storage system |
WO2016162728A1 (en) | 2015-04-07 | 2016-10-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Workload aware storage platform |
US9703664B1 (en) | 2015-06-24 | 2017-07-11 | EMC IP Holding Company LLC | Self adaptive workload classification and forecasting in multi-tiered storage system using ARIMA time series modeling |
TWI545453B (zh) * | 2015-08-25 | 2016-08-11 | 國立清華大學 | 分散式系統及其資料庫管理方法及管理系統 |
US10146469B2 (en) | 2015-09-29 | 2018-12-04 | EMC IP Holding Company, LLC | Dynamic storage tiering based on predicted workloads |
US10353634B1 (en) | 2016-03-28 | 2019-07-16 | Amazon Technologies, Inc. | Storage tier-based volume placement |
US10360127B1 (en) | 2017-07-24 | 2019-07-23 | EMC IP Holding Company LLC | Techniques for identifying I/O workload patterns using key performance indicators |
US20190196969A1 (en) | 2017-12-22 | 2019-06-27 | Samsung Electronics Co., Ltd. | Method and apparatus for adaptive cache load balancing for ssd-based cloud computing storage system |
US10831526B2 (en) | 2017-12-29 | 2020-11-10 | Virtual Instruments Corporation | System and method of application discovery |
US10691357B2 (en) | 2018-08-08 | 2020-06-23 | International Business Machines Corporation | Consideration of configuration-based input/output predictions in multi-tiered data storage system management |
US20190042457A1 (en) * | 2018-08-22 | 2019-02-07 | Intel Corporation | Cache (partition) size determination method and apparatus |
US10922142B2 (en) | 2018-10-31 | 2021-02-16 | Nutanix, Inc. | Multi-stage IOPS allocation |
US20200175074A1 (en) * | 2018-12-04 | 2020-06-04 | Vmware, Inc. | Tree structure aware cache eviction policy |
CN111857539B (zh) * | 2019-04-25 | 2024-04-12 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机可读介质 |
-
2021
- 2021-02-04 US US17/168,172 patent/US11782624B2/en active Active
- 2021-07-07 TW TW110124868A patent/TW202215248A/zh unknown
- 2021-08-19 CN CN202110953967.1A patent/CN114385073A/zh active Pending
- 2021-09-29 KR KR1020210129181A patent/KR20220045902A/ko unknown
-
2023
- 2023-10-03 US US18/376,436 patent/US20240036756A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20220045902A (ko) | 2022-04-13 |
US20220107743A1 (en) | 2022-04-07 |
US11782624B2 (en) | 2023-10-10 |
TW202215248A (zh) | 2022-04-16 |
US20240036756A1 (en) | 2024-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11086523B2 (en) | Automatic tiering of storage using dynamic grouping | |
KR102226017B1 (ko) | 동적으로 입도를 업데이트하는 적응적 캐시 대체 매니저 및 공유 플래시-기반 스토리지 시스템의 파티셔닝 방법 | |
JP5270801B2 (ja) | デバイス・アダプタを介して、データをキャッシュから複数のストレージ・デバイスの各々にデステージするための方法、システム及びコンピュータ・プログラム | |
US9189410B2 (en) | Hypervisor-based flash cache space management in a multi-VM environment | |
Koller et al. | Centaur: Host-side ssd caching for storage performance control | |
US10496541B2 (en) | Dynamic cache partition manager in heterogeneous virtualization cloud cache environment | |
Laga et al. | Lynx: A learning linux prefetching mechanism for ssd performance model | |
WO2016135570A1 (en) | Using access-frequency hierarchy for selection of eviction destination | |
CN104657286A (zh) | 一种分级存储方法及装置 | |
US20180121237A1 (en) | Life cycle management of virtualized storage performance | |
US20240036756A1 (en) | Systems, methods, and devices for partition management of storage resources | |
Rajasekaran et al. | Multi-cache: Dynamic, efficient partitioning for multi-tier caches in consolidated VM environments | |
CN116529695A (zh) | 使用存储系统优化的增强的应用性能 | |
US11048631B2 (en) | Maintaining cache hit ratios for insertion points into a cache list to optimize memory allocation to a cache | |
Soundararajan et al. | Dynamic partitioning of the cache hierarchy in shared data centers | |
KR101105127B1 (ko) | 에스에스디 확장버퍼를 사용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장버퍼로서 사용하는 장치 | |
KR102347871B1 (ko) | 캐시 관리 매커니즘을 갖는 컴퓨팅 시스템 및 그 동작방법 | |
US11645204B2 (en) | Managing cache replacement in a storage cache based on input-output access types of data stored in the storage cache | |
Tai et al. | SLA-aware data migration in a shared hybrid storage cluster | |
US10809937B2 (en) | Increasing the speed of data migration | |
Yang | Flash-based storage management in cloud computing datacenter infrastructures | |
Maruf et al. | Memtrade: Marketplace for Disaggregated Memory Clouds | |
Tai | Resource management in enterprise cluster and storage systems | |
CN117813592A (zh) | 压缩缓存作为缓存层级 | |
CN112231245A (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 |