IP Library Granted Patent US 10,372,605
Granted Patent B2
US 10,372,605 · App. 15/637,080 · Granted Aug 6, 2019

Generational garbage collector for trees under multi-version concurrency control

Inventors: Mikhail Danilov (Saint Petersburg, RU); Konstantin Buinov (Leningradskaya, RU); Mikhail Malygin (Saint Petersburg, RU); Kirill Gusakov (Saint Petersburg, RU); Vladimir Prikhodko (Saint Petersburg, RU)
Assignee: EMC IP Holding Company LLC
G06F12/0276G06F3/06G06F16/2246G06F2212/1041
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 10,372,605
App. No.
15/637,080
Granted
Aug 6, 2019
Kind
B2
Abstract

Method of implementing generational garbage collection for trees under MVCC starts by detecting live objects in trees. Trees include normal trees and frozen trees. Poorly-filled young chunks and poorly-filled old chunks of hard-drive memory are identified. Hard-drive memory includes young chunks storing young elements, old chunks storing old elements, and immortal chunks storing immortal elements. One or more old chunks are opened for writes and elements from poorly-filled young chunks and old chunks are copied to one or more opened old chunks. Elements above elements from poorly-filled young chunks and old chunks in the normal trees are updated and stored in the young chunks. One or more immortal chunks are opened for writes and tree leaves of frozen trees from young chunks and from old chunks are copied to one or more opened immortal chunks. All nodes of frozen trees are updated and stored in immortal chunks.

Claims (64)

1. A system for implementing generational garbage collection for a plurality of trees under multi-version concurrency control, comprising:

a hard-drive memory including a plurality chunks that are fixed-sized blocks of the hard-drive memory,

wherein the chunks include young chunks that store young elements, old chunks that store old elements, and immortal chunks that store immortal elements;

a processor coupled to the hard-drive memory;

a generational garbage collector coupled to the processor, the generational garbage collector including a normal tree scanner and a frozen tree scanner,

wherein the plurality of trees include a plurality of normal trees and a plurality of frozen trees,

the normal tree scanner

to detect live objects in the plurality of normal trees, wherein objects include tree nodes and tree leaves and are alive when the objects are reachable from a tree root of at least one tree, wherein tree elements include objects and tree roots,

to identify poorly-filled young chunks of the hard-drive memory and poorly-filled old chunks of the hard-drive memory,

to open for writes one or more old chunks,

to copy elements from the poorly-filled young chunks and the poorly-filled old chunks to the one or more opened old chunks,

to update elements above the elements from the poorly-filled young chunks and the poorly-filled old chunks in the normal trees and to store the updated elements in the young chunks, and

the frozen tree scanner

to open for writes one or more immortal chunks,

to copy the tree leaves of the frozen trees from the young chunks and from the old chunks to the one or more opened immortal chunks, and

to update and to store all nodes of the frozen trees in the immortal chunks.

2. The system of claim 1 , wherein the live objects are detected via tracing, wherein for each tree, starting at the tree root, depth-first traversal is used to detect objects currently reachable.

3. The system of claim 1 , wherein the normal tree scanner identifying poorly-filled young chunks and poorly-filled old chunks includes:

determining a capacity efficiency of the young chunks and a capacity efficiency of the old chunks, and

marking each of the young chunks having the capacity efficiency lower than a young chunk capacity efficiency utilization threshold as one of the poorly-filled young chunks, and marking each of the old chunks having the capacity efficiency lower than an old chunk capacity efficiency utilization threshold as one of the poorly-filled old chunks.

4. The system of claim 3 , wherein the old chunk capacity efficiency utilization threshold is higher than the young chunk capacity efficiency utilization threshold.

5. The system of claim 4 , wherein the old chunk capacity efficiency utilization threshold is 50% of a chunk size and young chunk capacity efficiency utilization threshold is 25% of the chunk size.

6. The system of claim 1 , wherein the frozen trees are only scanned once.

7. The system of claim 1 , wherein the young elements are elements that have a shorter lifetime than the immortal elements.

8. The system of claim 1 , wherein the old elements are elements that have existed longer than the young elements.

9. The system of claim 1 , wherein the frozen trees are trees that are never to be modified, wherein the lifetime of the frozen tree is unlimited.

10. The system of claim 1 , wherein during normal execution, only the young chunks are open for writes, wherein all new tree leaves and tree nodes are young elements stored to young chunks.

11. A method of implementing generational garbage collection for a plurality of trees under multi-version concurrency control, comprising:

