Defragmentation of persistent main memory
First Claim
Patent Images
1. A computer-implemented method, comprising:
- creating initial block information that indicates that an initial block, comprising a largest block of a plurality of free blocks, is a first hole in an original segment of memory;
creating an updated segment based on modifying the original segment to represent that contents of the original segment corresponding to the initial block do not contain any data;
modifying free block information to represent that the initial block is not one of the plurality of free blocks;
determining that an adjacent block adjacent to the initial block is a second hole in the updated segment based on adjacent block information corresponding to the adjacent block;
creating first combination block information based on modifying the initial block information to represent a first combination of the initial block and the adjacent block; and
deleting the adjacent block information corresponding to the adjacent block.
1 Assignment
0 Petitions
Accused Products
Abstract
Disclosed herein are system, method, and computer program product embodiments for defragmentation of persistent main memory (e.g., storage class memory). An embodiment operates by determining that a request to allocate a block of persistent main memory cannot be fulfilled, identifying the largest block of a plurality of free blocks associated with a persistent allocator, and punching a hole at the location of the block within a segment of the persistent main memory. The embodiment further operates by determining that at least one neighboring block of the largest block is also a hole, and coalescing the at least one neighboring block and the largest block.
-
Citations
20 Claims
-
1. A computer-implemented method, comprising:
-
creating initial block information that indicates that an initial block, comprising a largest block of a plurality of free blocks, is a first hole in an original segment of memory; creating an updated segment based on modifying the original segment to represent that contents of the original segment corresponding to the initial block do not contain any data; modifying free block information to represent that the initial block is not one of the plurality of free blocks; determining that an adjacent block adjacent to the initial block is a second hole in the updated segment based on adjacent block information corresponding to the adjacent block; creating first combination block information based on modifying the initial block information to represent a first combination of the initial block and the adjacent block; and deleting the adjacent block information corresponding to the adjacent block. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A non-transitory computer-readable device having instructions stored thereon that, when executed by at least one computing device, causes the at least one computing device to perform operations comprising:
-
creating initial block information that indicates that an initial block, comprising a largest block of a plurality of free blocks, is a first hole in an original segment; modifying free block information to represent that the initial block is not one of the plurality of free blocks; creating an updated segment based on modifying the original segment to represent that contents of the original segment corresponding to the initial block do not contain any data; determining that a left block is a second hole in the updated segment based on left block information corresponding to the left block, the left block adjacent to the initial block; creating combination block information based on updating the initial block information to represent a combination of the initial block and the left block; and deleting the left block information corresponding to the left block. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A system, comprising:
-
storage class memory including; an original segment that includes a plurality of blocks; free block information; block attribute information for the plurality of blocks, the block attribute information including a hole status of individual blocks of the plurality of blocks; dynamic random-access memory including; a persistent allocator that includes a block allocator; a mapping between the block allocator and the original segment; and one or more processors, wherein the one or more processors are configured to; modify the block attribute information to indicate that an initial block is a first hole in the original segment; modify the free block information to indicate that the initial block of the plurality of blocks is not a free block; create an updated segment based on modifying the original segment to represent that contents of the original segment corresponding to the initial block do not contain any data; determine that a neighboring block of the plurality of blocks is a second hole based on the block attribute information, the neighboring block adjacent to the initial block; and modify the block attribute information to represent a combination of the initial block and the neighboring block. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification