IP Library › Granted Patent US 11,604,603
Granted Patent B2
US 11,604,603 · App. 17/355,000 · Granted Mar 14, 2023

Method and system for persistent partitionable distributed map using sparse arrays and sparse ordered two-bit bitmaps in shared memory

Inventors: Dmitry L. Ivanov (Branchburg, NJ); Yann Livis (Bedminster, NJ); Oleg Neverovitch (Hillsborough, NJ)
Assignee: Hewlett Packard Enterprise Development LP
G06F3/0655G06F3/0604G06F3/067G06F3/0644
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 11,604,603
App. No.
17/355,000
Granted
Mar 14, 2023
Kind
B2
Abstract

One aspect facilitates a global map in a distributed system. The system generates a first data structure which comprises key-value pairs, wherein, in a respective key-value pair, the respective key is an integer and the respective value comprises a pointer to a sparse array which includes a bitmap (such as an ordered two-bit bitmap). The system stores the first data structure as a first partition of the global map. The system searches, based on a pattern, the first data structure to obtain a first value. If the first value comprises a two-bit bitmap, the system converts, based on the pattern, the first value to a two-dimensional bitmap, and performs a function on the first value to obtain a first result. The system uses the first value or the first result as metadata to execute a read or write operation in a filesystem associated with the distributed system.

Claims (147)

1. A method comprising:

generating a first data structure which comprises key-value pairs,

wherein, in a respective key-value pair, the respective key is an integer and the respective value comprises a pointer to a sparse array which includes a bitmap;

storing the first data structure as a first partition of a global map;

searching, based on a pattern, the first data structure to obtain a first value;

responsive to determining that the first value comprises a two-bit bitmap:

converting, based on the pattern, the first value to a two-dimensional bitmap; and

performing a function on the first value to obtain a first result; and

using the first value or the first result as metadata to execute a read or write operation in a filesystem associated with the distributed system.

2. The method of claim 1 ,

wherein the distributed system comprises computing nodes,

wherein a first computing node accesses the first data structure in a memory of the first computing node by accessing only the stored first partition of the global map, and

wherein a second computing node accesses the first data structure in a shared memory region of the second computing node by accessing the global map.

3. The method of claim 1 ,

wherein the distributed system comprises computing nodes which include compute nodes and I/O nodes,

wherein the distributed system further comprises fabric attached memory (FAM),

wherein the filesystem is a fabric attached memory filesystem (FAMfs), and

wherein the global map stores data or metadata used by the compute nodes and the I/O nodes to operate the filesystem associated with the distributed system.

4. The method of claim 3 , further comprising:

storing, in a non-volatile memory associated with a first I/O node of the distributed system, the first data structure as the first partition of the global map; and

maintaining, by a first compute node of the distributed system, the global map by:

accessing, in the non-volatile memory associated with the first I/O node, the first data structure stored as the first partition; and

accessing, in non-volatile memory associated with other I/O nodes of the distributed system, other data structures stored as other partitions of the global map,

wherein the global map can be accessed concurrently by one writer process and one or more reader processes, and

wherein the writer process and the one or more reader processes may start arbitrarily.

5. The method of claim 1 ,

wherein the bitmap included in the sparse array comprises an ordered two-bit bitmap, which comprises four tetral digits corresponding to one of four states.

6. The method of claim 5 ,

wherein a set corresponding to the pattern comprises one or more of the four states,

wherein the two-dimensional bitmap is a two-dimensional Morton-encoded Boolean (MEB) bitmap,

wherein the first value comprises a first word, and

wherein converting, based on the pattern, the first value which comprises the two-bit bitmap (TBB) to the two-dimensional MEB bitmap, if a size of the pattern set is 1, comprises:

performing an exclusive OR operation on the first word and an inverse of a mask based on the given pattern to obtain a first temporary value;

performing an AND operation on the first temporary value and a CPU word filled with ‘10’ bits to obtain a second temporary value;

shifting the second temporary value right by one bit to obtain a third temporary value; and

performing an AND operation on the first temporary value and the third temporary value to obtain a first MEB.

7. The method of claim 6 , wherein converting, based on the pattern, the first value which comprises the two-bit bitmap (TBB) to the two-dimensional MEB bitmap, if the size of the pattern set is 3, comprises:

