CN110795206A - 用于促进集群级缓存和内存空间的系统和方法 - Google Patents

用于促进集群级缓存和内存空间的系统和方法 Download PDF

Info

Publication number
CN110795206A
CN110795206A CN201910711382.1A CN201910711382A CN110795206A CN 110795206 A CN110795206 A CN 110795206A CN 201910711382 A CN201910711382 A CN 201910711382A CN 110795206 A CN110795206 A CN 110795206A
Authority
CN
China
Prior art keywords
memory
cluster
application
page
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910711382.1A
Other languages
English (en)
Other versions
CN110795206B (zh
Inventor
李舒
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of CN110795206A publication Critical patent/CN110795206A/zh
Application granted granted Critical
Publication of CN110795206B publication Critical patent/CN110795206B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2058Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using more than 2 mirrored copies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2087Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring with a common controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/0608Saving storage space on storage systems
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2885Hierarchically arranged intermediate devices, e.g. for hierarchical caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/263Network storage, e.g. SAN or NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • G06F2212/284Plural cache memories being distributed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/314In storage network, e.g. network attached cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Abstract

本文描述的实施例提供一种用于促进集群中的集群级缓存和内存的系统。在操作期间,所述系统向在所述集群中的第一计算节点上运行的第一应用程序呈现集群缓存和集群内存。所述系统维护所述集群缓存的第一虚拟地址与所述第一计算节点的第一永久存储装置的第一物理地址之间的第一映射。所述系统维护所述集群内存的第二虚拟地址与所述集群的第一存储节点的第二永久存储装置的第二物理地址之间的第二映射。当接收到来自所述第一应用程序的针对缓存内存的第一内存分配请求后,所述系统分配与所述第一物理地址相对应的第一内存位置。所述第一应用程序可以被配置为基于所述第一虚拟地址访问所述第一内存位置。

Description

用于促进集群级缓存和内存空间的系统和方法
相关申请
本申请要求由李舒(Shu Li)于2018年8月2日提交的代理人案号为ALI-A14228USP且发明名称为“与离线存储装置相协作以适应应用程序的混合部署的集群级内存-缓存空间的方法和系统(Method and System of Cluster-Level Cache-Memory SpaceCooperating with Offline Storage to Accommodate the Mixed Deployment ofApplications)”的美国临时申请第62/713,920号的权益,其全部公开内容以引用的方式并入本文中。
背景
技术领域
本公开总体上涉及存储管理领域。更具体地,本公开涉及一种用于促进应用程序(app)运行的集群级内存空间的系统和方法。
背景技术
互联网的指数级增长使其成为在物理装置和虚拟装置上运行的各种应用程序的主流传送介质。这些应用程序带来了对计算资源的日益增长的需求。因此,设备供应商们竞相构建具有多种功能的更大、更快的计算装置(例如处理器、存储器、内存装置等)。然而,计算装置的性能不能无限增长,其受到物理空间、功耗以及设计复杂性等因素的限制。此外,具有更高性能的计算装置通常更加复杂和昂贵。更重要的是,由于过于庞大和复杂的系统通常无法提供规模经济,因此,仅通过增加计算装置的大小和性能来满足更高的计算需求可能在经济上是不可行的。
在这样的计算装置上,内存通常用作临时存储数据的桥接层。为了追求高性能,在计算装置上运行的应用程序通常在内存中维护大量数据以用于高效访问和频繁操作,当完成针对这些数据的计算时,数据通常被传送到更永久的存储器中。然而,随着分布式系统的发展,数据一致性可以通过多层保护来实现。结果,一些内存故障可以使用分布式保护恢复,且因此是可以承受的。此外,在分布式计算基础结构(如云计算)中,应用程序可以在底层计算资源的内存上连续运行,而不需要将数据传送到永久存储装置。这些特性降低了某些应用程序(如数据库、搜索引擎等)的永久存储需求。因此,内存的作用已经从临时存储变成了相对一致的存储。
如果某个应用程序只需在底层基础结构上运行,而无需考虑物理硬件资源和基础结构软件,则所述应用程序可被设计成高效地操作。因此,应用程序开发人员可以专注于应用程序的优化。
发明内容
本文描述的实施例提供用于促进集群中的集群级缓存和内存的系统。在操作期间,所述系统向在集群中的第一计算节点上运行的第一应用程序呈现集群缓存和集群内存。所述集群缓存可以基于所述集群中的一个或多个计算节点的永久存储装置,并且所述集群内存可以基于所述集群中的一个或多个存储节点的永久存储装置。所述系统可以维护所述集群缓存的第一虚拟地址与所述一个或多个计算节点中的所述第一计算节点的第一永久存储装置的第一物理地址之间的第一映射。当接收到来自所述第一应用程序的对缓存内存的第一内存分配请求后,所述系统基于所述第一映射分配与所述第一物理地址相对应的第一内存位置。所述第一应用程序可以被配置为基于所述第一虚拟地址访问所述第一内存位置。
在本实施例的变体中,所述系统确定所述第一永久存储装置是否可服务于来自所述第一应用程序的第二内存分配请求。如果所述第一永久存储装置无法服务于所述第二内存分配请求,则所述系统分配与所述一个或多个计算节点中的第二计算节点的第三永久存储装置的第三物理地址相对应的第二内存位置。所述第三物理地址映射到第三虚拟地址。所述第一应用程序可被配置为基于所述第三虚拟地址访问所述第二内存位置。
在本实施例的变体中,当接收到来自所述第一应用程序的基于所述第一虚拟地址的第一释放请求后,所述系统使所述第一内存位置可用于后续分配。
在本实施例的变体中,所述系统还维护所述集群内存的第二虚拟地址与所述一个或多个存储节点中的第一存储节点的第二永久存储装置的第二物理地址之间的第二映射。此外,基于所述第二映射,所述系统将所述第一应用程序的数据页存储至与所述第二物理地址相对应的第二内存位置。所述第一应用程序被配置为基于所述第二虚拟地址访问所述第二内存位置。
在另一变体中,所述系统将所述数据页的副本存储至与所述一个或多个存储节点中的第二存储节点的第四永久存储装置的所述第三物理地址相对应的第三内存位置。所述第二虚拟地址进一步映射到所述第三物理地址。
在另一变体中,所述系统接收基于所述第二虚拟地址对所述数据页的读取请求,在所述第二永久存储装置与所述第三永久存储装置之间选择用于检索所述数据页以服务于所述读取请求的永久存储装置,并且从所述选择的永久存储装置中获得所述数据页。
在另一变体中,所述系统基于所述第二虚拟地址接收来自所述第一应用程序的对数据页的写入请求,基于所述第二映射确定所述数据页已存在,并且在不执行写入操作的情况下更新所述第二映射。
在另一变体中,所述系统接收来自所述第一应用程序的对数据页的写入请求,将所述数据页存储在多个物理地址的内存位置中,并且将第三虚拟地址映射到所述多个物理地址。接着,所述系统从所述多个物理地址中选择一个物理地址作为用于呈现所述集群内存的所述数据页的代表地址。
在另一变体中,所述系统确定所述集群内存的独有数据页,生成包括所述独有数据页和对应映射信息的备份文件,并且将所述备份文件发送到区别于所述一个或多个存储节点的离线驱动器。
在另一变体中,所述系统将删除编码应用于独有数据页,并且终止针对所述独有数据页的基于复制的保护。
附图说明
图1A示出了根据本申请的实施例的促进向应用程序提供集群级缓存和内存的示例性基础结构。
图1B示出了根据本申请的实施例的示例性集群级缓存和内存。
图2示出了根据本申请的实施例的应用程序在集群级缓存和内存上的示例性执行。
图3A呈现了根据本申请的实施例的示出主节点形成集群第3层(L3)缓存的方法的流程图。
图3B呈现了根据本申请的实施例的示出应用程序在集群L3缓存中请求内存分配的方法的流程图。
图3C呈现了根据本申请的实施例的示出主节点注册分配于集群L3缓存中的内存的方法的流程图。
图3D呈现了根据本申请的实施例的示出应用程序在集群L3缓存上执行内存管理的方法的流程图。
图4A示出了根据本申请的实施例的在集群内存中的示例性内存页。
图4B示出了根据本申请的实施例的与集群内存相关联的操作的示例性分布。
图5A呈现了根据本申请的实施例的示出基础结构形成集群内存的方法的流程图。
图5B呈现了根据本申请的实施例的示出基础结构在集群内存上执行读取/写入操作的方法的流程图。
图5C呈现了根据本申请的实施例的示出基础结构执行集群内存的离线备份的方法的流程图。
图6示出了根据本申请的实施例的促进向应用程序提供集群级缓存和内存的示例性计算机系统。
图7示出了根据本申请的实施例的促进向应用程序提供集群级缓存和内存的示例性设备。
在诸图中,相同的附图标记指代相同的附图元件。
具体实施方式
呈现以下描述以使得本领域技术人员能够制造和使用实施例,并且在特定应用及其要求的背景下提供以下描述。对于本领域技术人员来说,对所公开的实施例的各种修改是显而易见的,并且在不脱离本公开的精神和范围的情况下,可以将本文定义的一般原理应用于其他实施例和应用。因此,本文描述的实施例不限于所示的实施例,而应符合本文公开的原理和特征的最宽范围。
综述
本申请描述的实施例通过向应用程序提供(i)由集群中的相应计算节点的本地永久存储装置表示的全局集群缓存,以及(ii)由集群中的相应存储节点的永久存储装置表示的全局集群内存,解决了向应用程序提供大规模缓存和内存而不考虑底层硬件和基础结构软件的问题。术语“应用程序”可以指在装置上运行的应用程序,其可以发出输入/输出(I/O)请求(例如,读取或写入请求)。
对于现有技术,在云环境中,应用程序通常在虚拟机(VM)上运行。VM可以提供物理机的有效且独立的复制。VM可以在其部署和执行期间提高灵活性和效率。VM可以模拟物理机并且在管理程序上运行。所述管理程序在物理装置的本地硬件上执行,并且促进硬件的共享和管理。因此,多个VM可以在同一物理机上执行,同时彼此保持隔离。VM也可以作为进程运行,所述进程可以是主机操作系统(OS)上的应用程序。此VM在进程启动时创建,并且在进程终止时终止。
无论其为哪种类型,VM仍然使用VM的虚拟硬件配置将自身表示为在其上运行的应用程序的计算机。然而,这需要在VM上运行的应用程序与底层硬件和/或系统软件相协调,以确定如何有效地利用底层VM配置。例如,所述配置可以指示特定VM的硬件需求以及在VM上运行的应用程序可能需要相对于底层硬件和/或基础结构软件确定应用程序运行效率。尽管在云环境中部署VM简化了应用程序的执行空间,然而VM配置与硬件和基础结构软件的底层部署的强耦合可能需要大量的资源,并且延长了开发过程。这可能会阻碍在云环境中运行的应用程序的优化。
为了解决这个问题,本文描述的实施例呈现了允许应用程序在可按字节可寻址的大内存空间中运行的基础结构。结果,应用程序不需要处理来自永久存储装置驱动器(例如硬盘驱动器或HDD)的块级数据访问。所述基础结构可以在后台管理数据移动、存储和检索。因此,当应用程序在所述基础结构上启动时,应用程序就可以使用大容量的虚拟内存空间。由于运行应用程序所需的必要内存可以从虚拟内存空间分配,所以所述应用程序可以在虚拟内存空间上运行,而不需要管理永久存储装置驱动器中的数据。
应用程序可以简单地使用内存分配和释放命令(例如,调用编程语言中的“malloc()”或“free()”),并且所述基础结构可以从虚拟内存空间分配内存或释放内存。以此方式,应用程序可以释放之前分配给应用程序的未用内存空间,并且底层基础结构可以回收内存空间(例如,重新分配给另一应用程序)。所述基础结构可以包含一组计算节点和一组存储节点。这些节点组成节点集群。计算节点负责在集群上执行应用程序。为了促进在集群上执行应用程序,基础结构形成集群一级(L1)缓存、集群二级(L2)缓存、集群三级(L3)缓存以及集群内存的层级结构。集群为集群内存提供空间,集群内存是应用程序用来保存数据的字节可寻址内存空间。以此方式,基础结构为应用程序提供处理器、多级集群缓存和集群内存。因此,应用程序可以在内存上运行,而不需要基于块、文件、对象等对存储装置进行读取或写入。
集群L1缓存可以包含相应计算节点的中央处理器(CPU)的L1/L2/L3缓存。此集群L1缓存可以专用于本地计算节点,并且不能与集群中的其他计算节点共享。集群L2缓存是计算节点的内存(例如动态随机访问内存(DRAM),如双内联内存模块(DIMM))。集群L2缓存也可以专用于本地计算节点,并且不能与集群中的其他计算节点共享。然而,集群L2缓存可以由同一计算节点中的多个CPU核心共享。集群L3缓存可以由计算节点中的非易失性内存(NVM)express(NVMe)、固态驱动器(SSD)、存储级内存(SCM)等永久存储装置形成。然而,基础结构可以将集群L3缓存的组合存储装置表示为可由相应计算节点访问的字节可寻址集群级内存装置。
集群可以包含一个或多个主节点,它们负责管理集群级内存。由于集群L3缓存是集群级逻辑内存空间,因此集群L3缓存的逻辑地址可以是连续的,并且映射到计算节点的内存装置的物理内存地址。在确定集群L3缓存中需要内存分配之后,应用程序可以首先尝试从本地永久存储装置分配内存。如果成功,则应用程序可以向主节点注册,继而将集群L3缓存的虚拟地址映射到存储装置的对应物理地址。主节点还就内存分配和虚拟内存地址通知应用程序。应用程序可以使用虚拟地址在所分配的内存空间上存储数据。
如果本地永久存储装置中的分配不成功,则应用程序可以查询主节点以进行内存分配。主节点可以从另一计算节点的永久存储装置分配内存空间。主节点可以根据一个或多个计算节点的可用内存空间、计算节点上的负载、利用率以及其他计算节点与具有内存分配请求的计算节点之间的网络带宽来选择其他计算节点的永久存储装置。主节点将集群L3缓存的虚拟地址映射到另一计算节点的存储装置的对应物理地址。主节点还就内存分配和虚拟内存地址通知应用程序。
在一些实施例中,应用程序可以向主节点提供请求,而主节点又从集群L3缓存分配所请求的内存。在一些实施例中,主节点可以优先分配集群L3缓存中的内存。例如,主节点可以将映射到本地计算节点的内存的逻辑空间分配给在计算节点上运行的高优先级应用程序。主节点也可以按先到先得的方式操作。主节点可以首先将每个个别计算节点中的本地内存空间映射为由在所述计算节点上运行的应用程序使用的集群L3空间。如果本地内存空间耗尽,则主节点可以从其他计算节点的物理内存装置分配集群L3内存空间。以此方式,主节点维护虚拟内存到集群L3缓存的物理内存空间的映射,并且可以根据实时内存分配和释放操作更新所述映射。
此外,所述基础结构为在其上运行的相应应用程序提供集群内存(可以是虚拟内存空间)。所述基础结构使用相应存储节点中的存储装置的存储空间来呈现集群内存。集群内存中的每个页都可以看作是虚拟页。所述基础结构可以在不同的存储节点中存储虚拟页的多个副本,从而为每个虚拟页提供高可用性。所述基础结构可以维护虚拟页的虚拟内存地址与对应于每个副本的物理地址之间的映射。因此,即使应用程序可能将虚拟页视为集群内存中的单个页,但虚拟页中的数据存储在多个物理页中。以此方式,所述基础结构可在维护多个副本的同时向应用程序呈现虚拟化集群内存。
在某些实施例中,所述基础结构可以记录集群内存内容的快照,并且将快照存储在离线基础结构驱动器中。离线驱动器可以包含另一组可能不参与集群内存的永久存储装置驱动器。所述离线驱动器可以与集群共置,或者位于可通过网络访问的远程位置。集群缓存中的内容可以不备份到离线驱动器中。由于离线驱动器仅用于存储备份数据(即,快照),而不是使用高处理量低延迟驱动器,因此离线装置可以包含低成本的硬盘驱动器作为高容量的离线存储装置。
示例性基础结构
图1A示出了根据本申请的实施例的促进向应用程序提供集群级缓存和内存的示例性基础结构。在本实例中,基础结构100可以包含一组计算节点102和一组存储节点106。这些节点可以通过网络150互相连接,并且形成节点集群,其可以称为集群110。集群110可以用于云环境(例如数据中心)或企业环境(例如大型实体)。计算节点102负责在集群110上执行应用程序。另一方面,存储节点106呈现由相应存储节点106的永久存储装置表示的全局集群内存140。
提供不同的基于云和/或基于网络的服务的许多应用程序持续运行。因此,这些应用程序可以不需要特意考虑关闭、将应用程序数据传送到永久存储装置并且使用所存储的数据进行重启。因此,如果基础结构100能够提供满足这些应用程序在无需考虑底层硬件或数据传送的情况下运行的足够大的内存,则这些应用程序可以优化为在内存空间上执行。基础结构100使用集群内存140提供这样的内存空间。应用程序190可以使用集群内存140的虚拟内存空间在计算节点104的CPU核心112和114上执行。
集群内存140可以是字节可寻址的大内存空间。因此,应用程序190不需要处理来自永久存储装置驱动器的块级数据访问。基础结构100可以在后台中管理数据移动、存储和检索。因此,当应用程序190在基础结构100上启动时,集群内存140呈现为应用程序190的大容量虚拟内存空间。由于运行应用程序190所需的必要内存可以从集群内存140分配,所以应用程序190可以在虚拟内存空间上运行,而不需要管理存储节点106中的永久存储装置驱动器中的数据。应用程序190可以简单地使用内存分配命令,并且基础结构100可以从集群内存140分配内存。
例如,如果应用程序190请求从集群内存140分配内存,则基础结构100可以从集群110的存储节点108分配内存。应用程序190可能不知道所分配内存的物理位置。对于应用程序190,所分配的内存将来自与集群内存140对应的虚拟内存空间。以此方式,集群110为应用程序190提供可用于保存数据的字节可寻址内存空间。类似地,应用程序190可以释放之前分配给应用程序190的未用内存空间,并且基础结构100可以回收所述内存空间。
为了促进在集群110中执行应用程序190,基础结构100形成集群L1缓存152、集群L2缓存154和集群L3缓存156的层级结构。集群L1缓存152可以包含相应计算节点的中央处理器(CPU)的L1/L2/L3缓存。例如,在计算节点104上,集群L1缓存152可以包含L1指令缓存122和数据缓存124、与CPU核心112相关联的L2缓存132、L1指令缓存126和数据缓存128、与CPU核心114相关联的L2缓存134。缓存152还可以包含与CPU核心112和CPU核心114相关联的L3缓存130。集群L2缓存154可以是计算节点104的内存136。缓存154可以专用于计算节点104,并且不能与集群110中的其他计算节点共享。然而,缓存154可以由CPU核心112和CPU核心114共享。集群L3缓存156可以由计算节点104中的永久存储装置138(如SSD或SCM)组成。基础结构100可以将集群L3缓存156的组合存储装置表示为集群110中的相应计算节点可以访问的字节可寻址集群级内存。
在一些实施例中,基础结构100可以记录集群内存140内容的快照170,并且将快照170存储在离线基础结构驱动器120中。离线驱动器120可以包含一组可能不参与集群内存140的永久存储装置驱动器。离线驱动器120可以与集群110共置,或可以位于可通过网络150访问的远程位置。集群L1/L2/L3缓存中的内容可以不备份到离线驱动器120。由于离线驱动器120只用于存储备份数据(如快照170),所以离线装置120可以包含一个或更多个低成本硬盘驱动器用作高容量离线存储装置,而不使用高处理量低延迟驱动器。
尽管集群L3缓存156和集群内存140作为连续的虚拟内存空间提供给应用程序190,但对应物理内存装置分布在多个装置上。例如,计算节点104的永久存储装置138只提供缓存156的一部分。因此,基础结构100包含用于提供集群级L3缓存156和内存140的一个或更多个主节点。图1B示出了根据本申请的实施例的示例性集群级缓存和内存。此处,集群110可以包含负责管理集群级缓存156和内存140的一个或多个主节点172和174。
基础结构100可以将计算节点102中的永久存储区138、161、162、163、164和165呈现为连续的集群L3缓存156。由于缓存156是集群级逻辑内存空间,因此缓存156的相应逻辑地址(例如,字节地址)可以是连续的(例如,可以是字节增量的),并且映射到计算节点的永久存储装置的物理内存位置。例如,可以将缓存156的逻辑地址(如虚拟页地址182)映射到可驻留在计算节点104的永久存储装置138中的对应物理页地址192。在一些实施例中,页地址192可以包含计算节点104的标识符(例如,介质访问控制(MAC)地址、互联网协议(IP)地址、标识集群110中的计算节点104的集群标识符等)。以此方式,集群110中的相应页地址就可以唯一地标识任何计算节点102上的相应物理页。
类似地,缓存156的另一虚拟页地址184可以映射到可驻留在计算节点105的永久存储装置162中的对应物理页地址194。在缓存156中,即使虚拟页地址182和184的对应物理位置可以位于不同的永久存储装置上,它们仍可以作为连续字节地址出现。为了促进从缓存156分配内存空间,主节点172可以维护L3缓存映射表180,所述表将虚拟页地址182和184分别映射到物理页地址192和194。应注意,计算节点的标识符可以作为表180中的单列呈现,或作为页地址的嵌入部分呈现。表180的每个条目还可以包含指示符196(例如,标志),其指示是否分配了某个特定的虚拟页,或其是否可用。
当从应用程序190接收到缓存156的内存分配请求时,计算节点104可以从永久存储装置138分配内存,并且将所分配的内存向主节点172注册。主节点172可以将永久存储装置138上分配的内存空间的物理地址映射到表180中的缓存156的对应虚拟地址。如果来自永久存储装置138的内存分配不成功,则计算节点104可以查询主节点172来分配内存。接着,主节点172可以从另一永久存储装置(如永久存储装置161)分配所请求的内存。接着,主节点172可以将永久存储装置161上分配的内存空间的物理地址映射到表180中的缓存156的对应虚拟地址。
或者,计算节点104可以向主节点172提供请求。当应用程序190在计算节点104上运行时,主节点172可以在表180中查找已映射到永久存储装置138的缓存156中的可用虚拟内存空间。如果主节点172找到可用的虚拟内存空间,则主节点172可以将所述可用空间分配给应用程序190,并且将对应条目中的指示符标记为“已分配”。以此方式,主节点172就可以在基础结构100中方便地分配内存。在一些实施例中,主节点172和174中的一个节点作为现用节点操作,而另一作为备用节点操作。假设主节点172作为现用主节点操作,并且主节点174作为备用节点操作。主节点172和174维护的映射和状态的任何更新都可以同步。例如,主节点172和174可以维护表180的副本。如果主节点172更新表180,则主节点172可以向主节点174发送包括更新的控制消息。这允许主节点174维护表180的同步副本。以此方式,如果现用主节点172变得不可用,则备用主节点174可以随时提供高可用性。
图2示出了根据本申请的实施例的应用程序在集群级缓存和内存上的示例性执行。为了保证从缓存156的内存分配效率,主节点172可以优先分配缓存156中的内存。例如,如果应用程序190是高优先级应用程序,则对于来自应用程序190的请求,主节点172可以分配映射到计算节点104的永久存储装置138的内存的逻辑内存空间。另一方面,对于在相同计算节点104上运行的低优先级应用程序204,主节点172可以从另一永久存储装置161分配内存。类似地,如果应用程序206是在计算节点105上运行的高优先级应用程序,则对于来自应用程序206的请求,主节点172可以分配映射到计算节点105的永久存储装置162的内存的逻辑内存空间。
主节点172也可以基于先到先得的方式操作。主节点172可以首先映射每个计算节点中的本地内存空间。例如,如果应用程序190首先从缓存156请求内存空间,则主节点172可以分配与永久存储装置138对应的虚拟内存空间。然而,如果永久存储装置138上的可用空间耗尽,则可以通过另一永久存储装置161响应来自同一应用程序190或另一应用程序204的后续内存分配请求。在从缓存156分配内存之后,主节点172可以对应地更新L3缓存映射表。以此方式,主节点172为缓存156维护虚拟内存到物理内存空间的映射,并且可以基于实时内存分配和释放操作更新所述映射。
此外,基础结构100为应用程序190、204和206提供集群内存140。基础结构100使用存储节点106中的存储装置的存储空间来呈现集群内存140。例如,集群内存140可以包含存储节点108和220的存储装置的存储空间。集群内存140中的每个页都可以看作是虚拟页。基础结构100可以在不同的存储节点中存储虚拟页的多个副本,从而为每个虚拟页提供高可用性。基础结构100可以维护集群内存映射表200,所述表将虚拟页的相应虚拟内存地址映射到每个副本的对应物理地址。主节点172可以存储表200,表200可通过每个存储节点106进行访问。
假设与虚拟地址210对应的虚拟页被复制到存储节点108的物理地址222和存储节点220的物理地址224中。表200可以将虚拟地址210映射到物理地址222和224。在一些实施例中,表200还可以包含表示存储节点的列。接着,表200可以将虚拟地址210映射到包括存储节点108标识符和存储节点108上的物理地址222的元组。表200还可以将虚拟地址210映射到另一由存储节点220的标识符和存储节点108上的物理地址224组成的元组,可使存储节点唯一地标识集群110中的相应物理地址。因此,即使应用程序190、204或206可以将对应于地址210的虚拟页视为集群内存140中的单个页,然而虚拟页中的数据分别存储在对应于存储节点108和220中的地址222和224的物理页中。以此方式,基础结构100向在不同计算节点上运行的应用程序190、204和206提供相同的虚拟化集群内存140,同时在不同的存储节点上维护每个虚拟页的多个副本。
集群L3缓存的操作
图3A呈现根据本申请的实施例的示出主节点形成集群第3层(L3)缓存的方法的流程图300。在操作期间,主节点获得相应计算节点的永久存储装置的存储信息(操作302)。接着,主节点将存储装置的内存空间组织到集群L3缓存上,使得存储装置的物理地址以全局一致和连续的方式映射到L3缓存的对应虚拟地址(操作304)。接着,主节点将所述组织后的内存空间注册为集群L3缓存(操作306),并且检查是否所有计算节点均已被注册(操作308)。如果不是所有计算节点均被注册,则主节点将继续获得下一计算节点的永久存储装置的存储信息(操作302)。在注册所有计算节点后,主节点可基于注册的内存空间形成全局可访问的集群L3缓存(操作310)。
图3B呈现根据本申请的实施例的示出应用程序请求在集群L3缓存中分配内存的方法的流程图330。在操作期间,应用程序从对应于本地永久存储装置的集群L3缓存段请求内存分配(操作332),并且检查内存分配是否成功(操作334)。如果成功,则应用程序将使用主节点注册本地永久存储装置所分配的内存空间的物理地址(操作336)。成功分配内存后,应用程序可以获知所分配内存空间的物理地址。
在一些实施例中,应用程序可以向主节点发送控制消息以进行注册。控制消息可以指示其为注册请求,并且包含所分配的内存空间的物理地址。另一方面,如果不成功,则应用程序查询主节点,以从对应于另一计算节点的本地永久存储装置的集群L3缓存段分配内存空间(操作338)。以上查询还可以基于控制消息,所述消息指示其为内存分配请求,并且包含内存分配请求。这将导致主节点分配所请求的内存。当分配了内存(操作336或338)后,应用程序可以将数据存储在所分配的内存空间中(操作340)。
图3C呈现根据本申请的实施例的示出主节点注册分配于集群L3缓存上的内存的方法的流程图350。在操作期间,主节点接收来自应用程序的控制消息(操作352),并且确定消息类型(操作354)。如果消息类型是内存分配请求,则主节点将从集群L3缓存段分配所请求的内存空间,所述缓存段对应于非本地(例如,不同的)计算节点的永久存储装置(操作356)。如果消息类型是注册请求,则主节点确定与所分配的内存空间对应的虚拟地址(操作358)。主节点通过将虚拟地址映射到所分配的内存空间的物理地址来注册所分配的内存空间(操作360)。
图3D呈现了根据本申请的实施例的示出应用程序在集群L3缓存上执行内存管理的方法的流程图380。在操作期间,主节点发起内存管理操作(操作382)(例如,“碎片收集”调用),并且检查是否需要释放集群L3缓存空间(操作384)。内存管理操作可以基于内存调用(例如来自应用程序的碎片收集调用)启动。如果需要释放操作,则应用程序将释放集群L3缓存空间,并且通知主节点回收已释放的L3缓存空间(操作386)。此通知可以是发送到主节点的控制消息。如果不需要释放操作,则应用程序将确定无需进行内存清理(操作388)。
集群内存
图4A示出了根据本申请的实施例的集群内存中的示例性内存页。基础结构100基于存储节点106的存储装置提供集群内存140。集群内存140可以看作字节可寻址的连续虚拟内存空间。集群内存140的每个页都可以使用虚拟地址来寻址。基于虚拟地址对存储在集群内存140中的相应页进行存储和访问。集群内存140作为集群范围内在不同计算节点上运行的应用程序190、204和206均可使用的公共内存空间而操作。假设集群内存140基于对应的虚拟地址472、474、476、478和480分别存储数个页402、404、406、408和410。应用程序190可以使用虚拟地址472存储和检索页402的内容。
然而,页402的内容物理存储在存储节点106的多个存储装置中。即使主节点172可以在存储节点108、414和416的存储装置422、424和426中分别存储页402的三个副本402-1、402-2和402-3,应用程序190在集群内存140中也只能获知页402的一个副本。主节点172可以维护页402的虚拟地址472与页副本402-1、402-2和402-3的相应物理地址之间的映射。页副本402-1、402-2和402-3中的一个被选作代表性的页副本,其可为页402的主要副本。例如,如果页副本402-1是代表性的页副本,则在集群内存140中,页副本402-1可呈现为页402。为检索页402中的数据,应用程序190可以基于虚拟地址472发出读取操作。主节点172可以检索页副本401-1、402-2和402-3中的一个页副本的内容,并且将所述内容提供给应用程序190。
在一些实施例中,主节点172可以使用副本选择策略来确定从哪个副本检索内容。所述选择策略可以基于哪个存储节点能够提供最快的检索速率。通过维护页副本402-1、402-2和402-3,主节点172可以为页402提供高可用性。假设存储节点416不可用(例如,由于节点或网络故障),则无法通过主节点172对存储装置416中的页副本402-3、404-1、408-3和410-1进行访问。然而,由于页402、404、408和410的其他副本分别存储在存储节点108和414的存储装置422和424中,所以主节点172仍然可以促进在集群内存140中对页402、404、408和410的读取和写入操作。
存储节点106中的相应存储节点也可以配置计算资源,如存储节点108、414和416中的相应计算资源442、444和446。计算资源442、444和446可以促进集群内存140的操作并且促进与离线驱动器120的协作。当应用程序190将页402放入集群内存140中时,对应存储节点的计算资源将启动流线型进程。当为应用程序190分配页402时,主节点172决定哪个副本页代表集群内存140中的页。例如,集群内存140中的页402可以用存储装置422上的页副本402-1表示。类似地,集群内存140中的页404可以用存储装置426上的页副本404-1表示。
当应用程序190对页402执行任何读取/写入操作时,计算资源442发起流线型进程,这样即使在存储节点106中有页402的多个副本,应用程序190也只能被呈现与页402对应的一个物理页。所述操作完成后,计算资源442可以获得其他副本的位置(例如,存储节点414和416),接着计算资源442可以使页副本402-1上的数据与其他页副本402-2和402-3同步,从而确保数据的一致性。由于这个流线型进程是内联完成的(即,在执行操作期间),因此这种流线型可确保以减少访问开销的方式节省容量。
计算资源442还可以对存储装置422进行周期性快照。在一些实施例中,基于流线型进程,计算资源442可以确定更新了哪些数据块,接着计算资源442获得更新后的数据块的快照,并且将所述快照传送至离线驱动器120。例如,从上一个快照开始,如果包括页副本402-1和406-1的数据块已完成更新,而包括页副本404-2和408-2的数据块未完成更新,则计算资源442可生成包括页副本402-1和406-1的数据块的快照,并且将所述快照传送至离线驱动器120。应注意,可以使用之前快照中的其中一个快照对包括页副本404-2和408-2的数据块进行备份。此外,用于指示数据块是如何进行组织的信息(例如,物理页地址与虚拟页地址之间的映射)也会周期性地备份到离线驱动器120。
在某些实施例中,一旦数据备份到离线驱动器120,基础结构100就可以在存储节点中维护每个页的单个副本。换句话说,备份的页不再以多种复制格式存储,以此节省存储节点上的存储空间。另一,一般使用要求较少存储容量的清除编码来保护相应页。例如,在备份了页402之后,基础结构100可不维护页副本402-2和402-3,相反,页402可以划分为多个编码片段并且存储在不同的存储节点中,由于集群内存140中的页402可以用存储装置422上的页副本402-1表示,因此基础结构100仍然可以维护页副本402-1,从而有效地在页副本402-1上执行与页402对应的读取/写入操作。如果更新了页402,则更新后的页副本402-1可以划分为多个编码片段,并且存储在其他不同的存储节点(例如,存储节点414和416)中。
图4B示出了根据本申请的实施例的与集群内存相关联的示例性操作分布。在本实例中,存储节点108的计算资源442可以通过将页副本402-1存储在与虚拟地址472对应的物理位置来对集群内存140的页402执行页流线型进程452。此外,计算资源442还可以执行对页402的读取/写入操作454。结果,应用程序190可以基于虚拟地址472执行读写入操作454,计算资源442可以对页副本402-1执行对应操作。
此外,计算资源442可以通过获得存储装置422的周期性快照并且将其存储在离线驱动器120上,从而促进快照管理456。为此,计算资源442可以通过获得存储装置422的数据块快照来执行增量备份操作458,这些数据块自上次更新以来已经被更新,如结合图4A所描述。此外,一旦将计算资源442上的数据块备份到离线驱动器120,计算资源442就可以对所述数据块执行清除码操作460,并且将数据块的编码片段存储在其他存储节点上,从而节省存储节点106上的存储空间。
集群内存的操作
图5A呈现根据本申请的实施例的示出基础结构形成集群内存的方法的流程图500。可通过存储节点和主节点的计算资源中的一个或多个来执行基础结构的此方法。在操作期间,基础结构确定与相应存储节点的永久存储装置相关联的存储信息(操作502)。所述存储信息可以包含以下中的一个或多个:可用内存空间(例如,存储装置的大小)、磁盘类型、输入/输出(I/O)速度、总线宽度和存储装置的数据传送速率。接着,基础结构基于所确定的存储信息确定集群内存,以使集群内存中的每个页都可以有多个页副本(操作504)。基础结构将集群内存呈现给在其上运行的相应应用程序(操作506)。应用程序可以将集群内存视为用于有代表性的页副本的内存空间。页副本的其他副本可不呈现在集群内存中,因此其对应用程序来说可保持“不可见”状态。
图5B呈现根据本申请的实施例的示出在集群内存上执行读取/写入操作的方法的流程图530。可通过存储节点和主节点的计算资源中的一个或多个来执行基础结构的此方法。在操作期间,基础结构接收来自应用程序的与虚拟地址相关联的操作请求(操作532),并且确定所述请求是读取请求还是写入请求(操作534)。如果所述请求是写入请求,则基础结构可以计算与写入请求相关联的传入数据的哈希值(操作536),并且基于所计算的哈希值检查数据是否已经存在于集群内存中(操作538)。
如果数据已经存在,则基础结构将在不执行写入操作的情况下更新虚拟地址到物理地址的映射(操作540)。相反,如果数据不存在,则基础结构为页副本选择存储节点,并且指示所选择的相应存储节点的计算资源将传入数据写入本地页副本的本地物理地址中(操作542)。在更新映射(操作540)或发出写入指令(操作542)之后,基础结构确定具有代表性的页副本,并且通知应用程序写入操作已经完成(操作546)。具有代表性的页副本是集群内存中呈现的页的主副本。如果所述请求是读取请求,则基础结构根据选择准则选择与虚拟地址对应的物理页位置,并且将页内容呈现给应用程序(操作548)。所述选择准则可以指示哪个页副本能够以最快速度被检索到。
图5C呈现根据本申请的实施例的示出基础结构执行集群内存的离线备份的方法的流程图550。可通过存储节点和主节点的计算资源中的一个或多个来执行基础结构的此方法。在操作期间,基础结构为周期性快照维护计时器(操作552),并且检查计时器是否已被触发(操作554)。如果计时器未被触发,则基础结构可以继续为周期性快照维护所述计时器(操作552)。如果计时器已被触发,则基础结构将确定集群内存中的独有页,并且使相关联的映射信息同步(操作556)。
基础结构可以将具有代表性的页确定为独有页(即,每个页的独有副本)。接着,基础结构将清除编码应用于相应独有页(操作558)。在一些实施例中,基础结构可以终止对独有页的基于复制的保护。接着,基础结构复制更新后的独有页和映射(即,自上次快照以来已更新的独有页和映射),以为增量备份生成快照(操作560),并且将增量备份的快照传回至离线驱动器(操作562)。
示例性计算机系统和设备
图6示出了根据本申请的实施例的促进向应用程序提供集群级缓存和内存的示例性计算机系统。计算机系统600包含处理器602、处理器602的缓存604、内存606和存储装置608。内存606可以包含易失性内存(例如,双内联内存模块(DIMM))。此外,计算机系统600可以耦合到显示装置610、键盘612和指针装置614。存储装置608可以存储操作系统616、存储管理系统618和数据636。存储管理系统618可以促进一个或多个以下装置的操作:计算节点、主节点、存储节点(例如存储节点上的计算资源)以及离线存储装置。
存储管理系统618可以包含指令,当所述指令由计算机系统600执行时,可使计算机系统600执行本公开中描述的方法和/或流程。具体来说,存储管理系统618可以包含用于将相应计算节点CPU的L1/L2/L3缓存呈现为集群L1缓存的指令、将相应计算节点的内存呈现为集群L2缓存的指令、以及将相应计算节点的永久存储装置呈现为集群L3缓存的指令(集群缓存模块620)。此外,存储管理系统618还包含用于将相应存储节点的永久存储装置呈现为集群内存的指令(集群内存模块622)。此外,存储管理系统618还包含用于在多个存储节点中维护多个页副本的同时、在集群内存中呈现独有页的指令(内存管理模块624)。
存储管理系统618还包含用于为集群L3缓存和/或集群内存维护虚拟地址与物理地址之间的映射的指令(内存管理模块624)。存储管理系统618还可以包含允许应用程序访问(例如,读取/写入)集群L1/L2/L3缓存和/或集群内存的指令(读取/写入模块626)。此外,存储管理系统618还包含周期性地将独有页快照备份至离线驱动器的指令(备份模块628)。存储管理系统618还可以包含基于清除编码保护已备份页的指令(备份模块628)。存储管理系统618还可以包含用于发送和接收消息的指令(通信模块630)。数据636可以包含任何可以促进基础结构操作的数据。
图7示出了根据本申请的实施例的促进向应用程序提供集群级缓存和内存的示例性设备。存储管理设备700可以包括多个单元或装置,这些单元或装置可以通过有线、无线、量子光或电子通信通道彼此通信。设备700可以使用一个或多个集成电路来实现,并且可以包含比图7所示更少或更多的单元或装置。此外,设备700可以集成在一个计算机系统中,或作为能够与其他计算机系统和/或装置通信的单独装置实现。具体地说,设备700可以包含处理器752、缓存754、内存756和存储装置758。设备700还可以包单元702-712,这些单元执行类似于图6中计算机系统600的模块620-630的功能或操作,包含:集群缓存单元702;集群内存单元704;内存管理单元706;读取/写入单元708;备份单元710以及通信单元712。
本详细描述中描述的数据结构和代码通常存储在计算机可读存储介质上,所述存储介质可以是可以存储代码和/或数据以供计算机系统使用的任何装置或介质。计算机可读存储介质包含但不限于:易失性内存、非易失性内存、磁性和光学存储装置、如磁盘、磁带、光盘(CD)、数码多功能光盘或数码视像光盘(DVD)、以及现在已知或后续研发出的能够存储计算机可读介质的其它介质。
具体实施方式部分所描述的方法和流程可以体现为代码和/或数据,这些代码和/或数据可以存储在如上文所描述的计算机可读存储介质中。当计算机系统读取和执行存储在计算机可读存储介质上的代码和/或数据时,计算机系统执行体现为数据结构和代码并且存储在计算机可读存储介质中的方法和过程。
此外,上述方法和流程可以包含在硬件模块中。例如,硬件模块可以包含但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)和其他已知的或后续研发出的可编程逻辑装置。当硬件模块被激活时,硬件模块执行硬件模块中包含的方法和流程。
仅出于说明和描述的目的呈现本文描述的以上实施例。其并不旨在为详尽的或将本文所描述的实施例限于所公开的形式。因此,许多修改和变动对于本领域技术人员而言是显而易见的。此外,以上公开不旨在限制本文描述的实施例。本文所描述的实施例的范围由所附权利要求限定。

