IP Library › Granted Patent US 12,675,393
Granted Patent B2
US 12,675,393 · App. 18/760,105 · Granted Jul 7, 2026

Efficient burst sort based on network-attached memory

Inventors: Ryan D. Menhusen (Fort Collins, CO); Clarete Riana Crasta (Bangalore, IN); Syed Ismail Faizan Barmawer (Bangalore, IN); Darel Neal Emmot (Wellington, CO); David R. Emberson (Santa Cruz, CA); Sharad Singhal (Belmont, CA); Sajeesh Kumar K V (Bangalore, IN); Ramesh Chandra Chaurasiya (Bangalore, IN); Adya Sharma (Bangalore, IN)
Assignee: Hewlett Packard Enterprise Development LP
G06F12/0223
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 12,675,393
App. No.
18/760,105
Filed
Jul 1, 2024
Granted
Jul 7, 2026
Kind
B2
Art Unit
2153
USPC
707/741
Abstract

A system, by a processing entity (PE), determines records stored in a memory shared by other processing entities. A respective record comprises a key and a corresponding index indicating a physical location in the shared memory. The PE stores, in a DRAM partition, burst tree data obtained by performing a burst sort on a portion of the records. The PE moves data stored in the DRAM partition to a partition of the shared memory in response to a size of the stored data exceeding a predetermined threshold. The PE obtains sorted keys and corresponding indices for the records by sorting the burst tree data stored in shared memory partitions. The PE facilitates a sorted retrieval of the records in the shared memory while leaving the records in the respective physical location in the shared memory by writing the sorted keys and indices to the shared memory.

Claims (105)

1 . A method, comprising:

determining, by a processing entity, records and corresponding data items stored in a memory shared by other processing entities, a respective record comprising a key and a payload, and a respective corresponding data item comprising the key and a corresponding index indicating a physical location in the shared memory at which the respective record is stored;

obtaining, by the processing entity, a portion of the data items, the portion of a size based on an available processing capacity of the processing entity;

obtaining burst tree data by performing a burst sort on the obtained portion of the data items;

storing the burst tree data in a partition of a dynamic random access memory (DRAM);

moving data stored in the DRAM partition to a partition of the shared memory in response to a size of the stored data exceeding a predetermined threshold;

maintaining the shared memory partition and one or more shared memory partitions in an unsorted order;

obtaining sorted data items corresponding to the records by sorting the burst tree data stored in the one or more shared memory partitions;

writing the sorted data items to the shared memory; and

facilitating a sorted retrieval of the records in the shared memory while leaving the records in the respective physical location in the shared memory by accessing the sorted data items in the shared memory.

2 . The method of claim 1 :

the processing entities associated with computing nodes coupled to a network of switches; and

the shared memory comprising a memory resource attached to the network of switches.

3 . The method of claim 1 , further comprising:

performing, by the processing entities, load-balancing for sorting the records stored in the shared memory by:

obtaining, by a respective processing entity, the portion of the data items, wherein a size of the portion obtained by the respective processing entity is based on an available processing capability of the respective processing entity;

performing, by the respective processing entity, the burst sort on the obtained portion;

storing, by the respective processing entity, the burst tree data in a respective DRAM partition;

moving, by the respective processing entity, the data from the respective DRAM partition to a respective shared memory partition independently of other processing entities; and

eliminating communication and coordination between the processing entities while sorting the records stored in the shared memory.

4 . The method of claim 1 , further comprising:

in response to updating the records stored in the shared memory:

determining updated data items corresponding to the updated records;

performing the burst sort only on the updated data items until the burst tree data associated with the updated data items has been stored in a respective DRAM partition and moved to a respective shared memory partition;

refraining from performing the burst sort on data items corresponding to records previously stored in the shared memory; and

obtaining the sorted data items by sorting the burst tree data stored in the one or more shared memory partitions.

5 . The method of claim 1 , further comprising:

maintaining the burst tree data stored in the DRAM partition as a prefix tree in a sorted order; and

maintaining the shared memory partitions in an unsorted order prior to the processing entity sorting the burst tree data stored in the shared memory partitions, the shared memory partitions comprising partitions associated with a range of prefixes.

6 . The method of claim 1 , further comprising:

identifying the one or more shared memory partitions by:

generating tasks for a respective shared memory partition, wherein the respective shared memory partition is associated with keys sharing common prefixes, and wherein a respective task corresponds to sorting burst tree data stored in the respective shared memory partition;

inserting the generated tasks into a work queue; and

