G06F12/0269

Managing memory in a computer system

Methods, computer program products, and systems for managing memory in a computer system in which memory locations in use at any given time are represented as a set of memory objects in a first object graph. The first object graph includes a system root object associated by references to each of the memory objects. A method includes creating a second root object for the memory to form a second object graph for the memory. The method also includes, in response to the dereferencing of a first object from the first object graph, associating the dereferenced first object with the second object graph so that the second object graph includes at least one dereferenced object.

System and method for self-healing of application centric infrastructure fabric memory

Disclosed is a method that includes obtaining a list of processes in an application centric infrastructure fabric, sorting the list of processes according to an amount of memory increase associated with each respective process in the list of processes to yield a sorted list, selecting a group of processes from the sorted list and collecting a respective live process core for each process in the group of processes without pausing or killing any process in the group of processes. The method includes applying an offline leak detection tool to each process in the group of processes to yield a list of leaked memory addresses for a given process of the group of processes and transmitting a message to the given process with the list of leaked memory addresses, whereby the given process calls a function to release leaked memory associated with the given process as identified in the message.

Locality grouping during garbage collection with flush of buffered write data upon completion of garbage collection operation

Systems, methods and/or devices are used to enable locality grouping during garbage collection of a storage device. In one aspect, the method includes, at a storage controller for the storage device: performing one or more operations for a garbage collection read, including: identifying one or more sequences of valid data in a source unit, wherein each identified sequence of valid data has a length selected from a set of predefined lengths; and for each respective sequence, transferring the respective sequence to a respective queue of a plurality of queues, in accordance with the length of the respective sequence; and setting a global flag to flush all open queues; and performing one or more operations for a garbage collection write, including: identifying open respective queues for writing to a destination unit; and writing from the open respective queues to the destination unit.

Memory controller, memory system including memory controller, method of operating memory controller
10885995 · 2021-01-05 · ·

A memory controller for use in a memory system may include a counter configured to count a number of times a read operation corresponding to a read request received from a host is performed; a token manager configured to generate a token each time a count value of the counter reaches a preset count, the token representing a right to perform a background operation; and a operation performing unit configured to perform foreground operations corresponding to the respective requests in response to the requests received from the host, request the token manager to allocate the token to the operation performing unit each time the background operation is triggered, and perform the background operation when the token is allocated from the token manager to the operation performing unit.

REDUCING SYNCHRONIZATION RELIANCE IN MARKING
20200409839 · 2020-12-31 ·

Memory reclamation is tailored to avoid certain synchronization instructions, speeding concurrent garbage collection while preserving data integrity and availability. Garbage collection reclaims objects no longer in use, or other unused areas of memory. Pointers are partitioned into address portions holding address values and non-address portions having a special bit. Marking code writes only the non-address portions, setting the special bit as a mark reference, relocation candidate, etc. Mutator threads may concurrently mutate the entire pointer to update the address, but mutation does not cause incorrect reclamations or failure to do other operations such as relocation. Meanwhile, execution speed is increased by avoiding CAS (compare-and-swap instructions or compare-and-set) synchronization instructions. Non-CAS yet nonetheless atomic writes are used instead. Mutators run in user or kernel address spaces. Partitioned pointers and their use may be enclosed to avoid runtime errors by code that expects references to be in a canonical non-partitioned form.

MULTI-THREADED PAUSE-LESS REPLICATING GARBAGE COLLECTION
20200409841 · 2020-12-31 ·

A method and a system for garbage collection on a system. The method includes initiating a garbage collection process on a system by a garbage collector. The garbage collector includes one or more garbage collector threads. The method also includes marking a plurality of referenced objects using the garbage collector threads and one or more application threads during a preemption point. The method includes replicating the referenced objects using the garbage collector threads and marking for replication any newly discovered referenced objects found by scanning the application thread stack from a low-water mark. The method also includes replicating the newly discovered referenced objects and overwriting any reference to the old memory location.

Copying and forwarding for concurrent copying garbage collection

An approach for optimizing a copying of a data object in a concurrent copying garbage collection operation is provided. In an embodiment, a source copy of the data object to be copied as part of the garbage collection operation is identified. A copying of the source copy to a target location is initiated by a primary accessing thread. This initiating of the copying includes the creation of a temporary target object header for the target object in the target location that contains an indicator set to indicate that the copying is ongoing. As the copying is occurring, the execution of any other accessing threads that are attempting to use the data object are held for as long as the indicator indicates that the copying is ongoing. Once the copying has completed, the target object header is replaced with a copy of the source object header, resetting the indicator.

SCALABLE GARBAGE COLLECTION
20200387322 · 2020-12-10 ·

Methods and systems for performing memory garbage collection include determining a size of N double-ended queues (deques) associated with N respective garbage collection threads, where N is three or greater. A task is popped from a deque out of the N deques having a largest size. Garbage collection is performed on the popped task.

Garbage collection work stealing with multiple-task popping

Methods and systems for performing garbage collection include issuing a memory fence that indicates that a number of tasks in a garbage collection deque, belonging to a first garbage collection thread, has decreased by more than one. A length of the garbage collection deque, after the memory fence is issued, is determined to be greater than zero. Multiple tasks are popped from the garbage collection deque responsive to the determination that the length of the garbage collection deque is greater than zero. Garbage collection is performed on the popped tasks.

Recency based victim block selection for garbage collection in a solid state device (SSD)

Methods and apparatus for controlling garbage collection in solid state devices (SSDs) are provided. Once such apparatus includes a non-volatile memory (NVM), and a controller communicatively coupled to a host device and the NVM, and configured to calculate an invalidation factor for each of a plurality of blocks in the NVM, wherein the invalidation factor is determined based on a percentage of invalid pages in a respective block of the plurality of blocks and a most recent time of invalidation of one or more pages in the respective block; classify each block of the plurality of blocks into one of three categories based on the calculated invalidation factor; and perform a garbage collection operation for the NVM, wherein the garbage collection operation includes selecting a source block for the garbage collection operation based on the classifications of the plurality of blocks.