Claims (20)

1.一种计算机实施的用于促进集群中的集群级缓存和内存的方法,所述方法包括:
向在所述集群中的第一计算节点上运行的第一应用程序呈现集群缓存和集群内存;其中,所述集群缓存是基于所述集群中的一个或多个计算节点的永久存储装置,并且所述集群内存是基于所述集群中的一个或多个存储节点的永久存储装置;
维护所述集群缓存的第一虚拟地址与所述一个或多个计算节点中的所述第一计算节点的第一永久存储装置的第一物理地址之间的第一映射;以及
响应于来自所述第一应用程序的对内存缓存的第一内存分配请求,基于所述第一映射分配与所述第一物理地址相对应的第一虚拟地址;其中,所述第一应用程序被配置为基于所述第一虚拟地址访问所述第一内存位置。
2.如权利要求1所述的方法,还包括:
确定所述第一永久存储装置是否能服务于来自所述第一应用程序的第二内存分配请求;以及
响应于确定所述第一永久存储装置无法服务于来自所述第一应用程序的所述第二内存分配请求,分配与所述一个或多个计算节点中的第二计算节点的第三永久存储装置的第三物理地址相对应的第二内存位置;其中,所述第三物理地址映射到第三虚拟地址,并且其中,所述第一应用程序被配置为基于所述第三虚拟地址访问所述第二内存位置。
3.如权利要求1所述的方法,还包括:响应于来自所述第一应用程序的基于所述第一虚拟地址的第一释放请求,使所述第一内存位置能用于后续分配。
4.如权利要求1所述的方法,还包括:
维护所述集群内存的第二虚拟地址与所述一个或多个存储节点中的第一存储节点的第二永久存储装置的第二物理地址之间的第二映射;以及
基于所述第二映射,将所述第一应用程序的数据页存储至与所述第二物理地址相对应的第二内存位置;其中,所述第一应用程序被配置为基于所述第二虚拟地址访问所述第二内存位置。
5.如权利要求4所述的方法,还包括:将所述数据页的副本存储至与所述一个或多个存储节点中的第二存储节点的第四永久存储装置的所述第三物理地址相对应的第三内存位置;其中,所述第二虚拟地址进一步映射到所述第三物理地址。
6.如权利要求5所述的方法,还包括:
接收基于所述第二虚拟地址对所述数据页的读取请求;
在所述第二永久存储装置与所述第三永久存储装置之间选择用于检索所述数据页以服务于所述读取请求的永久存储装置;以及
从所述选择的永久存储装置中获得所述数据页。
7.如权利要求1所述的方法,还包括:
接收来自所述第一应用程序的基于所述第二虚拟地址对数据页的写入请求;
基于所述第二映射确定所述数据页已存在;以及
在不执行写入操作的情况下更新所述第二映射。
8.如权利要求1所述的方法,还包括:
接收来自所述第一应用程序的对数据页的写入请求;
将所述数据页存储至多个物理地址的内存位置中;
将第三虚拟地址映射到所述多个物理地址;以及
从所述多个物理地址中选择一个物理地址作为用于呈现所述集群内存的所述数据页的代表地址。
9.如权利要求1所述的方法,还包括:
确定所述集群内存的独有数据页;
生成包括所述独有数据页和对应映射信息的备份文件;以及
将所述备份文件发送至区别于所述一个或多个存储节点的离线驱动器。
10.如权利要求9所述的方法,还包括:
将清除编码应用于所述独有数据页;以及
终止针对所述独有数据页的基于复制的保护。
11.一种存储指令的非暂时性计算机可读存储介质,当被计算机执行时,所述指令使所述计算机执行促进集群中的集群级缓存和内存的方法,所述方法包括:
向在所述集群中的第一计算节点上运行的第一应用程序呈现集群缓存和集群内存;其中,所述集群缓存是基于所述集群中的一个或多个计算节点的永久存储装置,并且所述集群内存是基于所述集群中的一个或多个存储节点的永久存储装置;
维护所述集群缓存的第一虚拟地址与所述一个或多个计算节点中的第一计算节点的第一永久存储装置的第一物理地址之间的第一映射;以及
响应于来自所述第一应用程序的对内存缓存的第一内存分配请求,基于所述第一映射,分配与所述第一物理地址相对应的第一虚拟地址;其中,所述第一应用程序被配置为基于所述第一虚拟地址访问所述第一内存位置。
12.如权利要求11所述的计算机可读存储介质,其中,所述方法还包括:
确定所述第一永久存储装置是否能服务于所述第一应用程序的第二内存分配请求;以及
响应于确定所述第一永久存储装置无法服务于所述第一应用程序的所述第二内存分配请求,分配与所述一个或多个计算节点中的第二计算节点的第三永久存储装置的第三物理地址相对应的第二内存位置;其中,所述第三物理地址映射到第三虚拟地址,并且其中,所述第一应用程序被配置为基于所述第三虚拟地址访问所述第二内存位置。
13.如权利要求11所述的计算机可读存储介质,其中,所述方法还包括:响应于来自所述第一应用程序的基于所述第一虚拟地址的第一释放请求,使所述第一内存位置能用于后续分配。
14.如权利要求11所述的计算机可读存储介质,其中,所述方法还包括:
维护所述集群内存的第二虚拟地址与所述一个或多个存储节点中的第一存储节点的第二永久存储装置的第二物理地址之间的第二映射;以及
基于所述第二映射,将所述第一应用程序的数据页存储至与所述第二物理地址相对应的第二内存位置中;其中,所述第一应用程序被配置为基于所述第二虚拟地址访问所述第二内存位置。
15.如权利要求14所述的计算机可读存储介质,其中,所述方法还包括:将所述数据页的副本存储至与所述一个或多个存储节点中的第二存储节点的第四永久存储装置的第三物理地址相对应的第三内存位置;其中,所述第二虚拟地址被进一步映射到所述第三物理地址。
16.如权利要求15所述的计算机可读存储介质,其中,所述方法还包括:
接收基于所述第二虚拟地址对所述数据页的读取请求;
在所述第二永久存储装置与所述第三永久存储装置之间选择用于检索所述数据页以服务于所述读取请求的永久存储装置;以及
从所述选择的永久存储装置中获得所述数据页。
17.如权利要求11所述的计算机可读存储介质,其中,所述方法还包括:
接收来自所述第一应用程序的基于所述第二虚拟地址对所述数据页的写入请求;
基于所述第二映射确定所述数据页已存在;以及
在不执行写入操作的状态下更新所述第二映射。
18.如权利要求11所述的计算机可读存储介质,其中,所述方法还包括:
接收来自所述第一应用程序的对数据页的写入请求;
将所述数据页存储至多个物理地址的内存位置中;
将第三虚拟地址映射到所述多个物理地址;以及
从所述多个物理地址中选择一个物理地址作为用于呈现所述集群内存的所述数据页的代表地址。
19.如权利要求11所述的计算机可读存储介质,其中,所述方法还包括:
确定所述集群内存的独有数据页;
生成包括所述独有数据页和对应映射信息的备份文件;以及
将所述备份文件发送至区别于所述一个或多个存储节点的离线驱动器。
20.如权利要求19所述的计算机可读存储介质,其中,所述方法还包括:
将清除编码应用于所述独有数据页;以及
终止针对所述独有数据页的基于复制的保护。
CN201910711382.1A 2018-08-02 2019-08-02 用于促进集群级缓存和内存空间的系统和方法 Active CN110795206B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862713920P 2018-08-02 2018-08-02
US62/713,920 2018-08-02

