IP Library Granted Patent US 10,997,144
Granted Patent B2
US 10,997,144 · App. 16/029,463 · Granted May 4, 2021

Reducing write amplification in buffer trees

Inventors: Robert T Johnson (Palo Alto, CA); Ittai Abraham (Tel Aviv, IL); Abhishek Gupta (Sunnyvale, CA); Richard P Spillane (Mountain View, CA); Sandeep Rangaswamy (Mountain View, CA); Jorge Guerra Delgado (Fremont, CA); Srinath Premachandran (Fremont, CA); Kapil Chowksey (Cupertino, CA)
Assignee: VMware, Inc.
G06F16/2282G06F16/2246G06F16/2379
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,997,144
App. No.
16/029,463
Granted
May 4, 2021
Kind
B2
Abstract

A buffer tree structure includes, at each internal node, a buffer having a compacted portion and an uncompacted portion. Insertion of data elements to the buffer tree can occur units called packets. A packet is initially stored in the uncompacted portion of a receiving node's buffer. After a time, packets in the uncompacted portion of a buffer are combined into compacted packets in the compacted portion of the buffer. A buffer-emptying (flush) operation pushes the compacted packets to children nodes.

Claims (40)

1. A method comprising:

providing a buffer tree in a memory of a computer, the buffer tree comprising a plurality of nodes including a root node and a plurality of child nodes descending from the root node, wherein each of the plurality of nodes comprising a respective buffer, wherein the respective buffer comprising a respective compacted portion and a respective uncompacted portion, wherein the respective uncompacted portion having stored therein one or more respective pointers, wherein each pointer of the one or more respective pointers is pointing to a respective data;

receiving, by the computer, a pointer that points to a data;

adding, by the computer, the received pointer to the one more respective pointers in the uncompacted portion of the buffer of the root node to produce a plurality of pointers; and

when an amount of data pointed to by the plurality of pointers in the uncompacted portion of the buffer of the root node exceeds a predetermined limit, the computer:

accessing the data pointed to by the plurality of pointers in the uncompacted portion of the buffer of the root node;

combining the accessed data; and

storing the combined data among one or more compacted packets in the compacted portion of the buffer in the root node, including writing the one or more compacted packets to a data storage device separate from the memory of the computer.

2. The method of claim 1 , further comprising flushing at least one of the one or more compacted packets to a child node of the root node by storing a pointer to at least one of the one or more compacted packets in the root node into an uncompacted portion of a buffer of the child node.

3. The method of claim 2 , wherein storing a pointer to the compacted packet in an uncompacted portion of a buffer of the child node does not include writing data comprising the compacted packet to the data storage device.

4. The method of claim 1 , wherein the combining comprises:

producing a sorted list of the data pointed to by the plurality of pointers that is sorted according to keys associated with the data; and

dividing the sorted list into the one or more compacted packets according to key ranges associated with children of the root node.

5. The method of claim 1 , wherein the data pointed to by the received pointer comprises a plurality of data elements, wherein each data element comprises a value and an associated key that is used to index the value, wherein a key in a first data element in a first uncompacted packet and is also with a key in a second data element in a second uncompacted packet, wherein keys associated with data elements in a compacted packet are unique to that compacted packet.

6. The method of claim 1 , wherein the predetermined limit is a total size of the buffer of the root node.

7. A non-transitory computer-readable storage medium having stored thereon computer executable instructions, which when executed by a computer device, cause the computer device to:

provide a buffer tree in a memory of the computer device, the buffer tree comprising a plurality of nodes including a root node and a plurality of child nodes descending from the root node, wherein each of the plurality of nodes comprising a respective buffer, wherein the respective buffer comprising a respective compacted portion and a respective uncompacted portion, wherein the respective uncompacted portion having stored therein one or more respective pointers, wherein each pointer of the one or more respective pointers is pointing to a respective data;

receive a pointer that points to a data;

add the received pointer to the one or more respective pointers in the uncompacted portion of the buffer of the root node to produce a plurality of pointers; and

when an amount of data represented by the plurality of pointers in the uncompacted portion of the buffer of the root node exceeds a predetermined limit, then:

accessing the data pointed to by the plurality of pointers in the uncompacted portion of the buffer of the root node;

combining the accessed data; and

storing the combined data among one or more compacted packets in the compacted portion of the buffer in the root node, including writing the one or more compacted packets to a data storage device separate from the memory of the computer device.

8. The non-transitory computer-readable storage medium of claim 7 , wherein the computer executable instructions, which when executed by the computer device, further cause the computer device to flush at least one of the one or more compacted packets to a child node of the root node by storing a pointer to at least one of the one or more compacted packets in the root node into an uncompacted portion of a buffer of the child node.

9. The non-transitory computer-readable storage medium of claim 8 , wherein the computer device stores a pointer to the compacted packet in an uncompacted portion of a buffer of the child node without writing the data elements comprising the compacted packet to the data storage device.

10. The non-transitory computer-readable storage medium of claim 7 , wherein the computer executable instructions, which when executed by the computer device, further cause the computer device to:

produce a sorted list of the data pointed to by the plurality of pointers that is sorted according to keys associated with the data; and

divide the sorted list into the one or more compacted packets according to key ranges associated with children of the root node.

11. An apparatus comprising:

one or more computer processors; and

a computer-readable storage medium comprising instructions for controlling the one or more computer processors to be operable to:

provide a buffer tree in a memory of the apparatus, the buffer tree comprising a plurality of nodes including a root node and a plurality of child nodes descending from the root node, wherein each of the plurality of nodes comprising a respective buffer, wherein the respective buffer comprising a respective compacted portion and a respective uncompacted portion, wherein the respective uncompacted portion having stored therein one or more respective pointers, wherein each pointer of the one or more respective pointers is pointing to a respective data;

receive a pointer that points to a data;

add the received pointer to the one or more respective pointers in the uncompacted portion of the buffer of the root node to produce a plurality of pointers; and

when an amount of data pointed to by the plurality of pointers in the uncompacted portion of the buffer of the root node exceeds a predetermined limit, then:

accessing the data pointed to by the plurality of pointers in the uncompacted portion of the buffer of the root node;

combining the accessed data; and

storing the combined data among one or more compacted packets in the compacted portion of the buffer in the root node, including writing the one or more compacted packets to a data storage device separate from the memory of the apparatus.

12. The apparatus of claim 11 , wherein the computer-readable storage medium further comprises instructions for controlling the one or more computer processors to be operable to flush at least one of the one or more compacted packets to a child node of the root node by storing a pointer to at least one of the one or more compacted packets in the root node into an uncompacted portion of a buffer of the child node.

13. The apparatus of claim 12 , wherein the one or more computer processors store a pointer to the at least one of the one or more compacted packet in an uncompacted portion of a buffer of the child node without writing the data comprising the compacted packet to the data storage device.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 19, 2018
From: JOHNSON, ROBERT; ABRAHAM, ITTAI; GUPTA, ABHISHEK; SPILLANE, RICHARD; RANGASWAMY, SANDEEP; GUERRA DELGADO, JORGE; PREMACHANDRAN, SRINATH; CHOWKSEY, KAPIL
To: VMWARE, INC.
Reel/Frame 046911/0431 →