CN116700605A - 用于异构存储***的***和方法 - Google Patents

用于异构存储***的***和方法 Download PDF

Info

Publication number
CN116700605A
CN116700605A CN202310200880.6A CN202310200880A CN116700605A CN 116700605 A CN116700605 A CN 116700605A CN 202310200880 A CN202310200880 A CN 202310200880A CN 116700605 A CN116700605 A CN 116700605A
Authority
CN
China
Prior art keywords
file
storage device
storage
data structure
data
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
Application number
CN202310200880.6A
Other languages
English (en)
Inventor
S·坎南
Y·任
R·皮丘曼尼
D·多明戈
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Rutgers State University of New Jersey
Original Assignee
Samsung Electronics Co Ltd
Rutgers State University of New Jersey
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/900,830 external-priority patent/US11928336B2/en
Application filed by Samsung Electronics Co Ltd, Rutgers State University of New Jersey filed Critical Samsung Electronics Co Ltd
Publication of CN116700605A publication Critical patent/CN116700605A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了用于管理存储***的***和方法。存储***包括第一存储设备和与第一存储设备不同的第二存储设备。接收针对文件的第一部分的第一存储操作,并且识别与文件相关联的数据结构。基于数据结构,第一存储设备被识别为用于文件的第一部分。第一存储操作被发送到第一存储设备。响应于第一存储操作,第一存储设备更新或访问文件的第一部分。

Description