Publications (2)

Publication Number Publication Date
CN110795206A true CN110795206A (zh) 2020-02-14
CN110795206B CN110795206B (zh) 2023-06-13

Family

ID=69228739

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910711382.1A Active CN110795206B (zh) 2018-08-02 2019-08-02 用于促进集群级缓存和内存空间的系统和方法

Country Status (2)

Country Link
US (1) US10747673B2 (zh)
CN (1) CN110795206B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111913907A (zh) * 2020-08-13 2020-11-10 上海钜成锐讯科技有限公司 一种fpga集群方法、fpga芯片和fpga集群系统
CN112269542A (zh) * 2020-10-19 2021-01-26 苏州浪潮智能科技有限公司 一种nvme硬盘存储空间分配方法、装置及存储介质
CN113342465A (zh) * 2021-06-18 2021-09-03 上海交通大学 一种基于释放一致性内存同步的巨型虚拟机
CN113674133A (zh) * 2021-07-27 2021-11-19 阿里巴巴新加坡控股有限公司 Gpu集群共享显存系统、方法、装置及设备
CN114153754A (zh) * 2022-02-08 2022-03-08 维塔科技(北京)有限公司 用于计算集群的数据传输方法、装置及存储介质
WO2023193814A1 (zh) * 2022-04-08 2023-10-12 华为技术有限公司 融合系统的数据处理方法、装置、设备和系统
WO2024077999A1 (zh) * 2022-10-12 2024-04-18 华为技术有限公司 集合通信方法及计算集群

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11184457B2 (en) * 2019-06-27 2021-11-23 Intel Corporation Information-centric network data cache management
US11074113B1 (en) * 2020-05-21 2021-07-27 EMC IP Holding Company LLC Method and apparatus for performing atomic operations on local cache slots of a shared global memory
CN113296691B (zh) * 2020-07-27 2024-05-03 阿里巴巴集团控股有限公司 数据处理系统、方法、装置以及电子设备
CN115002120B (zh) * 2022-08-02 2022-10-25 蒲惠智造科技股份有限公司 一种基于数据同步的集群网络中主节点的确定方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4775932A (en) * 1984-07-31 1988-10-04 Texas Instruments Incorporated Computer memory system with parallel garbage collection independent from an associated user processor
US6148377A (en) * 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
JP2003022209A (ja) * 2001-07-05 2003-01-24 Nri & Ncc Co Ltd 分散サーバーシステム
JP2011175422A (ja) * 2010-02-24 2011-09-08 Fujitsu Ltd 判定プログラム、方法及び装置
CN102375789A (zh) * 2010-08-09 2012-03-14 上海中标软件有限公司 一种通用网卡非缓存的零拷贝方法及零拷贝系统
CN102405460A (zh) * 2009-02-11 2012-04-04 艾梵尼达有限公司 虚拟存储系统及其运行方法
CN106953901A (zh) * 2017-03-10 2017-07-14 重庆邮电大学 一种提高消息传递性能的集群通信系统及其方法