sorting, by the processing entity and the other processing entities, the respective shared memory partition in response to acquiring the respective task from the work queue.

7 . The method of claim 6 , further comprising:

determining whether a number of keys in a first generated task exceeds a predetermined number;

creating a new task for keys not included for processing in the first generated task in response to the number of keys in the first generated task exceeding the predetermined number; and

inserting the new task into the work queue.

8 . The method of claim 1 , wherein sorting the burst tree data stored in the one or more shared memory partitions is based on at least one of:

a comparison sort;

a quick sort; or

a count sort.

9 . The method of claim 1 , further comprising:

receiving a request for one or more of the records stored in the shared memory, wherein the request includes a plurality of the sorted indices; and

returning the requested one or more records in a sorted order from the shared memory based on indices of the sorted data items previously written to the shared memory.

10 . A computer system, comprising:

a processor; and

a storage device storing instructions to:

determine, by a processing entity, records and corresponding data items stored in a memory shared by other processing entities, wherein a respective record comprises a key and a payload, and wherein a respective corresponding data item comprises the key and a corresponding index indicating a physical location in the shared memory at which the respective record is stored;

obtain, by the processing entity, a portion of the data items, the portion of a size based on an available processing capacity of the processing entity;

obtain burst tree data by performing a burst sort on the obtained portion of the data items;

store the burst tree data in a partition of a dynamic random access memory (DRAM):

responsive to a size of the stored data exceeding a predetermined threshold, move data stored in the DRAM partition to a partition of the shared memory;

identify one or more shared memory partitions based on a work queue;

maintain the shared memory partition and the one or more shared memory partitions in an unsorted order;

obtain sorted keys and corresponding indices of the data items for the records by sorting the burst tree data stored in the one or more shared memory partitions; and

facilitate a sorted retrieval of the records in the shared memory while leaving the records in the respective physical location in the shared memory by writing the sorted keys and indices of the data items to the shared memory.

11 . The computer system of claim 10 ,

wherein the processing entities are associated with computing nodes coupled to a network of switches, and

wherein the shared memory comprises a memory resource attached to the network of switches.

12 . The computer system of claim 10 , the instructions further to:

perform, by the processing entities, load-balancing for sorting the records stored in the shared memory by:

obtaining, by a respective processing entity, the portion of the records stored in the shared memory, wherein a size of the portion obtained by the respective processing entity is based on an available processing capability of the respective processing entity;

performing, by the respective processing entity, the burst sort on the obtained portion;

storing, by the respective processing entity, the burst tree data in a respective DRAM partition;

moving, by the respective processing entity, the data from the respective DRAM partition to a respective shared memory partition independently of other processing entities; and

eliminating communication and coordination between the processing entities while sorting the records stored in the shared memory.

13 . The computer system of claim 10 , the instructions further to:

in response to updating the records stored in the shared memory:

perform the burst sort only on the updated records until the burst tree data associated with the updated records has been stored in a respective DRAM partition and moved to a respective shared memory partition;

refrain from performing the burst sort on the records previously stored in the shared memory; and

obtain the sorted indices for the updated records by sorting the burst tree data stored in the one or more shared memory partitions.

14 . The computer system of claim 10 , the instructions further to:

maintain the burst tree data stored in the DRAM partition as a prefix tree in a sorted order; and

maintain the shared memory partitions in an unsorted order prior to the processing entity sorting the burst tree data stored in the shared memory partitions, the shared memory partitions comprising partitions associated with a range of prefixes.

15 . The computer system of claim 10 , the instructions to identify the one or more shared memory partitions further to:

generate tasks for a respective shared memory partition, wherein the respective shared memory partition is associated with keys sharing common prefixes, and wherein a respective task corresponds to sorting burst tree data stored in the respective shared memory partition;

insert the generated tasks into a work queue; and

sort, by the processing entity and the other processing entities, the respective shared memory partition in response to acquiring the respective task from the work queue.

16 . The computer system of claim 10 , the instructions further to sort the burst tree data stored in the one or more shared memory partitions based on at least one of:

a comparison sort;

a quick sort; or

a count sort.

17 . The computer system of claim 10 , the instructions further to:

receiving a request for data stored in the shared memory, wherein the request includes a plurality of the sorted indices; and

returning data in a sorted order from the shared memory based on the sorted indices previously written to the shared memory.

18 . A non-transitory computer-readable medium storing instructions to:

determine, by a processing entity, records and corresponding data items stored in a memory shared by other processing entities, a respective record comprising a key and a payload, and a respective corresponding data item comprising the key and a corresponding index indicating a physical location in the shared memory at which the respective record is stored;

