G06F12/0276

STALE DATA RECOVERY USING VIRTUAL STORAGE METADATA

Aspects of the present invention disclose a method, computer program product, and system for stale data recovery using virtual storage metadata. The method includes one or more processors generating a primary virtual storage metadata structure having virtual address areas for a data chunk. Each area includes a plurality of most recent updates of metadata for the data chunk. The metadata of each update includes a sequence number for the update and a pointer to the physical location of the data. The method further includes one or more processors generating an overflow virtual storage metadata structure for multiple virtual address areas. The overflow metadata structure includes updates that have overflowed from the virtual address areas. In addition, wherein an oldest update in a full virtual address area of the primary virtual storage metadata structure includes a link to an overflow location.

NUMA-aware garbage collection

Methods and systems for garbage collection are described. In some embodiments, Garbage collector threads may maximize local accesses and minimize remote access by copying Young objects and Old objects differently. When copying a Young object, a garbage collector thread may determine the lgroup of the pool that contains the object and copy the object to a pool of the same lgroup. The garbage collector thread may spread Old objects among lgroups by copying Old objects to pools of the same lgroup as the respective garbage collector thread. Additional methods and systems are disclosed.

Memory system and method of controlling nonvolatile memory
11074178 · 2021-07-27 · ·

According to one embodiment, a memory system includes a nonvolatile memory and a controller. The controller receives a movement request from a host, the movement request designating a logical address of movement target data. When update data corresponding to the designated logical address is not written to the nonvolatile memory by a write request from the host in a period from the reception of the movement request to start of movement of data corresponding to the designated logical address, the controller executes a movement process of moving data corresponding to the designated logical address to a movement destination block in the nonvolatile memory. When the update data is written to the nonvolatile memory in the period, the controller does not execute the movement process.

Consolidating garbage collector in a data storage system

The technology described herein is directed towards consolidating garbage collection of data stored in data structures such as chunks, to facilitate efficient garbage collection. Low capacity utilization chunks are detected as source chunks, and live data of an object (e.g., in segments) is copied from the source chunks to new destination chunk(s). A source chunk is deleted when it no longer contains live data. By copying the data on an object-determined basis, new chunks contain more coherent object data, which increases the possibility of future chunk deletion without data copying or with a reduced amount of copying. When data segments of an object are adjacent, the consolidating garbage collector may unite them into a united segment, which reduces an amount of system metadata per object. New chunks can be associated with a generation number (e.g., indicating the oldest previous generation) to further facilitate more efficient future chunk deletion.

Dynamic allocation of memory between containers

Techniques are presented for dynamically allocating memory between containers. These techniques include (a) assigning a first portion of memory to a first container and a second portion of memory to a second container, the first and second portions overlapping to form a shared portion of memory assigned to both containers; (b) during a first interval, caching first data in a particular page of the shared portion by first data storage software executing within the first container; (c) during a second interval, caching second data in the particular page of the shared portion by second data storage software executing within the second container; (d) during the first interval, selectively enabling the first data storage software to access the particular page and blocking the second data storage software from accessing the particular page; and (e) during the second interval, selectively enabling the second data storage software to access the particular page and blocking the first data storage software from accessing the particular page.

CONSOLIDATING GARBAGE COLLECTOR IN A DATA STORAGE SYSTEM
20210191856 · 2021-06-24 ·

The technology described herein is directed towards consolidating garbage collection of data stored in data structures such as chunks, to facilitate efficient garbage collection. Low capacity utilization chunks are detected as source chunks, and live data of an object (e.g., in segments) is copied from the source chunks to new destination chunk(s). A source chunk is deleted when it no longer contains live data. By copying the data on an object-determined basis, new chunks contain more coherent object data, which increases the possibility of future chunk deletion without data copying or with a reduced amount of copying. When data segments of an object are adjacent, the consolidating garbage collector may unite them into a united segment, which reduces an amount of system metadata per object. New chunks can be associated with a generation number (e.g., indicating the oldest previous generation) to further facilitate more efficient future chunk deletion.

Determining an age category for an object stored in a heap

Techniques for determining an age category for an object and identifying objects for memory leak analysis based on age categories are described. An age category classifier generates a set of age categories, each corresponding to a respective time interval. The age category classifier monitors garbage collection processes on the heap. The age category classifier determines a current age category based on a duration of time that has elapsed between (a) an initiation of a current garbage collection cycle and (b) a reference event. The age category classifier identifies objects transferred from one object group to another object group during the current garbage collection cycle. The age category classifier stores the current age category as the transfer age category in the headers of the transferred objects. The transfer age categories of the objects may be used for reducing the number of objects that are analyzed in a memory leak analysis.

Method and system for parallel mark processing

Parallel mark processing is disclosed including traversing first objects in a virtual machine heap based on correspondences between memory blocks in the virtual machine heap and N marking threads, pushing a first pointer of a first object into a private stack of a marking thread corresponding to a memory block, the first object being located in the memory block, performing first mark processing of the first object based on a push-in condition of the first pointer, and after traversal of the first objects has been completed, launching the N marking threads to cause the N marking threads to synchronously perform mark processing used in garbage collection based on push-in conditions of first pointers in respective private stacks of the first pointers.

MEMORY SYSTEM AND GARBAGE COLLECTION CONTROL METHOD
20210117317 · 2021-04-22 · ·

According to one embodiment, a memory system includes a controller which controls garbage collection for preparing one or more free blocks by writing valid data read from N blocks to one or more blocks of less than the N. The controller calculates a performance ratio between writing of data in response to a request from a host device and writing of data for the garbage collection in accordance with a data writable capacity remaining in a nonvolatile memory, calculates an average performance ratio from calculated performance ratios of M generations including a calculated latest performance ratio, and adjusts a performance cycle of the garbage collection by applying one of the calculated latest performance ratio and the calculated average performance ratio.

MEMORY USAGE IN MANAGED RUNTIME APPLICATIONS

Live objects in heap memory exceeding a threshold size and that have not been recently accessed are compressed or offloaded to secondary memory or storage. Compressing or offloading an object can further be based on how old the object is, which can be determined based on how many garbage collections the object has survived. Objects comprising references to other objects can be split into two sub-objects, one containing value fields that is compressed or offloaded and one containing reference fields that remains uncompressed in heap memory. Heap memory can undergo compaction after objects are compressed or offloaded. Compression accelerators can be used for compression and the decision of whether to compress or offload an object can be based on accelerator throughput, latency, availability, as well as other computing system metrics or characteristics. The compressing and offloading of objects and subsequent compaction can make more heap memory available for object allocation.