detecting live objects in a plurality of normal trees,

wherein the plurality of trees include the plurality of normal trees and a plurality of frozen trees,

wherein objects include tree nodes and tree leaves and are alive when the objects are reachable from a tree root of at least one tree, wherein tree elements include objects and tree roots;

identifying poorly-filled young chunks of hard-drive memory and poorly-filled old chunks of the hard-drive memory,

wherein the hard-drive memory includes a plurality chunks that are fixed-sized blocks of the hard-drive memory,

wherein the chunks include young chunks that store young elements, old chunks that store old elements, and immortal chunks that store immortal elements;

opening for writes one or more old chunks;

copying elements from the poorly-filled young chunks and the poorly-filled old chunks to the one or more opened old chunks;

updating elements above the elements from the poorly-filled young chunks and the poorly-filled old chunks in the normal trees and storing the updated elements in the young chunks;

opening for writes one or more immortal chunks;

copying the tree leaves of the frozen trees from the young chunks and from the old chunks to the one or more opened immortal chunks; and

updating and storing all nodes of the frozen trees in the immortal chunks.

12. The method of claim 11 , wherein the live objects are detected via tracing, wherein for each tree, starting at the tree root, depth-first traversal is used to detect objects currently reachable.

13. The method of claim 11 , wherein identifying poorly-filled young chunks and poorly-filled old chunks includes:

determining a capacity efficiency of the young chunks and a capacity efficiency of the old chunks, and

marking each of the young chunks having the capacity efficiency lower than a young chunk capacity efficiency utilization threshold as one of the poorly-filled young chunks, and marking each of the old chunks having the capacity efficiency lower than an old chunk capacity efficiency utilization threshold as one of the poorly-filled old chunks.

14. The method of claim 13 , wherein the old chunk capacity efficiency utilization threshold is higher than the young chunk capacity efficiency utilization threshold.

15. The method of claim 14 , wherein the old chunk capacity efficiency utilization threshold is 50% of a chunk size and young chunk capacity efficiency utilization threshold is 25% of the chunk size.

16. The method of claim 11 , wherein the frozen trees are only scanned once.

17. The method of claim 11 , wherein the young elements are elements that have a shorter lifetime than the immortal elements.

18. The method of claim 11 , wherein the old elements are elements that have existed longer than the young elements.

19. The method of claim 11 , wherein the frozen trees are trees that are never to be modified, wherein the lifetime of the frozen tree is unlimited.

20. The method of claim 11 , wherein during normal execution, only the young chunks are open for writes, wherein all new tree leaves and tree nodes are young elements stored to young chunks.

21. A computer-readable medium having stored thereon instructions, when executed by a processor, causes the processor to perform a method of implementing generational garbage collection for a plurality of trees under multi-version concurrency control, comprising:

detecting live objects in a plurality of normal trees,

wherein the plurality of trees include the plurality of normal trees and a plurality of frozen trees,

wherein objects include tree nodes and tree leaves and are alive when the objects are reachable from a tree root of at least one tree, wherein tree elements include objects and tree roots;

identifying poorly-filled young chunks of hard-drive memory and poorly-filled old chunks of the hard-drive memory,

wherein the hard-drive memory includes a plurality chunks that are fixed-sized blocks of the hard-drive memory,

wherein the chunks include young chunks that store young elements, old chunks that store old elements, and immortal chunks that store immortal elements;

opening for writes one or more old chunks;

copying elements from the poorly-filled young chunks and the poorly-filled old chunks to the one or more opened old chunks;

updating elements above the elements from the poorly-filled young chunks and the poorly-filled old chunks in the normal trees and storing the updated elements in the young chunks;

opening for writes one or more immortal chunks;

copying the tree leaves of the frozen trees from the young chunks and from the old chunks to the one or more opened immortal chunks; and

updating and storing all nodes of the frozen trees in the immortal chunks.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (047648/0422) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060160/0862 →
RELEASE OF SECURITY INTEREST AT REEL 047648 FRAME 0346 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0510 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Oct 12, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047648/0346 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 12, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 047648/0422 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 29, 2017
From: DANILOV, MIKHAIL; BUINOV, KONSTANTIN; MALYGIN, MIKHAIL; GUSAKOV, KIRILL; PRIKHODKO, VLADIMIR
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 042864/0176 →
Priority Claims (1)
RU 2016151317 · Dec 27, 2016 · national
Continuity (1)
Related Publication 20180181487A1 · Jun 28, 2018