Family Cites Families (126)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0681721B1 (en) 1993-02-01 2005-03-23 Sun Microsystems, Inc. Archiving file system for data servers in a distributed network environment
US6226650B1 (en) 1998-09-17 2001-05-01 Synchrologic, Inc. Database synchronization and organization system and method
US7966462B2 (en) 1999-08-04 2011-06-21 Super Talent Electronics, Inc. Multi-channel flash module with plane-interleaved sequential ECC writes and background recycling to restricted-write flash chips
WO2001040903A2 (en) 1999-12-06 2001-06-07 Warp Solutions, Inc. System and method for enhancing operation of a web server cluster
US6981005B1 (en) 2000-08-24 2005-12-27 Microsoft Corporation Partial migration of an object to another storage location in a computer system
US7228441B2 (en) 2000-09-27 2007-06-05 Huron Ip Llc Multi-server and multi-CPU power management system and method
US6694451B2 (en) 2000-12-07 2004-02-17 Hewlett-Packard Development Company, L.P. Method for redundant suspend to RAM
US20020161890A1 (en) 2000-12-22 2002-10-31 Kailai Chen System and method for intelligently distributing content over a communicatons network
US20030163633A1 (en) 2002-02-27 2003-08-28 Aasheim Jered Donald System and method for achieving uniform wear levels in a flash memory device
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7487264B2 (en) 2002-06-11 2009-02-03 Pandya Ashish A High performance IP processor
KR100992177B1 (ko) 2003-05-07 2010-11-04 모사이드 테크놀로지스 코포레이션 파워 아일랜드를 사용한 집적 회로의 파워 관리
US20050038954A1 (en) 2003-06-04 2005-02-17 Quantum Corporation Storage drive having universal format across media types
US7051215B2 (en) 2003-06-13 2006-05-23 Intel Corporation Power management for clustered computing platforms
US7565454B2 (en) 2003-07-18 2009-07-21 Microsoft Corporation State migration in multiple NIC RDMA enabled devices
JP4371739B2 (ja) 2003-09-02 2009-11-25 株式会社東芝 シリアルataインタフェースを持つ電子機器及びシリアルataバスのパワーセーブ方法
US7173863B2 (en) 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US7676603B2 (en) 2004-04-20 2010-03-09 Intel Corporation Write combining protocol between processors and chipsets
US7490239B2 (en) 2005-01-07 2009-02-10 First Data Corporation Facilitating digital signature based on ephemeral private key
US7480766B2 (en) 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US8260924B2 (en) 2006-05-03 2012-09-04 Bluetie, Inc. User load balancing systems and methods thereof
JP5431148B2 (ja) 2006-05-31 2014-03-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ストレージ用論理データオブジェクトの変換方法およびシステム
US8132030B2 (en) 2006-06-27 2012-03-06 Koninklijke Philips Electronics N.V. Device and a method for managing power consumption of a plurality of data processing units
IL187041A0 (en) 2007-10-30 2008-02-09 Sandisk Il Ltd Optimized hierarchical integrity protection for stored data
KR101497074B1 (ko) 2008-06-17 2015-03-05 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법
US8954654B2 (en) 2008-06-18 2015-02-10 Super Talent Technology, Corp. Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance
US8959280B2 (en) 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
US9547589B2 (en) 2008-06-18 2017-01-17 Super Talent Technology, Corp. Endurance translation layer (ETL) and diversion of temp files for reduced flash wear of a super-endurance solid-state drive
JP2010152704A (ja) 2008-12-25 2010-07-08 Hitachi Ltd 計算機システムの運用管理システム及び管理方法
CN101889313B (zh) 2008-12-30 2014-12-03 E·孔法洛涅里 具有扩展工作温度范围的非易失性存储器
EP2396742A2 (en) 2009-02-10 2011-12-21 Uniloc Usa, Inc. Web content access using a client device identifier
US8918365B2 (en) 2009-06-19 2014-12-23 Blekko, Inc. Dedicating disks to reading or writing
US8996812B2 (en) 2009-06-19 2015-03-31 International Business Machines Corporation Write-back coherency data cache for resolving read/write conflicts
US20110055471A1 (en) 2009-08-28 2011-03-03 Jonathan Thatcher Apparatus, system, and method for improved data deduplication
US8688894B2 (en) 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US8214700B2 (en) 2009-10-28 2012-07-03 Sandisk Technologies Inc. Non-volatile memory and method with post-write read and adaptive re-write to manage errors
US9390035B2 (en) 2009-12-21 2016-07-12 Sanmina-Sci Corporation Method and apparatus for supporting storage modules in standard memory and/or hybrid memory bus architectures
US8443263B2 (en) 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
US8370297B2 (en) 2010-03-08 2013-02-05 International Business Machines Corporation Approach for optimizing restores of deduplicated data
JP2011198133A (ja) 2010-03-19 2011-10-06 Toshiba Corp メモリシステムおよびコントローラ
US8688897B2 (en) 2010-05-28 2014-04-01 International Business Machines Corporation Cache memory management in a flash cache architecture
JP4886877B2 (ja) 2010-05-31 2012-02-29 株式会社東芝 記録媒体制御装置、及びその方法
US9401967B2 (en) 2010-06-09 2016-07-26 Brocade Communications Systems, Inc. Inline wire speed deduplication system
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
US8938624B2 (en) 2010-09-15 2015-01-20 Lsi Corporation Encryption key destruction for secure data erasure
US9244779B2 (en) 2010-09-30 2016-01-26 Commvault Systems, Inc. Data recovery operations, such as recovery from modified network data management protocol data
US8516284B2 (en) 2010-11-04 2013-08-20 International Business Machines Corporation Saving power by placing inactive computing devices in optimized configuration corresponding to a specific constraint
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US9176794B2 (en) 2010-12-13 2015-11-03 Advanced Micro Devices, Inc. Graphics compute process scheduling
US8826098B2 (en) 2010-12-20 2014-09-02 Lsi Corporation Data signatures to determine successful completion of memory backup
US9612978B2 (en) 2010-12-31 2017-04-04 International Business Machines Corporation Encrypted flash-based data storage system with confidentiality mode
US9251087B2 (en) 2011-02-11 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for virtual memory management
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US8452819B1 (en) 2011-03-22 2013-05-28 Amazon Technologies, Inc. Methods and apparatus for optimizing resource utilization in distributed storage systems
KR101717081B1 (ko) 2011-03-23 2017-03-28 삼성전자주식회사 비휘발성 램과 휘발성 램을 버퍼 메모리로 사용하는 저장 장치
US20180107591A1 (en) 2011-04-06 2018-04-19 P4tents1, LLC System, method and computer program product for fetching data between an execution of a plurality of threads
US8832402B2 (en) 2011-04-29 2014-09-09 Seagate Technology Llc Self-initiated secure erasure responsive to an unauthorized power down event
US8904158B2 (en) 2011-09-02 2014-12-02 Lsi Corporation Storage system with boot appliance for improving reliability/availability/serviceability in high density server environments
KR20130031046A (ko) 2011-09-20 2013-03-28 삼성전자주식회사 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법
US8843451B2 (en) 2011-09-23 2014-09-23 International Business Machines Corporation Block level backup and restore
KR20130064518A (ko) 2011-12-08 2013-06-18 삼성전자주식회사 저장 장치 및 그것의 동작 방법
US9088300B1 (en) 2011-12-15 2015-07-21 Marvell International Ltd. Cyclic redundancy check for out-of-order codewords
US9213645B2 (en) 2011-12-29 2015-12-15 Sandisk Technologies Inc. Command aware partial page programming
US9043545B2 (en) 2012-01-06 2015-05-26 Netapp, Inc. Distributing capacity slices across storage system nodes
US8880815B2 (en) 2012-02-20 2014-11-04 Avago Technologies General Ip (Singapore) Pte. Ltd. Low access time indirect memory accesses
US9645917B2 (en) 2012-05-22 2017-05-09 Netapp, Inc. Specializing I/O access patterns for flash storage
US9092223B1 (en) 2012-05-31 2015-07-28 Google Inc. Systems and methods to save power in data-center networks
US9009402B2 (en) * 2012-09-20 2015-04-14 Emc Corporation Content addressable storage in legacy systems
US8756237B2 (en) 2012-10-12 2014-06-17 Architecture Technology Corporation Scalable distributed processing of RDF data
US9405621B2 (en) 2012-12-28 2016-08-02 Super Talent Technology, Corp. Green eMMC device (GeD) controller with DRAM data persistence, data-type splitting, meta-page grouping, and diversion of temp files for enhanced flash endurance
US9141554B1 (en) 2013-01-18 2015-09-22 Cisco Technology, Inc. Methods and apparatus for data processing using data compression, linked lists and de-duplication techniques
US9432755B2 (en) 2013-02-15 2016-08-30 Futurewei Technologies, Inc. Downstream burst transmission in passive optical networks
US8984171B2 (en) 2013-03-01 2015-03-17 Silicon Motion, Inc. Data storage device and flash memory control method
US8751763B1 (en) 2013-03-13 2014-06-10 Nimbus Data Systems, Inc. Low-overhead deduplication within a block-based data storage
US9280472B1 (en) 2013-03-13 2016-03-08 Western Digital Technologies, Inc. Caching data in a high performance zone of a data storage system
US10073626B2 (en) 2013-03-15 2018-09-11 Virident Systems, Llc Managing the write performance of an asymmetric memory system
KR102039537B1 (ko) 2013-03-15 2019-11-01 삼성전자주식회사 불휘발성 저장 장치 및 그것의 운영체제 이미지 프로그램 방법
US20140304452A1 (en) 2013-04-03 2014-10-09 Violin Memory Inc. Method for increasing storage media performance
US9183103B2 (en) 2013-05-31 2015-11-10 Vmware, Inc. Lightweight remote replication of a local write-back cache
US9785545B2 (en) 2013-07-15 2017-10-10 Cnex Labs, Inc. Method and apparatus for providing dual memory access to non-volatile memory
DE112013007263T5 (de) 2013-09-19 2016-04-07 Intel Corporation Techniken zur Zuweisung von Task-Anteilen bei verteilter Verarbeitung
US20160232103A1 (en) 2013-09-26 2016-08-11 Mark A. Schmisseur Block storage apertures to persistent memory
US9251154B2 (en) 2013-11-15 2016-02-02 International Business Machines Corporation Priority based reliability mechanism for archived data
US9619155B2 (en) 2014-02-07 2017-04-11 Coho Data Inc. Methods, systems and devices relating to data storage interfaces for managing data address spaces in data storage devices
US20150301964A1 (en) 2014-02-18 2015-10-22 Alistair Mark Brinicombe Methods and systems of multi-memory, control and data plane architecture
US9880859B2 (en) 2014-03-26 2018-01-30 Intel Corporation Boot image discovery and delivery
GB2527296A (en) 2014-06-16 2015-12-23 Ibm A method for restoring data in a HSM system
US9240722B2 (en) 2014-06-19 2016-01-19 Dell Products Lp Methods and systems for improving light load efficiency for power stages of multi-phase voltage regulator circuits
US10044795B2 (en) 2014-07-11 2018-08-07 Vmware Inc. Methods and apparatus for rack deployments for virtual computing environments
US9588977B1 (en) 2014-09-30 2017-03-07 EMC IP Holding Company LLC Data and metadata structures for use in tiering data to cloud storage
US9626286B2 (en) 2014-10-03 2017-04-18 Sandisk Technologies Llc Hardware and firmware paths for performing memory read processes
US9710330B2 (en) 2014-10-15 2017-07-18 Empire Technology Development Llc Partial cloud data storage
US10013169B2 (en) 2014-12-19 2018-07-03 International Business Machines Corporation Cooperative data deduplication in a solid state storage array
US10234930B2 (en) 2015-02-13 2019-03-19 Intel Corporation Performing power management in a multicore processor
US9734051B2 (en) 2015-02-16 2017-08-15 Quantum Corporation Garbage collection and defragmentation for solid state drives (SSD) and shingled magnetic recording (SMR) drives
KR101927233B1 (ko) 2015-03-16 2018-12-12 한국전자통신연구원 이기종 멀티-코어 시스템의 gpu 전력 측정 방법
US9911487B2 (en) 2015-05-19 2018-03-06 EMC IP Holding Company LLC Method and system for storing and recovering data from flash memory
US20160350002A1 (en) 2015-05-29 2016-12-01 Intel Corporation Memory device specific self refresh entry and exit
US10656838B2 (en) 2015-07-13 2020-05-19 Samsung Electronics Co., Ltd. Automatic stream detection and assignment algorithm
US10324832B2 (en) 2016-05-25 2019-06-18 Samsung Electronics Co., Ltd. Address based multi-stream storage device access
US9529601B1 (en) 2015-07-15 2016-12-27 Dell Products L.P. Multi-processor startup system
US9952769B2 (en) 2015-09-14 2018-04-24 Microsoft Technology Licensing, Llc. Data storage system with data storage devices operative to manage storage device functions specific to a particular data storage device
KR20170045806A (ko) 2015-10-20 2017-04-28 삼성전자주식회사 반도체 메모리 장치 및 이의 동작 방법
US20170147499A1 (en) 2015-11-25 2017-05-25 Sandisk Technologies Llc Multi-Level Logical to Physical Address Mapping Using Distributed Processors in Non-Volatile Storage Device
US20170162235A1 (en) 2015-12-02 2017-06-08 Qualcomm Incorporated System and method for memory management using dynamic partial channel interleaving
US9965441B2 (en) 2015-12-10 2018-05-08 Cisco Technology, Inc. Adaptive coalescing of remote direct memory access acknowledgements based on I/O characteristics
US10649681B2 (en) 2016-01-25 2020-05-12 Samsung Electronics Co., Ltd. Dynamic garbage collection P/E policies for redundant storage blocks and distributed software stacks
US10235198B2 (en) 2016-02-24 2019-03-19 Samsung Electronics Co., Ltd. VM-aware FTL design for SR-IOV NVME SSD
US20170249162A1 (en) 2016-02-25 2017-08-31 Red Hat Israel, Ltd. Safe transmit packet processing for network function virtualization applications
US10101939B2 (en) 2016-03-09 2018-10-16 Toshiba Memory Corporation Storage system having a host that manages physical data locations of a storage device
US10585809B2 (en) 2016-04-01 2020-03-10 Intel Corporation Convolutional memory integrity
US20170286311A1 (en) 2016-04-01 2017-10-05 Dale J. Juenemann Repetitive address indirection in a memory
US10866905B2 (en) 2016-05-25 2020-12-15 Samsung Electronics Co., Ltd. Access parameter based multi-stream storage device access
US10389839B2 (en) 2016-06-01 2019-08-20 Intel Corporation Method and apparatus for generating data prefetches specifying various sizes to prefetch data from a remote computing node
US10514862B2 (en) 2016-07-21 2019-12-24 Micron Technology, Inc. Memory device including concurrent suspend states for different operations
JP6274589B1 (ja) 2016-09-28 2018-02-07 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置および連続読出し方法
US11644992B2 (en) 2016-11-23 2023-05-09 Samsung Electronics Co., Ltd. Storage system performing data deduplication, method of operating storage system, and method of operating data processing system
US10374885B2 (en) 2016-12-13 2019-08-06 Amazon Technologies, Inc. Reconfigurable server including a reconfigurable adapter device
US10496544B2 (en) 2016-12-29 2019-12-03 Intel Corporation Aggregated write back in a direct mapped two level memory
US10516760B2 (en) 2017-03-17 2019-12-24 Verizon Patent And Licensing Inc. Automatic bootstrapping and dynamic configuration of data center nodes
TWI625620B (zh) 2017-05-12 2018-06-01 威盛電子股份有限公司 非揮發性記憶體裝置及其讀取方法
US10275162B2 (en) 2017-06-23 2019-04-30 Dell Products L.P. Methods and systems for managing data migration in solid state non-volatile memory
US10564856B2 (en) 2017-07-06 2020-02-18 Alibaba Group Holding Limited Method and system for mitigating write amplification in a phase change memory-based storage device
TWI631570B (zh) 2017-09-04 2018-08-01 威盛電子股份有限公司 錯誤檢查糾正解碼方法與裝置
US10606693B2 (en) 2017-12-28 2020-03-31 Micron Technology, Inc. Memory controller implemented error correction code memory

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4775932A (en) * 1984-07-31 1988-10-04 Texas Instruments Incorporated Computer memory system with parallel garbage collection independent from an associated user processor
US6148377A (en) * 1996-11-22 2000-11-14 Mangosoft Corporation Shared memory computer networks
JP2003022209A (ja) * 2001-07-05 2003-01-24 Nri & Ncc Co Ltd 分散サーバーシステム
CN102405460A (zh) * 2009-02-11 2012-04-04 艾梵尼达有限公司 虚拟存储系统及其运行方法
JP2011175422A (ja) * 2010-02-24 2011-09-08 Fujitsu Ltd 判定プログラム、方法及び装置
CN102375789A (zh) * 2010-08-09 2012-03-14 上海中标软件有限公司 一种通用网卡非缓存的零拷贝方法及零拷贝系统
CN106953901A (zh) * 2017-03-10 2017-07-14 重庆邮电大学 一种提高消息传递性能的集群通信系统及其方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
潘锋烽;熊劲;: "NV-Shuffle:基于非易失内存的Shuffle机制" *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111913907A (zh) * 2020-08-13 2020-11-10 上海钜成锐讯科技有限公司 一种fpga集群方法、fpga芯片和fpga集群系统
CN112269542A (zh) * 2020-10-19 2021-01-26 苏州浪潮智能科技有限公司 一种nvme硬盘存储空间分配方法、装置及存储介质
CN112269542B (zh) * 2020-10-19 2022-10-25 苏州浪潮智能科技有限公司 一种nvme硬盘存储空间分配方法、装置及存储介质
CN113342465A (zh) * 2021-06-18 2021-09-03 上海交通大学 一种基于释放一致性内存同步的巨型虚拟机
CN113342465B (zh) * 2021-06-18 2022-06-21 上海交通大学 一种基于释放一致性内存同步的巨型虚拟机
CN113674133A (zh) * 2021-07-27 2021-11-19 阿里巴巴新加坡控股有限公司 Gpu集群共享显存系统、方法、装置及设备
CN113674133B (zh) * 2021-07-27 2023-09-05 阿里巴巴新加坡控股有限公司 Gpu集群共享显存系统、方法、装置及设备
CN114153754A (zh) * 2022-02-08 2022-03-08 维塔科技(北京)有限公司 用于计算集群的数据传输方法、装置及存储介质
CN114153754B (zh) * 2022-02-08 2022-04-29 维塔科技(北京)有限公司 用于计算集群的数据传输方法、装置及存储介质
WO2023193814A1 (zh) * 2022-04-08 2023-10-12 华为技术有限公司 融合系统的数据处理方法、装置、设备和系统
WO2024077999A1 (zh) * 2022-10-12 2024-04-18 华为技术有限公司 集合通信方法及计算集群