用于异构存储***的***和方法
对相关申请的交叉引用
本申请要求2022年3月3日提交的题目为“SYSTEMS,METHODS,AND DEVICES FORHETEROGENEOUS STORAGE SYSTEMS”的第63/316,403号美国临时申请的优先权和权益,并且要求2022年6月9日提交的题目为“UNIFIED I/O LIBRARY FOR HETEROGENEOUS STORAGESYSTEMS”的第63/350,818号美国临时申请的优先权和权益,并且要求2022年6月24日提交的题目为“UNIFYING HETEROGENEOUS STORAGE SYSTEMS WITH HETEROGENEOUS I/O”的第63/355,377号美国临时申请的优先权和权益,其中每一个的全部内容通过引用并入于此。
技术领域
根据本公开的实施例的一个或多个方面涉及存储***,并且更具体地涉及异构存储***的管理。
背景技术
大数据应用可以生成可能需要被快速访问和/或处理的大数据尺寸。这样的大数据应用的增长可能对传统存储***提出挑战。
在该背景技术部分中公开的上述信息仅用于增强对本公开的背景的理解,因此,它可能包含不形成现有技术的信息。
发明内容
本公开的实施例涉及一种用于管理存储***的方法,所述存储***包括第一存储设备和与第一存储设备不同的第二存储设备。该方法包括:接收针对文件的第一部分的第一存储操作;识别与文件相关联的数据结构;基于数据结构来识别用于文件的第一部分的第一存储设备;以及将第一存储操作发送到第一存储设备,其中,响应于第一存储操作,第一存储设备更新或访问文件的第一部分。
根据一些实施例,数据结构包括具有第一节点和第二节点的树数据结构,其中,第一节点包括关于文件的第一部分的第一信息,并且第二节点包括关于文件的第二部分的第二信息,其中文件的第二部分被存储在第二存储设备中。
根据一些实施例,第一信息标识第一文件***中的第一元数据,并且第二信息标识与第一文件***不同的第二文件***中的第二元数据。
根据一些实施例,文件是虚拟命名空间中的逻辑文件,其中,逻辑文件从应用中提取第一文件***和第二文件***。
根据一些实施例,第一存储操作被引导到虚拟命名空间,并且所述方法包括:接收被引导到虚拟命名空间的第二存储操作;识别第二存储设备;以及将第二存储操作发送到第二存储设备。
根据一些实施例,该方法还包括:接收针对文件的第二部分的第二存储操作;识别与文件相关联的数据结构;基于数据结构来识别用于文件的第二部分的第二存储设备;以及将第二存储操作发送到第二存储设备,其中,响应于第二存储操作,第二存储设备与第一存储设备更新文件的第一部分同时地更新文件的第二部分。
根据一些实施例,该方法还包括:识别分配给第一存储设备的第一处理线程;确定第一处理线程的吞吐量;以及基于吞吐量将第一处理线程重新分配给第二存储设备。
根据一些实施例,该方法还包括:计算第一处理线程对处理资源的利用率;确定第一处理组中的处理资源的可用性;以及响应于所述确定而从第二处理组借用处理资源。
根据一些实施例,文件的第一部分包括文件的第一数据块,并且文件的第二部分包括文件的第二数据块。
根据一些实施例,第一存储设备是非易失性存储器设备,并且第二存储设备是固态驱动器。
本公开的实施例还涉及一种用于管理存储***的***,该存储***包括第一存储设备和与第一存储设备不同的第二存储设备。该***包括处理器和存储器。存储器存储指令,所述指令在由处理器执行时使所述处理器:接收针对文件的第一部分的第一存储操作;识别与文件相关联的数据结构;基于数据结构来识别用于文件的第一部分的第一存储设备;以及将第一存储操作发送到第一存储设备,其中,响应于第一存储操作,第一存储设备更新或访问文件的第一部分。
当关于以下详细描述、所附权利要求和附图考虑时,将更全面地理解本公开的实施例的这些和其他特征、方面和优点。当然,本发明的实际范围由所附权利要求限定。
附图说明
参考以下附图描述了本发明实施例的非限制性和非穷举性实施例,其中除非另有说明,否则相同的附图标记在各个视图中指代相同的部分。
图1是根据一个实施例的包括耦合到异构存储***的主机计算设备的计算***的框图;
图2是根据一个实施例的异构存储管理器的框图;
图3是根据一个实施例的由逻辑文件的数据结构管理器生成的数据结构的概念图;
图4是根据一个实施例的用于处理存储操作的流程图;
图5是根据一个实施例的用于基于与一个或多个数据块相关联的I/O请求来更新图3的数据结构的过程的流程图;
图6是根据一个实施例的用于动态I/O放置的过程的流程图;以及
图7是根据一个实施例的用于向I/O线程动态分配CPU资源的过程的流程图。
具体实施方式
在下文中,将参考附图更详细地描述示例实施例,其中相同的附图标记始终表示相同的元件。然而,本公开可以以各种不同的形式实施,并且不应被解释为仅限于本文所示的实施例。相反,提供这些实施例作为示例,使得本公开将是透彻和完整的,并且将向本领域技术人员充分传达本公开的方面和特征。因此,可以不描述对于本领域普通技术人员来说完全理解本公开的方面和特征所不必要的过程、元件和技术。除非另有说明,否则在整个附图和书面描述中,相同的附图标记表示相同的元件,因此,可以不重复其描述。此外,在附图中,为了清楚起见,元件、层和区域的相对尺寸可能被夸大和/或简化。
大规模***可能需要快速访问和处理大量数据。为了解决该需求,可以以异构方式实现输入和/或输出(I/O)硬件存储栈。异构存储***可以包括不同的异构存储设备,诸如例如快速但更昂贵的存储设备,诸如持久存储器(PM),以及较慢但更高容量的设备,诸如非易失性存储器快速(NVMe)固态驱动器(SSD)或机械驱动器。
一些现有技术***可以通过采用诸如高速缓存或分层的技术来管理存储异构性。在一种高速缓存方案中,较快的存储装置(例如,PM)可以被用作高速缓存,并且较慢的存储设备(例如,SSD或硬盘)可以被用作备份存储装置。在一种分层方法中,评估数据的使用以确定数据在不同存储设备中的放置。例如,可以评估数据,使得活动或频繁访问的数据(也被称为“热”数据)被放置在较快的存储装置中,并且不活动或较不频繁访问的数据(也称为“冷”数据)被放置在较慢的存储装置中。
尽管现有技术***在管理异构存储设备方面是有用的,但是它们在最大化I/O性能、减少I/O放大等方面存在缺点。例如,当前技术解决方案可能限于沿着关键路径使用单个存储装置(例如,更快的存储装置),但未能利用由其他存储设备提供的累积带宽。例如,在高速缓存解决方案中,所有更新可以发生在快速存储设备上。在分层解决方案中,可以从快速和慢速存储设备同时访问热和冷对象(或文件);然而,访问快速或慢速存储设备中的多个热或冷对象仍然可能限于单个存储设备,从而防止累积带宽使用。
现有技术***的另一个缺点是高I/O放大,这可能导致从多个存储设备写入或读取相同的数据。分层机制也可能遭受刚性数据移动策略,其可能需要跨各种存储设备移动整个文件或对象。
一般而言,本公开的实施例涉及用于管理异构存储***中的I/O请求(例如,数据访问/读取和放置/写入)的***和方法。在一个实施例中,异构存储管理器为不同的存储设备提供统一命名空间,其从访问存储设备的应用中提取(abstract)出不同的文件***命名空间和/或存储设备。
来自应用的I/O请求可以被引导到统一命名空间中的逻辑文件。然而,逻辑文件的部分可以作为单独的文件被存储在不同存储设备的不同文件***中。因此,具有统一命名空间可以允许存储管理器透明地利用两个存储设备而不改变它们的文件***。可以经由库级数据结构——诸如间接表——来访问单独的文件,该库级数据结构可以提供逻辑文件的当前存储位置(或多个)。
在一个实施例中,存储管理器允许以并发方式跨不同存储介质对数据块或块范围(例如,文件扩展区)进行细粒度放置或移动。这有助于实现跨不同存储介质的累积带宽。在一个实施例中,存储管理器以树数据结构维护关于要由一个或多个线程更新或访问的文件块的信息。树数据结构可以是例如由区间范围索引的区间树(interval tree)。
在一个实施例中,区间树用于冲突解决。例如,区间树可以被用于识别来自一个应用线程的I/O请求,其可能与来自其他应用线程的请求冲突。存储管理器可以在文件的创建期间创建区间树。在一个实施例中,共享文件的进程或线程也可以共享文件的区间树。
在一个实施例中,发送I/O请求以更新文件的块/范围的应用线程可以获取区间树的全局读写锁。应用线程可以定位包含块/范围的树的节点以促成进行节点的更新,或者生成可以由请求的块/范围编索引的新树节点。
一旦区间树节点被更新,对块/范围的I/O请求就基于设备的物理文件描述符被分派到存储设备。物理文件描述符可以被存储在区间树中。在一个实施例中,在I/O请求的分派期间,获取每节点锁,从而释放全局读写锁。这允许多个线程同时针对不相交的块范围在磁盘上执行I/O。
在一个实施例中,存储管理器被配置为根据I/O流量动态地调整跨一个或多个存储设备的数据块的放置。这样的动态放置策略可以允许多个存储设备的有效利用以及跨多个存储设备的一个或多个中央处理单元(CPU)的有效利用。例如,具有相当高的CPU利用率的线程可以被动态地分配比具有相当低的CPU利用率的线程更多的CPU资源,反之亦然。当与静态数据放置策略相比时,动态CPU指派可以帮助避免一个或多个CPU的未充分利用,在静态数据放置策略中,静态数量的CPU被指派给每个存储设备而不管当前I/O流量如何。
在一个实施例中,存储管理器还提供跨多个存储设备的相当轻量的崩溃一致性(crash consistency)。在这方面,区间树可以是应用线程可以直接向其添加或更新区间树范围以获得耐久性和恢复的持久性区间树。在一个实施例中,从非易失性存储器(NVM)中的连续存储器映射区域分配树的节点。每一区间树节点可以使用相对于根节点的起始地址的物理偏移而非使用虚拟地址来指向下一节点。迭代持久性区间树节点可能需要从映射区域的起始地址到根节点的偏移。在故障的情况下,可以使用日志中的根节点的偏移来重新映射持久性区间树,并且可以恢复其他区间树节点。
图1是根据一个实施例的包括耦合到异构存储***104的主机计算设备102的计算***100的框图。计算***100可以是台式计算机、膝上型计算机、网络服务器、移动设备、嵌入式计算机等。
主机计算设备102可以包括处理器106和存储器108。处理器106,也称为中央处理单元(CPU),可以包括被配置为执行存储在存储器108中的程序指令的一个或多个处理核。在一个实施例中,处理器106被配置为执行一个或多个软件应用和/或处理线程110a-110c(统称为110)。应用/线程110可以为存储***104提供I/O请求(例如,读取请求、写入请求等)。
主机计算设备102的存储器108可以包括一个或多个易失性和/或非易失性存储器,包括但不限于随机存取存储器(RAM)(例如,动态随机存取存储器(DRAM))、只读存储器(ROM)等。存储器可以存储用于执行各种操作的指令,包括存储***104的管理操作。管理操作可以包括读取数据、写入数据或擦除存储***104的数据和/或其他类似操作。
在一个实施例中,异构存储***104包括一个或多个存储设备112a-112c(统称为112)。在一个实施例中,存储设备112中的至少一个与存储设备中的另一个是异构的。在这方面,存储设备112中的至少一个存储设备具有与存储设备中的另一个存储设备不同的存储特性(例如,带宽、延迟、容量等)。在异构存储***104中包括的存储设备112可以包括但不限于非易失性存储器(例如,PM)、SSD(例如,NVMe SSD)、硬盘驱动(HDD)等。不同的存储设备112可以具有对应的文件***114a-114c(统称为114)。文件***114可以存储文件的元数据,用于控制如何从对应的存储设备112存储和检索文件。
在一个实施例中,异构存储***104的各种管理操作由存储管理器116执行。例如,存储管理器116可以确定数据将被放置在异构存储***104中的何处,以及数据放置的粒度级别。存储管理器116可以被实现为存储在存储器108的用户或内核空间中的中间件软件,用于管理应用110和存储***104之间的通信。存储管理器116对存储***104的管理对于应用110可以是透明的。
在一个实施例中,存储管理器116提供将应用110与文件***114和/或存储设备112解耦的一个或多个统一命名空间。在这方面,存储管理器116提供可以跨越一个或多个存储设备112的单个目录结构,同时允许存储设备维持它们自己的文件***114。例如,存储管理器116可以将整个文件的不同部分存储在异构存储设备112中的不同异构存储设备中,但是将各个部分呈现为统一命名空间中的单个逻辑文件(例如,以单个目录结构)。然后,应用110可以基于统一命名空间中的文件描述符将读取和写入命令引导到逻辑文件。
在一个实施例中,存储管理器116被配置为采用细粒度数据放置策略,其可以帮助利用异构存储设备112的累积存储带宽。细粒度数据放置策略可以是字节级、块级等。在一个实施例中,存储管理器维护逻辑文件的数据结构。数据结构可以存储逻辑文件的一部分(例如,字节、块或者字节或块的范围)到对应的存储设备之间的映射信息。数据结构可以允许多个应用/线程110跨异构存储设备112同时访问逻辑文件的不同部分,从而允许利用存储***104的累积存储带宽。
在一个实施例中,数据结构是支持数据结构的崩溃一致性和耐久性的持久性数据结构。在这方面,可以从NVM中的连续存储器映射区域分配数据结构的节点。区间树节点可以使用相对于根节点的起始地址的物理偏移而非使用虚拟地址来指向下一节点。在故障的情况下,可以使用在日志中存储的偏移来重新映射持久性数据结构。
在一个实施例中,存储管理器110被配置有动态数据放置策略,用于负载平衡并用于最大化异构存储设备112的存储写入带宽。关于负载平衡,动态数据放置可以收集I/O吞吐量信息以基于负载考虑将I/O重新指派给不同的存储设备。动态数据放置策略还可以允许重新分配处理I/O操作的CPU资源以最大化CPU资源的使用。
例如,当采用静态数据放置策略而不是动态数据放置策略时,处理器106的一个或多个CPU核可以被静态地指派给存储设备112中的一个以用于处理针对存储设备的写入操作。由于静态指派,即使当一个或多个CPU核不活动时,该一个或多个CPU核可能也不被其他存储设备使用,这可能导致一个或多个CPU核的未充分利用。
在一个实施例中,处理器106的CPU核的动态调度允许具有相当高的CPU利用率的存储设备112比具有低CPU利用率的存储设备具有分配给设备的更多CPU资源。在这方面,存储管理器110被配置为收集各种CPU资源的聚合I/O吞吐量,并且动态地将指派给存储设备112中的一个(例如,NVM存储)的基本上不活动的CPU资源重新指派给存储设备中的另一个(例如,SSD)。当存储器的存储器高速缓存已满并且数据需要被放置到存储设备112中的一个中时,可以发生动态CPU分配。
图2是根据一个实施例的异构存储管理器116的框图。存储管理器116包括但不限于命名空间管理器200、数据结构管理器202和I/O放置引擎204。尽管假设图2的各种组件是单独的功能单元,但是本领域技术人员将认识到,在不脱离本发明构思的精神和范围的情况下,组件的功能可以组合或集成到单个组件中,或者被进一步细分为另外的子组件。
命名空间管理器200可以被配置为向应用110提供一个或多个统一命名空间,以用于提出出文件的物理位置(或多个)。在一些实施例中,命名空间管理器200为第一逻辑文件***提供第一统一命名空间,并且为第二逻辑文件***提供第二统一命名空间。应用110可以将I/O请求引导到第一统一命名空间和/或第二统一命名空间。
在一个实施例中,当应用110创建新文件时,命名空间管理器200在逻辑文件***中生成具有逻辑文件名的逻辑文件。然而,文件的不同部分可以作为单独的物理文件被存储在不同的物理位置中(例如,在不同的异构存储设备112中)。在一个实施例中,向应用110返回逻辑文件的名称/描述符,用于提取出可以存储文件的不同部分的不同存储设备112中的物理文件。应用110可以将I/O请求/命令(例如,读/写命令)引导到逻辑文件。
在一个实施例中,当应用110生成文件时,数据结构管理器202为逻辑文件生成数据结构208。数据结构208可以与统一命名空间中的逻辑文件名相关联。共享逻辑文件的应用110也可以共享文件的数据结构208。数据结构208可以是例如树结构。
在一个实施例中,数据结构标识逻辑文件的不同部分跨异构存储设备112被存储在何处。异构存储设备112中的一个或多个可以生成关于存储逻辑文件的部分的物理文件的文件元数据。文件元数据可以被存储在与存储设备112相对应的文件***114中。元数据可以被存储在索引节点(inode)中,但是实施例不限于此。元数据可以标识存储设备112中的物理文件的一个或多个块的物理位置。
在一个实施例中,数据结构208用于冲突解决。例如,数据结构208可以用于标识与来自其他线程的请求冲突的对文件的块/范围的更新。全局读写锁可以被用于解决冲突。在这方面,获得全局读写锁的线程可以更新要更新的文件的块/范围的数据结构208。在I/O请求的分派期间,线程可以获得包含要更新的文件的块/范围的节点的锁(称为每节点锁),从而释放全局读写锁。
在一个实施例中,数据结构管理器202提供崩溃一致性和耐久性。在这方面,数据结构管理器202允许跨不同存储设备112的多个级别的耐久性。例如,当跨不同的存储设备112散布数据时,第一类型的数据存储设备可以提供比第二类型的数据存储设备更弱的数据耐久性,但是提供比第三类型的数据存储设备更强的数据耐久性。在这种情况下,可以采用最小粒度模型来为跨第一类型的数据存储设备、第二类型的数据存储设备和第三类型的数据存储设备存储的文件提供最小元数据耐久性。替选地,可以预期最大数据耐久性的数据(例如,数据库数据)可以被被记录到支持最大数据耐久性的数据存储设备的类型。
为了为用于SSD的高速缓存页提供最大耐久性,可以采用append-only(只添加)日志记录协议来用于崩溃一致性,并且防止来自使用高速缓存行写回(cache line writeback,CLWB)和存储器栅栏(memory fence)发出持久性写入的易失性处理器高速缓存的数据丢失。可以在请求被添加到IO队列之后设置提交标志。在故障之后,可以在恢复期间丢弃具有未设置提交标志的请求。
在一些实施例中,数据结构管理器202允许为文件生成的数据结构208以及存储在高速缓存210中的数据的崩溃一致性和耐久性。在一个实施例中,数据结构208是持久性数据结构,应用线程可以直接添加或更新到该持久性数据结构,具有耐久性和恢复。在这方面,可以从NVM中的连续存储器映射区域分配数据结构的节点。数据结构208的节点可以使用相对于根节点的起始地址的物理偏移而不是使用虚拟地址来指向下一节点。在故障的情况下,可以使用存储在日志中的偏移来重新映射持久性数据结构。
在一个实施例中,I/O放置引擎204被配置有用于跨异构存储设备112中的一个或多个放置/写入数据的数据放置算法。当存储由各种应用110生成的数据的高速缓存210已满时,可以调用数据放置机制。在这种情况下,I/O布放置引擎204可以调用数据放置算法以将高速缓存210中的至少一些数据移动到异构存储设备112中的一个或多个。就这一点而言,用于块文件***的OS级虚拟文件***和高速缓存层可能利用粗粒度节点级锁来施加可扩展性瓶颈,这可能防止多个线程同时对文件进行操作。由管理DRAM中的细粒度数据放置和高速缓存数据二者的存储管理器116提供的统一命名空间和元数据管理层可以帮助解决瓶颈问题。在这方面,为了减少OS级高速缓存的瓶颈,本公开的实施例提供可扩展的应用级高速缓存,其可以解决OS高速缓存的并发瓶颈和用户级到OS上下文切换的开销。
在一个实施例中,I/O放置引擎204确定要存储在不同存储设备112中的数据的粒度,和/或要存储数据的存储设备的类型。在一个实施例中,数据放置算法可以允许数据被放置在基本上细粒度的级别(字节级别、块级别等),以允许逻辑文件的不同字节、块或块范围被多个应用/线程110同时访问。
在一个实施例中,数据放置算法在确定如何以及在何处存储文件的不同部分时考虑诸如存储设备112的负载和性能特性(例如,带宽、延迟等)的因素。例如,频繁访问的文件的热部分可以被存储在NVM中,而文件的冷部分可以被存储在SSD中。在另一示例中,如果存在比对第二存储设备更多的读取和写入第一存储设备的线程,则文件的一个或多个块可以比第一存储设备更多地存储在第二存储设备中。基于这些因素,数据放置算法可以动态地将指向命名空间的第一I/O请求放置到第一存储设备,并且将指向命名空间的第二I/O请求放置到第二存储设备。
在一个实施例中,I/O放置引擎204被配置为跨异构存储设备112管理CPU的利用。在一个实施例中,数据放置算法将CPU资源动态地指派给向存储设备112发出I/O请求的一个或多个处理线程112a-112c(统称为112)。例如,I/O请求可以是将数据放置在存储设备112中的高速缓存210中。
在一个实施例中,数据放置算法用于最大化异构存储***104的写入带宽。在这方面,处理线程212可以被指派给存储设备112中的一个或多个以将数据写入指派的存储装置(例如,在append(添加)操作期间)。如果指派给存储设备112中的第一存储设备(例如,相对快的存储设备)的处理线程212中的一个在发出I/O请求时活跃低于阈值,则线程可以被指派给存储设备中的第二存储设备(例如,相对慢的存储设备)。在线程被指派给特定类型的存储装置之后,CPU资源可以被分配给线程。在这方面,CPU资源被分成两个CPU组——快速CPU组和慢速CPU组。从其向线程分配CPU资源的组可以取决于线程被指派给快速存储装置还是慢速存储装置。如果指派给快速存储装置的线程多于快速组中的CPU的数量,则I/O放置引擎可以从慢速组中借用CPU,只要最小数量的CPU保留在慢速组中即可。
图3是根据一个实施例的由逻辑文件的数据结构管理器202生成的数据结构300的概念图。数据结构300可以类似于图2的数据结构208。
在一个实施例中,数据结构300是具有一个或多个节点302a、302b(统称为302)的树数据结构。更具体地,数据结构可以是区间树,其中树的节点302可以表示存储设备112中的物理文件。物理文件可以存储整个逻辑文件的一部分。例如,第一节点302a可以表示第一存储设备112(例如,NVM)中的第一物理文件,而第二节点302b可以表示第二存储设备(例如,SSD)中的第二物理文件。第一物理文件和第二物理文件可以被表示为虚拟文件***中的单个逻辑文件。在一个实施例中,节点302存储到存储在文件***114中的元数据的链接,该元数据对应于存储对应物理文件的存储设备。
在一个实施例中,树的节点304包括具有低值和高值的区间范围。区间范围可以表示在节点304中包括的数据块304a-304d(统称为304)的范围。数据块304中的一个或多个可以存储偏移和大小范围,偏移和大小范围可以被映射到对应存储设备112中的物理文件的一个或多个对应数据块。例如,数据块304a-304c可以存储可以被链接到第一存储设备(例如,NVM)中的一个或多个数据块的偏移和大小范围,并且数据块304d可以存储可以被链接到第二存储设备(例如,SSD)中的数据块的范围(例如,文件扩展区)的偏移和大小范围。
在一个实施例中,一个或多个应用/处理线程306a、306b(统称为306)可以发出指向逻辑文件的一个或多个I/O请求。在一个实施例中,I/O请求由存储管理器116处理。一个或多个应用306可以类似于图1的应用110和/或图2的处理线程212。
在一个实施例中,存储管理器116处理用于标识与I/O请求的逻辑文件相对应的数据结构300的I/O请求。数据结构可以被用于确定I/O请求是否与来自处理线程306中的另一个的I/O请求冲突。在一个实施例中,获取全局读写锁的处理线程306可更新数据结构300。处理线程306可以通过添加例如存在于数据结构300中的I/O请求的数据块来更新数据结构。可以基于I/O放置引擎204的放置算法将数据块添加到节点302中的一个。
在一个实施例中,当I/O请求被分派到被映射到对应于I/O请求的数据块的存储设备112时,全局读写锁被释放,并且每节点锁被获取。这可以允许多个应用以并发方式针对不相交的块范围对存储设备112执行I/O操作,从而克服底层文件***114的并发瓶颈。例如,在图3的示例中,处理线程306a可以执行针对数据块304a的I/O操作,同时处理线程306b执行针对数据块304d的I/O操作。
图4是根据一个实施例的用于处理存储操作的流程图。存储操作可以是例如应用306中的一个对虚拟文件***中的逻辑文件的一部分的读取或写入操作。该过程开始,并且在动作400中,存储管理器116接收针对逻辑文件的该部分的存储操作。
在动作402中,存储管理器116识别与逻辑文件相关联的数据结构300(例如,树结构)。应用306可以在数据结构300中搜索包含用于存储操作的逻辑文件的部分(例如,类似于数据块304)的节点(类似于节点302),并且执行数据结构的更新。更新可以是例如生成对应于与存储操作相关联的逻辑文件的部分的新节点和/或数据块,或者更新现有节点和/或数据块。例如,包含多个用户信息的文件可以被更新以改变用户中的一个的信息。这可能导致现有数据块的更新。在另一示例中,如果与节点相关联的数据块已经移动到不同的位置,则现有节点可以被更新。在一个实施例中,在更新区间树节点时应用306获取数据结构的全局读写锁。
在动作404中,存储管理器116基于数据结构来识别被映射到存储操作被引导到的逻辑文件的部分的存储设备112和/或存储设备112中的块/块范围。
在动作406中,存储操作被路由到存储设备以供执行。例如,存储管理器116可以将存储操作添加到I/O队列。存储设备112的控制器可以从I/O队列检索存储操作,并且作为响应输出结果(例如,读取或写入结果)。在一个实施例中,当存储操作被路由到存储设备时,全局读写锁被释放,并且为包含受影响的数据块的节点获取每节点锁。以这种方式,另一个应用可以同时对不同的数据块范围执行另一个存储操作。
图5是根据一个实施例的用于基于与一个或多个数据块304相关联的I/O请求来更新数据结构300的过程的流程图。在动作500中,访问应用306获取数据结构300的全局读写锁。如果读写锁不可用,则应用306可以等待执行更新,直到锁变得可用为止。
在动作502中,应用110遍历数据结构300以搜索包含与I/O请求相对应的数据块304的节点302。
在动作504中,应用110确定这样的数据块是否存在。如果答案为是,则应用在动作506中更新对应的节点。更新可以包括例如放置位置、时间戳等。
如果数据块不存在,则应用110在动作508中添加具有与I/O请求相对应的范围区间的新数据块。在存储设备112中的一个中放置新数据块可以取决于由I/O放置引擎204执行的放置算法。
在动作510中,完成数据结构300的更新,并且应用110释放全局读写锁。
图6是根据一个实施例的用于动态I/O放置的过程的流程图。该过程可以例如由I/O放置引擎204以被称为纪元的周期性为基础执行。每个纪元可以是例如一秒区间。
在动作600中,I/O放置引擎204收集一个或多个I/O线程(例如,处理线程306)的聚合I/O吞吐量。例如,I/O放置引擎204可以在当前纪元期间对一个或多个I/O线程的I/O请求的数量进行计数。一个或多个I/O线程可以被指派向不同存储设备112中的一个或多个发布I/O请求。例如,应用线程212a(图3)中的第一应用线程可以被指派为向诸如例如NVM设备的相对快的存储装置发出I/O请求,而应用线程212b中的第二应用线程可以被指派为向诸如例如NVMe SSD设备的相对慢的存储装置发出I/O请求。
在动作602中,I/O放置引擎204将一个或多个I/O线程的当前吞吐量与先前吞吐量进行比较。例如,I/O放置引擎204可以将当前纪元中的I/O线程中的一个的吞吐量与一个或多个先前纪元中的I/O线程的吞吐量进行比较。
在动作604中,I/O放置引擎204确定I/O线程中的一个的当前吞吐量是否低于先前吞吐量。如果答案为是,则I/O放置引擎204将线程重新指派给另一存储设备。例如,如果指派给相对较快的存储装置的I/O线程在发出I/O请求时基本上不活动,则可以将I/O线程重新指派给相对较慢的存储装置。在另一个示例中,如果指派给相对较慢的存储装置的I/O线程在发出I/O请求时基本上是活动的,则可以将I/O线程重新指派给相对较快的存储装置。这可以帮助最大化例如不同存储设备112的存储写入带宽。
图7是根据一个实施例的用于向I/O线程动态分配CPU资源的过程的流程图。在一个实施例中,CPU资源被划分为两个CPU组,但是实施例不限于此。例如,CPU资源可以被划分为第一(例如,快速)CPU组和第二(例如,慢速)CPU组。
在动作700中,I/O放置引擎204计算一个或多个I/O线程的CPU利用。
在动作702中,I/O放置引擎204向CPU组中的一个分配一个或多个I/O线程。例如,I/O放置引擎204可以将被指派给第一类型的存储装置(例如,快速存储装置)的I/O线程分配给第一(例如,快速)CPU组,并且将被指派给第二类型的存储装置(例如,慢速存储装置)的I/O线程分配给第二(例如,慢速)CPU组。
在动作704中,确定CPU组中是否存在足够的CPU资源被分配给I/O线程。例如,I/O放置引擎204可以确定是否存在指派给第一存储类型的需要来自第一CPU组的CPU资源的更多线程。如果答案为是,则I/O放置引擎204在动作706中从第二CPU组借用要分配给需要CPU资源的线程的一个或多个CPU资源。在一个实施例中,只要在第二CPU组中剩余阈值最小数量的CPU资源,则借用是可能的。
在一些实施例中,上面讨论的用于管理异构存储***中的I/O请求的***和方法在一个或多个处理器中被实现。术语处理器可以指代一个或多个处理器和/或一个或多个处理核。一个或多个处理器可以被托管在单个设备中或分布在多个设备上(例如,在云***上)。处理器可以包括例如专用集成电路(ASIC)、通用或专用中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、和诸如现场可编程门阵列(FPGA)的可编程逻辑器件。在处理器中,如本文所使用的,每个功能由被配置为即硬连线以执行该功能的硬件执行,或者由被配置为执行存储在非暂时性存储介质(例如,存储器)中的指令的诸如CPU的更通用的硬件执行。处理器可以被制造在单个印刷电路板(PCB)上或者分布在若干互连的PCB上。处理器可以包含其他处理电路;例如,处理电路可以包括在PCB上互连的两个处理电路,FPGA和CPU。
应当理解,尽管本文可以使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应受这些术语的限制。这些术语仅用于将一个元件、组件、区域、层或部分与另一个元件、组件、区域、层或部分区分开。因此,在不脱离本发明构思的精神和范围的情况下,本文讨论的第一元件、组件、区域、层或部分可以被称为第二元件、组件、区域、层或部分。
本文使用的术语仅用于描述特定实施例的目的,并不旨在限制本发明构思。此外,除非明确说明,否则本文描述的实施例不是相互排斥的。本文描述的实施例的各方面可以在一些实现方式中组合。
关于图4-7的流程图,应当理解,这些流程图的过程的步骤的顺序不是固定的,而是可以修改、顺序改变、不同地执行、顺序地、并发地或同时地执行,或者改变成任何期望的顺序,如本领域技术人员所认识到的。
如本文所用,术语“基本上”、“大约”和类似术语用作近似术语而不是程度术语,并且旨在考虑本领域普通技术人员将认识到的测量值或计算值的固有偏差。
如本文所使用的,单数形式“一”和“一个”旨在也包括复数形式,除非上下文另有明确说明。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组的存在或添加。如本文所使用的,术语“和/或”包括相关联的所列项中的一个或多个的任何和所有组合。诸如“……中的至少一个”的表达当在元件列表之后时,修饰整个元件列表而不修饰列表的各个元件。此外,在描述本发明构思的实施例时使用“可以”是指“本公开的一个或多个实施例”。此外,术语“示例性”旨在指代示例或说明。如本文所用,术语“使用”、“正在使用”和“已使用”可以被认为分别与术语“利用”、“正在使用”和“已使用”同义。
应当理解,当元件或层被称为在另一元件或层“上”、“连接到”、“耦合到”或“邻近”另一元件或层时,它可以直接在另一元件或层上、连接到、耦合到或邻近另一元件或层,或者可以存在一个或多个中间元件或层。相反,当元件或层被称为“直接在另一元件或层上”、“直接连接到”、“直接耦合到”或“紧邻”另一元件或层时,不存在中间元件或层。
本文所述的任何数值范围旨在包括包含在所述范围内的相同数值精度的所有子范围。例如,“1.0至10.0”的范围旨在包括所述最小值1.0和所述最大值10.0之间(并且包括端值)的所有子范围,即,具有等于或大于1.0的最小值和等于或小于10.0的最大值,例如2.4至7.6。本文所述的任何最大数值限制旨在包括其中包含的所有较低数值限制,并且本说明书中所述的任何最小数值限制旨在包括其中包含的所有较高数值限制。
尽管本文已经具体描述和示出了用于管理异构存储***中的I/O请求的***和方法的示例性实施例,但是对于本领域技术人员来说,许多修改和变化将是显而易见的。因此,应当理解,根据本公开的原理构造的用于管理异构存储***中的I/O请求的***和方法可以以不同于本文具体描述的方式来体现。本公开还在所附权利要求及其等同物中限定。
用于管理异构存储***中的I/O请求的***和方法可以包含以下声明中阐述的特征的一个或多个组合。
声明1:一种用于管理存储***的方法,所述存储***包括第一存储设备和与第一存储设备不同的第二存储设备,所述方法包括:接收针对文件的第一部分的第一存储操作;识别与文件相关联的数据结构;基于数据结构来识别用于文件的第一部分的第一存储设备;以及将第一存储操作发送到第一存储设备,其中,响应于第一存储操作,第一存储设备更新或访问文件的第一部分。
声明2:在如声明1所述的方法中,数据结构包括具有第一节点和第二节点的树数据结构,其中,第一节点包括关于文件的第一部分的第一信息,并且第二节点包括关于文件的第二部分的第二信息,其中文件的第二部分被存储在第二存储设备中。
声明3:在如声明1或2中的一个所述的方法中,第一信息标识第一文件***中的第一元数据,并且第二信息标识与第一文件***不同的第二文件***中的第二元数据。
声明4:在如声明1-3中的一个所述的方法中,文件是虚拟命名空间中的逻辑文件,其中,逻辑文件从应用中提取第一文件***和第二文件***。
声明5:在如声明1-4中的一个所述的方法中,第一存储操作被引导到虚拟命名空间,并且所述方法包括:接收被引导到虚拟命名空间的第二存储操作;识别第二存储设备;以及将第二存储操作发送到第二存储设备。
声明6:在如声明1-5中的一个所述的方法中,所述方法还包括:接收针对文件的第二部分的第二存储操作;识别与文件相关联的数据结构;基于数据结构来识别用于文件的第二部分的第二存储设备;以及将第二存储操作发送到第二存储设备,其中,响应于第二存储操作,第二存储设备与第一存储设备更新文件的第一部分同时地更新文件的第二部分。
声明7:在如声明1-6中的一个所述的方法中,所述方法还包括:识别指派给第一存储设备的第一处理线程;确定第一处理线程的吞吐量;以及基于吞吐量将第一处理线程重新指派给第二存储设备。
声明8:在如声明1-7中的一个所述的方法中,所述方法还包括:计算第一处理线程对处理资源的利用;确定第一处理组中的处理资源的可用性;以及响应于所述确定而从第二处理组借用处理资源。
声明9:在如声明1-8中的一个所述的方法中,文件的第一部分包括文件的第一数据块,并且文件的第二部分包括文件的第二数据块。
声明10:在如声明1-9中的一个所述的方法中,第一存储设备是非易失性存储器设备,并且第二存储设备是固态驱动器。
声明11:一种用于管理存储***的***,所述存储***包括第一存储设备和与第一存储设备不同的第二存储设备,所述***包括:处理器;以及存储器,其中,存储器存储指令,所述指令在由处理器执行时使所述处理器:接收针对文件的第一部分的第一存储操作;识别与文件相关联的数据结构;基于数据结构来识别用于文件的第一部分的第一存储设备;以及将第一存储操作发送到第一存储设备,其中,响应于第一存储操作,第一存储设备更新或访问文件的第一部分。
声明12:在如声明11所述的***中,数据结构包括具有第一节点和第二节点的树数据结构,其中,第一节点包括关于文件的第一部分的第一信息,并且第二节点包括关于文件的第二部分的第二信息,其中,文件的第二部分被存储在第二存储设备中。
声明13:在如声明11或12中的一个所述的***中,第一信息标识第一文件***中的第一元数据,并且第二信息标识与第一文件***不同的第二文件***中的第二元数据。
声明14:在如声明11-13中的一个所述的***中,文件是虚拟命名空间中的逻辑文件,其中逻辑文件从应用中提取第一文件***和第二文件***。
声明15:在如声明11-14中的一个所述的***中,第一存储操作被引导到虚拟命名空间,并且所述指令还使所述处理器:接收被引导到虚拟命名空间的第二存储操作;识别第二存储设备;以及将第二存储操作发送到第二存储设备。
声明16:在如声明11-15中的一个所述的***中,所述指令还使所述处理器:接收针对文件的第二部分的第二存储操作;识别与文件相关联的数据结构;基于数据结构来识别用于文件的第二部分的第二存储设备;以及将第二存储操作发送到第二存储设备,其中,响应于第二存储操作,第二存储设备与第一存储设备更新文件的第一部分同时地更新文件的第二部分。
声明17:在如声明11-16中的一个所述的***中,所述指令还使所述处理器:识别指派给第一存储设备的第一处理线程;确定第一处理线程的吞吐量;以及基于吞吐量将第一处理线程重新指派给第二存储设备。
声明18:在如声明11-17中的一个所述的***中,所述指令还使所述处理器:计算第一处理线程对处理资源的利用;确定第一处理组中的处理资源的可用性;以及响应于使得处理器确定可用性的指令而从第二处理组借用处理资源。
声明19:在如声明11-18中的一个所述的***中,文件的第一部分包括文件的第一数据块,并且文件的第二部分包括文件的第二数据块。
声明20:在如声明11-19中的任一项所述的***中,第一存储设备是非易失性存储器设备,并且第二存储设备是固态驱动器。