performing an exclusive OR operation on the first word and an inverse of a mask based on an inverse of the given pattern to obtain a fourth temporary value;

performing an AND operation on the fourth temporary value and the CPU word filled with ‘10’ bits to obtain a fifth temporary value;

shifting the fifth temporary value right by one bit to obtain a sixth temporary value;

performing an AND operation on the fourth temporary value and the sixth temporary value to obtain a seventh temporary value; and

performing an exclusive OR operation on the seventh temporary value and the CPU word filled with ‘01’ bits to obtain a second MEB.

8. The method of claim 6 , wherein converting, based on the pattern, the first value which comprises the two-bit bitmap (TBB) to the two-dimensional MEB bitmap, if the size of the pattern set is 2, comprises:

performing, based on which two tetral digits are included in the pattern set, one or more of:

inverting the first word; and

shifting the inverted first word right by one bit to obtain an eighth temporary value; and

performing an AND operation on the first value, the inverted first word, or the eighth temporary value and the CPU word filled with ‘01’ bits to obtain a third MEB.

9. The method of claim 1 , further comprising:

creating, by a writer process, a shared memory region in the global map which includes superslices and slices as a Judy array,

wherein a respective slice comprises key-value pairs in the global map,

wherein the values comprise pointers to sparse arrays, wherein a respective sparse array comprises a continuous and fixed number of elements,

wherein the fixed number is a one or a power-of-two,

wherein a superslice is a slice comprised of a plurality of slices, and

wherein the writer process owns the pointers in the shared memory region.

10. The method of claim 9 , further comprising:

adding, by the writer process, a new element to a respective slice of a first superslice; and

incrementing, by the writer process, an event number for the first superslice.

11. The method of claim 9 , further comprising:

attaching, by a reader process, to a first superslice, wherein the first superslice corresponds to a first Judy array;

responsive to determining that an event number for the first superslice matches a number of slices in the first superslice:

attaching, by the reader process, to each slice in the first superslice; and

creating, by the reader process, a shadow copy of the first Judy array by inserting into keys of the first Judy array pointers to the just-attached slices.

12. The method of claim 11 , further comprising:

searching, by the reader process, the shadow copy of the first Judy array for a given key; and

responsive to not finding the given key:

attaching, by the reader process, to a new slice in the first superslice by inserting a pointer in the first Judy array at the given key for the new slice.

13. The method of claim 9 , wherein the function is one of more of:

a weight function that returns, as the first result, one or more of:

a number of elements in the first value which match the pattern; and

a sum of values in a key range corresponding to the first value; and

an iterator function that returns, as the first result, one or more of:

an index of a first bit or a next bit of the first value which is set to one; and

an index of a first bit or a next bit of the first value which is set to zero.

14. A computer system which is part of a distributed system, wherein the computer system comprises:

a processor; and

a memory coupled to the processor and storing instructions which, when executed by the processor, cause the processor to perform a method, the method comprising:

generating a first data structure which comprises key-value pairs,

wherein, in a respective key-value pair, the respective key is an integer and the respective value comprises a pointer to a sparse array which includes a bitmap;

storing the first data structure as a first partition of a global map;

searching, based on a pattern, the first data structure to obtain a first value;

responsive to determining that the first value comprises a two-bit bitmap:

converting, based on the pattern, the first value to a two-dimensional bitmap; and

performing a function on the first value to obtain a first result; and

using the first value or the first result as metadata to execute a read or write operation in a filesystem associated with the distributed system.

15. The computer system of claim 14 ,

wherein the distributed system comprises computing nodes,

wherein a first computing node accesses the first data structure in a memory of the first computing node by accessing only the stored first partition of the global map, and

wherein a second computing node accesses the first data structure in a shared memory region of the second computing node by accessing the global map.

16. The computer system of claim 14 ,

wherein the distributed system comprises computing nodes which include compute nodes and I/O nodes,

wherein the distributed system further comprises fabric attached memory (FAM),

wherein the filesystem is a fabric attached memory filesystem (FAMfs), and

wherein the global map stores data or metadata used by the compute nodes and the I/O nodes to operate the filesystem associated with the distributed system.

17. The computer system of claim 16 , wherein the method further comprises:

storing, in a non-volatile memory associated with a first I/O node of the distributed system, the first data structure as the first partition of the global map; and