obtain, by the processing entity, a portion of the data items, the portion of a size based on an available processing capacity of the processing entity;

perform a burst sort on the obtained portion of the data items;

store, in a partition of a dynamic random access memory (DRAM), burst tree data obtained from the burst sort;

move data stored in the DRAM partition to a partition of the shared memory in response to a size of the stored data exceeding a predetermined threshold;

maintain the shared memory partition and one or more shared memory partitions in an unsorted order;

sort the burst tree data stored in the one or more shared memory partitions;

obtain sorted keys and corresponding indices of the data items for the records based on the sorted burst tree data; and

write the sorted keys and corresponding indices of the data items to the shared memory, wherein writing the sorted keys and corresponding indices of the data items to the shared memory facilitates a sorted retrieval of the records in the shared memory while leaving the records in the respective physical location in the shared memory.

19 . The non-transitory computer-readable medium of claim 18 , the instructions further to perform, by the processing entities, load-balancing for sorting the records stored in the shared memory, the instructions to perform the load-balancing further to:

obtain, by a respective processing entity, the portion of the records stored in the shared memory, wherein a size of the portion obtained by the respective processing entity is based on an available processing capability of the respective processing entity;

perform, by the respective processing entity, the burst sort on the obtained portion;

store, by the respective processing entity, the burst tree data in a respective DRAM partition;

move, by the respective processing entity, the data from the respective DRAM partition to a respective shared memory partition independently of other processing entities; and

eliminate communication and coordination between the processing entities while sorting the records stored in the shared memory.

20 . The non-transitory computer-readable medium of claim 18 , the instructions further to process a request for one or more of the records stored in the shared memory by:

receiving a request for the one or more records stored in the shared memory, wherein the request includes one or more of the sorted indices; and

