Lock-free scalable free list

US9892031B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9892031-B2
Application numberUS-201113290912-A
CountryUS
Kind codeB2
Filing dateNov 7, 2011
Priority dateNov 7, 2011
Publication dateFeb 13, 2018
Grant dateFeb 13, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A plurality of free list data structures are maintained in a multi-processor computing system that each correspond to one processor of the multi-processor computing system and that each comprise an ordered queue of processor-specific items. Thereafter, a number of processor-specific items allocated to each free list data structure is calculated. Processor-specific items allocated to a first of the free list data structures are moved to a second of the free list data structures when the number of calculated processor-specific items in the first free data structure exceeds a first threshold. In addition, processor-specific items allocated to the second of the free list data structures are moved to the first of the free list data structures when the number of calculated processor-specific items in the first free data structure is below a second threshold. Related apparatus, systems, techniques and articles are also described.

First claim

Opening claim text (preview).

What is claimed is: 1. A non-transitory computer program product storing instructions that, when executed by at least one programmable processor, cause the at least one programmable processor to perform operations comprising: maintaining, in a multi-processor computing system, a plurality of free list data structures implemented in a dynamic memory, each free list data structure being striped by, and corresponding to, a different processor of the multi-processor computing system, each free list data structure comprising an ordered queue of processor-specific items assigned to a corresponding processor of the multi-processor computing system, wherein each processor has a primary free list data structure and a secondary free list data structure; calculating a number of processor-specific items allocated to each free list data structure; moving processor-specific items allocated to a first of the free list data structures to a second of the free list data structures, when the number of calculated processor-specific items in the first free data structure exceeds a first threshold; and moving processor-specific items allocated to the second of the free list data structures to the first of the free list data structures, when the number of calculated processor-specific items in the first free data structure is below a second threshold; the first and second thresholds being determined based on a number of items in each free list data structure; maintaining a global free list data structure; wherein upon determination that a first item is present in the first primary free list data structure, then the first item is allocated; upon determination that the first item is not present in the first primary free list data structure and the first secondary free list data structure includes at least two processor-specific items, at least a portion of the processor-specific items in a corresponding first secondary free list data structure are moved to the first primary free list data structure, wherein at least one item from the global list data structure queue of items is moved to the first primary free list data structure when the first secondary free list data structure includes a number of processor-specific items below the first threshold, wherein at least one item in the global list data structure is selectively allocated to all of the primary free list data structures to effect load-balancing; and upon determination, for a second of the free list data structure pairs, that a corresponding second primary free list data structure includes a number of processor-specific items exceeding the second threshold, at least one of the processor-specific items in the second primary free list data structure having the number of processor-specific items exceeding the first threshold is moved to a corresponding second secondary free list data structure, wherein a new item is pushed into the second primary free list data structure, wherein at least a portion of processor-specific items in the second secondary free list data structure is moved to the global free list data structure. 2. A computer program product as in claim 1 , wherein the operations further comprise: moving to the global free list processor-specific items allocated to the first of the free list data structures, when the number of calculated processor-specific items in the first free data structure exceeds half of the first threshold; and moving to the global free list processor-specific items allocated to the second of the free list data structures, when the number of calculated processor-specific items in the second free data structure exceeds half of the second threshold. 3. A computer program product as in claim 1 , wherein the items in the free list data structures represent free blocks in memory allocation algorithms. 4. A computer program product as in claim 1 , wherein the items in the free list data structures comprise arbitrary objects. 5. A computer program product as in claim 1 , wherein each free list data structure comprises a last-in-first-out (LIFO) queue. 6. A non-transitory computer program product storing instructions that, when executed by at least one programmable processor, cause the at least one programmable processor to perform operations comprising: maintaining, in a multi-processor computing system, a plurality of free list data structures implemented in a dynamic memory, each free list data structure corresponding to a different processor of the multi-processor computing system, each free list data structure comprising an ordered queue of processor-specific items assigned to a corresponding processor of the multi-processor computing system, wherein each processor has a primary free list data structure and a secondary free list data structure; calculating a number of processor-specific items allocated to each free list data structure; moving processor-specific items allocated to the free list data structures to a global free list queue when a number of processor-specific items within a corresponding free list data structure exceeds a first threshold; and re-assigning items in the global free list queue to free list data structures having a number of processor-specific items below a second threshold; the first and second thresholds being determined based on a number of items in each free list data structure; wherein upon determination that a first item is present in the first primary free list data structure, then the first item is allocated; upon determination that the first item is not present in the first primary free list data structure and the first secondary free list data structure includes at least two processor-specific items, at least a portion of the processor-specific items in a corresponding first secondary free list data structure are moved to the first primary free list data structure, wherein at least one item from a global list data structure queue of items is moved to the first primary free list data structure when the first secondary free list data structure includes a number of processor-specific items below the first threshold, wherein at least one item in the global list data structure is selectively allocated to all of the primary free list data structures to effect load-balancing; and upon determination, for a second of the free list data structure pairs, that a corresponding second primary free list data structure includes a number of processor-specific items exceeding the second threshold, at least one of the processor-specific items in the second primary free list data structure having the number of processor-specific items exceeding the first threshold is moved to a corresponding second secondary free list data structure, wherein a new item is pushed into the second primary free list data structure, wherein at least a portion of processor-specific items in the second secondary free list data structure is moved to the global free list data structure. 7. A computer program product as in claim 6 , wherein the items in the free list data structures represent (i) free blocks in memory allocation algorithms, (ii) free internal state objects of job worker queues, and/or (iii) free I/O control blocks of an I/O subsystems. 8. A computer program product as in claim 6 , wherein the items in the free list data structures comprise arbitrary objects. 9. A computer program product as in claim 6 , wherein each free list data structure comprises a last-in-first-out (LIFO) queue. 10. A non-transitory computer program product storing instructions that, when executed by at least one programmable processor, cause the at least one programmable processor to perform operations comprising: maintaining, in a multi-processor computing system

Assignees

Inventors

Classifications

  • G06F12/023Primary

    Free address space management · CPC title

  • Techniques for rebalancing the load in a distributed system · CPC title

  • Multiple user address space allocation, e.g. using different base addresses (interprocessor communication G06F15/163) · CPC title

  • the resource being the memory · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9892031B2 cover?
A plurality of free list data structures are maintained in a multi-processor computing system that each correspond to one processor of the multi-processor computing system and that each comprise an ordered queue of processor-specific items. Thereafter, a number of processor-specific items allocated to each free list data structure is calculated. Processor-specific items allocated to a first of …
Who is the assignee on this patent?
Schreter Ivan, Booss Daniel, Sap Se
What technology area does this patent fall under?
Primary CPC classification G06F12/023. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Feb 13 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).