maintaining, by a first compute node of the distributed system, the global map by:

accessing, in the non-volatile memory associated with the first I/O node, the first data structure stored as the first partition; and

accessing, in non-volatile memory associated with other I/O nodes of the distributed system, other data structures stored as other partitions of the global map,

wherein the global map can be accessed concurrently by one writer process and one or more reader processes, and

wherein the writer process and the one or more reader processes may start arbitrarily.

18. The computer system of claim 14 ,

wherein the ordered two-bit bitmap comprises four tetral digits which correspond to one of four states,

wherein a set corresponding to the pattern comprises one or more of the four states,

wherein the two-dimensional bitmap is a two-dimensional Morton-encoded Boolean (MEB) bitmap,

wherein the first value comprises a first word, and

wherein converting, based on the pattern, the first value which comprises the two-bit bitmap (TBB) to the two-dimensional MEB bitmap comprises:

responsive to determining that a size of the pattern set is 1:

performing an exclusive OR operation on the first word and an inverse of a mask based on the given pattern to obtain a first temporary value;

performing an AND operation on the first temporary value and a CPU word filled with ‘10’ bits to obtain a second temporary value;

shifting the second temporary value right by one bit to obtain a third temporary value; and

performing an AND operation on the first temporary value and the third temporary value to obtain a first MEB;

responsive to determining that the size of the pattern set is 3:

performing an exclusive OR operation on the first word and an inverse of a mask based on an inverse of the given pattern to obtain a fourth temporary value;

performing an AND operation on the fourth temporary value and the CPU word filled with ‘10’ bits to obtain a fifth temporary value;

shifting the fifth temporary value right by one bit to obtain a sixth temporary value;

performing an AND operation on the fourth temporary value and the sixth temporary value to obtain a seventh temporary value; and

performing an exclusive OR operation on the seventh temporary value and the CPU word filled with ‘01’ bits to obtain a second MEB;

responsive to determining that the size of the pattern set is 2:

performing, based on which two tetral digits are included in the pattern set, one or more of:

inverting the first word; and

shifting the inverted first word right by one bit to obtain an eighth temporary value; and

performing an AND operation on the first value, the inverted first word, or the eighth temporary value and the CPU word filled with ‘01’ bits to obtain a third MEB.

19. The computer system of claim 14 , wherein the method further comprises:

creating, by a writer process, a shared memory region in the global map which includes superslices and slices as a Judy array,

wherein a respective slice comprises key-value pairs in the global map,

wherein the values comprise pointers to sparse arrays, wherein a respective sparse array comprises a continuous and fixed number of elements,

wherein the fixed number is a one or a power-of-two,

wherein a superslice is a slice comprised of a plurality of slices, and

wherein the writer process owns the pointers in the shared memory region;

adding, by the writer process, a new element to a respective slice of a first superslice;

incrementing, by the writer process, an event number for the first superslice;

attaching, by a reader process, to a first superslice, wherein the first superslice corresponds to a first Judy array;

responsive to determining that an event number for the first superslice matches a number of slices in the first superslice:

attaching, by the reader process, to each slice in the first superslice; and

creating, by the reader process, a shadow copy of the first Judy array by inserting into keys of the first Judy array pointers to the just-attached slices;

searching, by the reader process, the shadow copy of the first Judy array for a given key; and

responsive to not finding the given key:

attaching, by the reader process, to a new slice in the first superslice by inserting a pointer in the first Judy array at the given key for the new slice.

20. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method, the method comprising:

generating a first data structure which comprises key-value pairs,

wherein, in respective key-value pair, the respective key is an integer and the respective value comprises a pointer to a sparse array which includes a bitmap;

storing the first data structure as a first partition of a global map;

searching, based on a pattern, the first data structure to obtain a first value;

responsive to determining that the first value comprises a two-bit bitmap:

converting, based on the pattern, the first value to a two-dimensional bitmap; and

performing a function on the first value to obtain a first result; and

using the first value or the first result as metadata to execute a read or write operation in a filesystem associated with the distributed system.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 25, 2021
From: IVANOV, DMITRY L.; LIVIS, YANN; NEVEROVITCH, OLEG
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 056671/0090 →
Continuity (1)
Related Publication 20220405006A1 · Dec 22, 2022
Cited By (1)
US 12,675,393