in response to receiving the request, returning the requested one or more records in a sorted order from the shared memory based on the sorted indices previously written to the shared memory.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 1, 2024
From: MENHUSEN, RYAN D.; CRASTA, CLARETE RIANA; BARMAWER, SYED ISMAIL FAIZAN; EMMOT, DAREL NEAL; EMBERSON, DAVID R.; SINGHAL, SHARAD; K V, SAJEESH KUMAR; CHAURASIYA, RAMESH CHANDRA; SHARMA, ADYA
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 067880/0723 →
Priority Claims (1)
IN 202411034251 · Apr 30, 2024 · national
Continuity (1)
Related Publication 20250335345A1 · Oct 30, 2025
References Cited (40)
US 9613127B1 · Rus et al. · 2017 [cited by applicant]
US 10705951B2 · Patel et al. · 2020 [cited by applicant]
US 11604603B2 · Ivanov et al. · 2023 [cited by applicant]
US 11836128B1 · Trout · 2023 [cited by applicant]
US 20130268770A1 · Hunt · 2013 [cited by examiner]
US 20140059052A1 · Yamamoto · 2014 [cited by examiner]
US 20140214767A1 · Graefe · 2014 [cited by examiner]
US 20150212889A1 · Amarendran · 2015 [cited by examiner]
US 20210133123A1 · Feehrer et al. · 2021 [cited by applicant]
“Distributed Sorting Algorithms”, available online at <https://brunomaga.github.io/Distributed-Sort>, Jun. 21, 2014, 4 pages. [cited by applicant]
“Radix sort (LSD). Growing with the Web”, available online at <https://www.growingwiththeweb.com/sorting/radix-sort-lsd/>, Dec. 28, 2016, 5 pages. [cited by applicant]
“Sort Benchmark Home Page”, available online at <https://sortbenchmark.org/>, retrieved from internet on Jul. 24, 2024, 12 pages. [cited by applicant]
Github, “OpenFAM Reference Implementation”, available online at <https://openfam.github.io/>, 2023, 2 pages. [cited by applicant]
IBM, “Range partitioning”, available online at <https://prod.ibmdocs-production-dal-6099123ce774e592a519d7c33db8265e-0000.us-south.containers.appdomain.cloud/docs/en/iis/9.1?topic=operator-range-partitioning>, 2021, 2 p… [cited by applicant]
Sinha et al., “Efficient Trie-Based Sorting of Large Sets of Strings”, 2003, 8 pages. [cited by applicant]
“2025-CUG-DELEGATE-BOOK”, available online at <https://cug.org/wp-content/uploads/2025/05/2025-CUG-DELEGATE-BOOK.pdf< 66 pages. [cited by applicant]
“Ehcache Documentation”, available online at <https://web.archive.org/web/20240730182344/https://www.ehcache.org/documentation/>, Jul. 300, 2024, 3 pages. [cited by applicant]
Arpaci-Dusseau, “The Andrew File System (AFS)”, Operating Systems [Version 1.10], 2008-23, 14 pages. [cited by applicant]
Gala et al., “Management of Multilevel, Multiclient Cache Hierarchies with Application Hints”, ACM Transactions on Computer Systems (TOCS), vol. 29, Issue 2 Article No. 5, 2011, 52 pages. [cited by applicant]
Github, “daos-stack / daos”, available online at <https://web.archive.org/web/20240217081407/http://github.com/daos-stack/daos>, Feb. 17, 2024, 3 pages/. [cited by applicant]
Github, “OpenFAM / OpenFAM”, available online at <https://github.com/OpenFAM/OpenFAM/releases/tag/v3.0.0>, Feb. 1, 2023, 2 pages. [cited by applicant]
Github, “Openfam”, available online at <https://web.archive.org/web/20240811135858/https://github.com/OpenFAM>, Aug. 11, 2024, 2 pages. [cited by applicant]
Jeffrey C. Mogul “Recovery in Spritely NFS”, The USENIX Association, computing systems, vol. 7 . No. 2 . spring 1994, 63 pages. [cited by applicant]
K. Harms, “DAOS is your Future Distributed Asynchronous Object Store,” available online at < https://www.alcf.anl.gov/sites/default/files/2023-10/DAOS-ALCF-HoW23.pdf>, Oct. 10-12, 2023, 17 pages. [cited by applicant]
M. Hennecke, “Understanding DAOS Storage Performance Scalability,” in Proceedings of the HPC Asia 2023 Workshops, RaUles Blvd Singapore: ACM, Feb. 2023, pp. 1-14. [cited by applicant]
Moritz et al., “Ray: A Distributed Framework for Emerging AI Applications”, Sep. 30, 2018, 17 pages. [cited by applicant]
Ousterhout et al., “The RAMCloud Storage System”, ACMTransactions on Computer Systems, vol. 33, No. 3, Article 7, Publication date: Aug. 2015, 55 pages. [cited by applicant]
Petros Koutoupis, “The Lustre Distributed Filesystem”, available online at <https://dl.acm.org/doi/fullHtml/10.5555/2062736.2062739>, 2011, 3pages. [cited by applicant]
Qian et al., “LPCC: hierarchical persistent client caching for lustre” DataDirect Networks, 2016, 28 pages. [cited by applicant]
Qian et al., “Lustre Metadata Writeback Cache”, 2023, 30 pages. [cited by applicant]
Redis, “Client-side caching reference”, available online at <https://web.archive.org/web/20241001000827/https://redis.io/docs/latest/develop/reference/client-side-caching/>, Oct. 1, 2024, 12 pages. [cited by applicant]
Redis, “Redis Cache_ In-Memory Caching Solutions—Redis Enterprise”, available online at <https://web.archive.org/web/20240409124118/https://redis.io/solutions/caching/>, Jul. 2024, 8 pages. [cited by applicant]
Singhal et al., “OpenFAM: Programming disaggregated memory”, Sep. May 2-5, 2022, 13 pages. [cited by applicant]
Srinivasan et al., “Spritely NFS: Experiments with Cache-Consistency Protocols”, 1989, ACM, 13 pages. [cited by applicant]
Strati et al., “Orion: Interference-aware, Fine-grained GPU Sharing for ML Applications”, ACM, 2024, 18 pages. [cited by applicant]
Tang et al., “Toward Scalable and Asynchronous Object-Centric Data Management for HPC,” 2018 18th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGRID), 10 pages. [cited by applicant]
Thomson Reuters, “Whitepaper”, available online at <https://www.thomsonreuters.com/content/dam/openweb/documents/pdf/tr-com-financial/white-paper/keybridge-sbdi-whitepaper.pdf>, May 2013, 9 pages. [cited by applicant]
WEKA “WEKA Data Platform Architecture”, Feb. 2025, 40 Pages. [cited by applicant]
WEKA, “NeuralMesh by WEKA Architecture Whitepaper—WEKA”, available online at <https://www.weka.io/resources/white-paper/wekaio-architectural-whitepaper/>, 5, 49 pages. [cited by applicant]
Zhang et al., “Optimizing Data Movement for GPU-Based In-Situ Workflow Using GPUDirect RDMA”, In Euro-Par 2023: Parallel Processing: 29th International Conference on Parallel and Distributed Computing, 2023, 15 pages. [cited by applicant]