Also Published As

Publication number Publication date
CN110795206B (zh) 2023-06-13
US10747673B2 (en) 2020-08-18
US20200042454A1 (en) 2020-02-06

Similar Documents

Publication Publication Date Title
CN110795206B (zh) 用于促进集群级缓存和内存空间的系统和方法
CN109799951B (zh) 使用分布式的和虚拟的命名空间管理的按需存储供应
US11163699B2 (en) Managing least recently used cache using reduced memory footprint sequence container
US9811276B1 (en) Archiving memory in memory centric architecture
CN108292235B (zh) 使用选择性资源迁移的网络附连存储器
US11144399B1 (en) Managing storage device errors during processing of inflight input/output requests
US11150962B2 (en) Applying an allocation policy to capture memory calls using a memory allocation capture library
CN106716412B (zh) 用于支持分布式计算环境中的零拷贝二进制基数树的系统和方法
US8433888B2 (en) Network boot system
US20190199794A1 (en) Efficient replication of changes to a byte-addressable persistent memory over a network
WO2019099360A1 (en) Fast boot
US11693818B2 (en) Data migration in a distributive file system
US20230221897A1 (en) Implementing coherency and page cache support for a storage system spread across multiple data centers
US10803006B1 (en) Persistent memory key-value store in a distributed memory architecture
CN107577733B (zh) 一种数据复制的加速方法及系统
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
JP2017033375A (ja) 並列計算システム、マイグレーション方法、及びマイグレーションプログラム
US20230021883A1 (en) Migrating virtual machines in cluster memory systems
US20230023696A1 (en) Migrating virtual machines in cluster memory systems
WO2020024590A1 (en) Persistent memory key-value store in a distributed memory architecture

Legal Events

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