Claims (20)

1.一种用于管理存储***的方法,所述存储***包括第一存储设备和与第一存储设备不同的第二存储设备,所述方法包括:
接收针对文件的第一部分的第一存储操作;
识别与文件相关联的数据结构;
基于数据结构来识别用于文件的第一部分的第一存储设备;以及
将第一存储操作发送到第一存储设备,其中,响应于第一存储操作,第一存储设备更新或访问文件的第一部分。
2.根据权利要求1所述的方法,其中,数据结构包括具有第一节点和第二节点的树数据结构,其中,第一节点包括关于文件的第一部分的第一信息,并且第二节点包括关于文件的第二部分的第二信息,其中,文件的第二部分被存储在第二存储设备中。
3.根据权利要求2所述的方法,其中,第一信息标识第一文件***中的第一元数据,并且第二信息标识与第一文件***不同的第二文件***中的第二元数据。
4.根据权利要求3所述的方法,其中,文件是虚拟命名空间中的逻辑文件,其中,逻辑文件从应用中提取第一文件***和第二文件***。
5.根据权利要求4所述的方法,其中,第一存储操作被引导到虚拟命名空间,所述方法包括:
接收被引导到虚拟命名空间的第二存储操作;
识别第二存储设备;以及
将第二存储操作发送到第二存储设备。
6.根据权利要求2所述的方法,还包括:
接收针对文件的第二部分的第二存储操作;
识别与文件相关联的数据结构;
基于数据结构来识别用于文件的第二部分的第二存储设备;以及
将第二存储操作发送到第二存储设备,其中,响应于第二存储操作,第二存储设备与第一存储设备更新文件的第一部分同时地更新文件的第二部分。
7.根据权利要求6所述的方法,还包括:
识别指派给第一存储设备的第一处理线程;
确定第一处理线程的吞吐量;以及
基于吞吐量将第一处理线程重新指派给第二存储设备。
8.根据权利要求7所述的方法,还包括:
计算第一处理线程对处理资源的利用;
确定第一处理组中的处理资源的可用性;以及
响应于所述确定而从第二处理组借用处理资源。
9.根据权利要求2所述的方法,其中,文件的第一部分包括文件的第一数据块,并且文件的第二部分包括文件的第二数据块。
10.根据权利要求2所述的方法,其中,第一存储设备是非易失性存储器设备,并且第二存储设备是固态驱动器。
11.一种用于管理存储***的***,所述存储***包括第一存储设备和与第一存储设备不同的第二存储设备,所述***包括:
处理器;以及
存储器,其中存储器存储指令,所述指令在由处理器执行时使处理器:
接收针对文件的第一部分的第一存储操作;
识别与文件相关联的数据结构;
基于数据结构来识别用于文件的第一部分的第一存储设备;和
将第一存储操作发送到第一存储设备,其中,响应于第一存储操作,第一存储设备更新或访问文件的第一部分。
12.根据权利要求11所述的***,其中,数据结构包括具有第一节点和第二节点的树数据结构,其中,第一节点包括关于文件的第一部分的第一信息,并且第二节点包括关于文件的第二部分的第二信息,其中,文件的第二部分被存储在第二存储设备中。
13.根据权利要求12所述的***,其中,第一信息标识第一文件***中的第一元数据,并且第二信息标识与第一文件***不同的第二文件***中的第二元数据。
14.根据权利要求13所述的***,其中,文件是虚拟命名空间中的逻辑文件,其中,逻辑文件从应用中提取第一文件***和第二文件***。
15.根据权利要求14所述的***,其中,第一存储操作被引导到虚拟命名空间,其中,所述指令还使处理器:
接收被引导到虚拟命名空间的第二存储操作;
识别第二存储设备;以及
将第二存储操作发送到第二存储设备。
16.根据权利要求12所述的***,其中,所述指令进一步使处理器:
接收针对文件的第二部分的第二存储操作;
识别与文件相关联的数据结构;
基于数据结构来识别用于文件的第二部分的第二存储设备;以及
将第二存储操作发送到第二存储设备,其中,响应于第二存储操作,第二存储设备与第一存储设备更新文件的第一部分同时地更新文件的第二部分。
17.根据权利要求16所述的***,其中,所述指令进一步使处理器:
识别指派给第一存储设备的第一处理线程;
确定第一处理线程的吞吐量;以及
基于吞吐量将第一处理线程重新指派给第二存储设备。
18.根据权利要求17所述的***,其中,所述指令进一步使处理器:
计算第一处理线程对处理资源的利用;
确定第一处理组中的处理资源的可用性;以及
响应于使得处理器确定可用性的指令而从第二处理组借用处理资源。
19.根据权利要求12所述的***,其中,文件的第一部分包括文件的第一数据块,并且文件的第二部分包括文件的第二数据块。
20.根据权利要求12所述的***,其中,第一存储设备是非易失性存储器设备,并且第二存储设备是固态驱动器。
CN202310200880.6A 2022-03-03 2023-03-03 用于异构存储***的***和方法 Pending CN116700605A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US63/316,403 2022-03-03
US63/350,818 2022-06-09
US63/355,377 2022-06-24
US17/900,830 2022-08-31
US17/900,830 US11928336B2 (en) 2022-03-03 2022-08-31 Systems and methods for heterogeneous storage systems

