IP Library Granted Patent US 9,195,578
Granted Patent B2
US 9,195,578 · App. 13/594,098 · Granted Nov 24, 2015

Systems, methods and computer program products memory space management for storage class memory

Inventors: Ru Fang (Beijing, CN); Bin He (San Jose, CA); Hui-I Hsiao (Saratoga, CA); Chandrasekaran Mohan (San Jose, CA)
Assignee: International Business Machines Corporation
G06F12/02
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,195,578
App. No.
13/594,098
Granted
Nov 24, 2015
Kind
B2
Abstract

Embodiments of the present invention provide a system, method and computer program products for memory space management for storage class memory. One embodiment comprises a method for information storage in an information technology environment. The method comprises storing data in a storage class memory (SCM) space, and storing storage management metadata corresponding to said data, in the SCM in a first data structure. The method further includes buffering storage management metadata corresponding to said data, in a main memory in a second data structure.

Claims (89)

1. A method of information storage in an information technology environment, the method comprising:

storing data in a storage class memory (SCM) space including a partition for an SCM header area including a slab class table comprising information describing metadata for a slab class, and a partition for an SCM data area for storing the data;

storing storage management metadata corresponding to the data, in the SCM header area of the SCM space in a first data structure, wherein the first data structure further stores allocation information;

buffering the storage management metadata corresponding to the data, into a second data structure in a main memory, wherein the first data structure in the SCM space for the storage management metadata has a different format than the second data structure in the main memory for the storage management metadata, and wherein the second data structure comprises at least a slab class data structure that includes:

a list of data page identifiers in the SCM data area with slots of the same size indicating a free page list; and

a list of same-size free slot identifiers in the SCM data area; and

in response to a storage space allocation request:

determining availability of a free slot in the SCM space based on the storage management metadata in the second data structure in the main memory; and

selectively allocating a slot in the SCM space for the request based on the availability of a free slot in the SCM space.

2. The method of claim 1 , wherein the main memory comprises random access memory, and the data is stored in the SCM data area of the SCM space without any of the data being stored in the second data structure of the main memory.

3. The method of claim 2 , wherein:

the SCM data area is partitioned for storing the data;

the SCM header area is partitioned for storing the storage management metadata; and

the information describing metadata for a slab class comprises slab class unique identification (ID), slab class size and slab class status information.

4. The method of claim 3 , wherein:

the SCM data area comprises fixed-size data pages, and each data page includes fixed-size slots.

5. The method of claim 4 , wherein the storage management metadata comprises:

a page map data structure maintained in the SCM header area, wherein the page map indicates if a data page is occupied; and

a slot map data structure maintained in the SCM header area, wherein the slot map indicates if a slot in a data page is occupied.

6. The method of claim 5 , wherein:

determining availability of a free slot in the SCM space based on the storage management metadata in the second data structure in the main memory comprises:

accessing the main memory and searching a free slot list of a slab class therein for a free slot; and

selectively allocating a slot in the SCM space for the request based on the availability of a free slot in the SCM space comprises:

if a free slot is not found, allocating a slot in a last data page in the SCM data area, wherein the identifier of the data page is the last one in the free page list of the same slab class.

7. The method of claim 6 , further comprising:

in response to a data item read request, directly reading a slot in a data page containing the data item from the SCM data area, without reading the entire data page from the SCM data area.

8. The method of claim 7 , further comprising:

in response to a data item write request, locating a slot in the SCM data area via a storage space allocation request, and updating corresponding metadata in the main memory;

writing the data item to the located slot in the SCM data area; and

selectively updating the corresponding metadata in the SCM header area.

9. A computer program product comprising a non-transitory storage medium readable by a processor and storing instructions for execution by the processor for performing a method comprising a computer-readable hardware storage device having program code embodied therewith, the program code being executable by a computer to implement a method comprising:

storing data in a storage class memory (SCM) space including a partition for an SCM header area including a slab class table comprising information describing metadata for a slab class, and a partition for an SCM data area for storing the data;

storing storage management metadata corresponding to the data, in the SCM header area of the SCM space in a first data structure, wherein the first data structure further stores allocation information;

buffering the storage management metadata corresponding to the data, into a second data structure in a main memory, wherein the first data structure in the SCM space for the storage management metadata has a different format than the second data structure in the main memory for the storage management metadata, and wherein the second data structure comprises at least a slab class data structure that includes:

a list of data page identifiers in the SCM data area with slots of the same size indicating a free page list; and

a list of same-size free slot identifiers in the SCM data area; and

in response to a storage space allocation request:

determining availability of a free slot in the SCM space based on the storage management metadata in the second data structure in the main memory; and

selectively allocating a slot in the SCM space for the request based on the availability of a free slot in the SCM space.

10. The computer program product of claim 9 , wherein:

the main memory comprises random access memory; the SCM data area is partitioned for storing the data;

the SCM header area is partitioned for storing the storage management metadata;

the SCM data area comprises fixed-size data pages, and each data page includes fixed-size slots; and

the information describing metadata for a slab class comprises slab class unique identification (ID), slab class size and slab class status information.

11. The computer program product of claim 10 , wherein:

the storage management metadata is stored in the first data structure and the second data structure;

a page map data structure is maintained in the SCM header area, and the page map indicates if a data page is occupied; and

a slot map data structure is maintained in the SCM header area, wherein the slot map indicates if a slot in a data page is occupied.

12. The computer program product of claim 11 , wherein:

determining availability of a free slot in the SCM space based on the storage management metadata in the second data structure in the main memory comprises:

accessing the main memory and searching a free slot list of a slab class therein for a free slot; and

selectively allocating a slot in the SCM space for the request based on the availability of a free slot in the SCM space comprises:

if a free slot is not found, allocating a slot in a last data page in the SCM data area, wherein the identifier of the data page is the last one in the free page list of the same slab class.

13. The computer program product of claim 12 , the method further comprising:

in response to a data item read request:

directly reading a slot in a data page containing the data item from the SCM data area, without reading the entire data page from the SCM data area; and

in response to a data item write request:

locating a slot in the SCM data area via a storage space allocation request, and updating corresponding metadata in the main memory;

writing the data item to the located slot in the SCM data area; and

selectively updating the corresponding metadata in the SCM header area.

14. A system for information storage in an information technology environment, comprising:

a processor;

a storage class memory (SCM) manager that uses the processor to store data in a SCM space including a partition for an SCM header area including a slab class table comprising information describing metadata for a slab class, and a partition for an SCM data area for storing the data;

a metadata manager that stores storage management metadata corresponding to the data, in the SCM header area of the SCM space in a first data structure, wherein the first data structure further stores allocation information;

a buffer manager that buffers the storage management metadata corresponding to the data, into a second data structure in a main memory, wherein the first data structure in the SCM space for the storage management metadata has a different format than the second data structure in the main memory for the storage management metadata, and wherein the second data structure comprises at least a slab class data structure that includes:

a list of data page identifiers in the SCM data area with slots of the same size indicating a free page list; and

a list of same-size free slot identifiers in the SCM data area; and

an allocation manager that in response to a storage space allocation request:

determines availability of a free slot in the SCM space based on the storage management metadata in the second data structure in the main memory; and

selectively allocates a slot in the SCM space for the request based on the availability of a free slot in the SCM space.

15. The system of claim 14 , wherein:

the main memory comprises random access memory; the SCM data area is partitioned for storing the data;

the SCM header area is partitioned for storing the storage management metadata; and

the information describing metadata for a slab class comprises slab class unique identification (ID), slab class size and slab class status information.

16. The system of claim 15 , wherein:

the SCM data area comprises fixed-size data pages, and each data page includes fixed-size slots;

the storage management metadata comprises:

a page map data structure maintained in the SCM header area, wherein the page map indicates if a data page is occupied; and

a slot map data structure maintained in the SCM header area, wherein the slot map indicates if a slot in a data page is occupied.

17. The system of claim 16 , wherein:

the allocation manager determines availability of a free slot in the SCM space based on the storage management metadata in the second data structure in the main memory by accessing the main memory and searching a free slot list of a slab class therein for a free slot;

the allocation manager selectively allocates a slot in the SCM space for the request based on the availability of a free slot in the SCM space by, if a free slot is not found, allocating a slot in a last data page in the SCM data area, wherein the identifier of the data page is the last one in the free page list of the same slab class; and

the system further comprising:

a read manager that in response to a data item read request:

directly reads a slot in a data page containing the data item from the SCM data area, without reading the entire data page from the SCM data area; and

a write manager that in response to a data item write request:

locates a slot in the SCM data area via a storage space allocation request, and updating corresponding metadata in the main memory;

writes the data item to the located slot in the SCM data area; and

selectively updates the corresponding metadata in the SCM header area.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 24, 2012
From: FANG, RU; HE, BIN; HSIAO, HUI-I; MOHAN, CHANDRASEKARAN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 028845/0263 →
Continuity (1)
Related Publication 20140059284A1 · Feb 27, 2014