Publications (1)

Publication Number Publication Date
CN116700605A true CN116700605A (zh) 2023-09-05

Family

ID=87844063

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310200880.6A Pending CN116700605A (zh) 2022-03-03 2023-03-03 用于异构存储***的***和方法

Country Status (1)

Country Link
CN (1) CN116700605A (zh)

Similar Documents

Publication Publication Date Title
CN108780406B (zh) 使用rdma共享工作数据的存储器
US10552337B2 (en) Memory management and device
CN110795206B (zh) 用于促进集群级缓存和内存空间的***和方法
US11593186B2 (en) Multi-level caching to deploy local volatile memory, local persistent memory, and remote persistent memory
US11163452B2 (en) Workload based device access
CN114860163B (zh) 一种存储***、内存管理方法和管理节点
EP2645259B1 (en) Method, device and system for caching data in multi-node system
US10909072B2 (en) Key value store snapshot in a distributed memory object architecture
US10802972B2 (en) Distributed memory object apparatus and method enabling memory-speed data access for memory and storage semantics
KR20120068454A (ko) 원격 페이지 폴트 처리 장치 및 그 방법
US9104583B2 (en) On demand allocation of cache buffer slots
US10802748B2 (en) Cost-effective deployments of a PMEM-based DMO system
Guo et al. HP-mapper: A high performance storage driver for docker containers
EP4239462A1 (en) Systems and methods for heterogeneous storage systems
CN116700605A (zh) 用于异构存储***的***和方法
US20220318042A1 (en) Distributed memory block device storage
Kim et al. Understanding the performance of storage class memory file systems in the NUMA architecture
Wagle et al. NUMA-aware memory management with in-memory databases
US10846007B2 (en) Shuffle manager in a distributed memory object architecture
WO2020024591A1 (en) Cost-effective deployments of a pmem-based dmo system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication