IP Library Granted Patent US 11,061,881
Granted Patent B2
US 11,061,881 · App. 16/184,861 · Granted Jul 13, 2021

Bounding cost of flushes in buffer trees

Inventors: Robert T Johnson (Palo Alto, CA); Abhishek Gupta (Sunnyvale, CA); Jorge Guerra Delgado (Fremont, CA); Ittai Abraham (Tel Aviv, IL); Richard P Spillane (Mountain View, CA); Srinath Premachandran (Fremont, CA); Sandeep Rangaswamy (Mountain View, CA); Kapil Chowksey (Cupertino, CA)
Assignee: VMWARE, INC.
G06F16/2282G06F16/2246
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,061,881
App. No.
16/184,861
Granted
Jul 13, 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. When a compaction trigger condition exists, packet compaction is performed including a data element compaction operation. A buffer-emptying (flush) operation pushes the compacted packets to children nodes.

Claims (38)

1. A method comprising:

receiving, by a computer, a packet comprising a plurality of data elements to be stored in a node (“target node”) in a buffer tree;

storing, by the computer, the received packet in a buffer in the target node, the buffer having a compacted portion and an uncompacted portion, the received packet stored as an uncompacted packet in the uncompacted portion of the buffer; and

performing, by the computer, a compaction operation on the target node, including the computer:

combining data elements in one or more uncompacted packets in the uncompacted portion of the buffer to produce one or more compacted packets;

storing the one or more compacted packets in the compacted portion of the buffer associated with the target node;

flushing at least one of the compacted packets to at most a single child node of the target node; and

in response to flushing the at least one of the compacted packets to the single child node, performing the compaction operation on the single child node, wherein the flushing of compacted packets proceeds along a single path toward a leaf node of the buffer tree.

2. The method of claim 1 , further comprising selecting the single child node from among a plurality of children nodes of the target node based on how many data elements will be flushed to each of the children nodes.

3. The method of claim 1 , further comprising selecting the single child node from among a plurality of children nodes of the target node in round robin fashion.

4. The method of claim 1 , further comprising selecting the single child node from among a plurality of children nodes of the target node randomly.

5. The method of claim 1 , wherein flushing at least one of the compacted packets to a single child node of the target node is selectively performed only when a total number of uncompacted and compacted packets in the buffer associated with the target node exceeds a predetermined value.

6. 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:

receive a packet comprising a plurality of data elements to be stored in a node (“target node”) in a buffer tree;

store the received packet in a buffer in the target node, the buffer having a compacted portion and an uncompacted portion, the received packet stored as an uncompacted packet in the uncompacted portion of the buffer; and

perform a compaction operation on the target node, including:

combining data elements in one or more uncompacted packets in the uncompacted portion of the buffer to produce one or more compacted packets;

storing the one or more compacted packets in the compacted portion of the buffer associated with the target node;

flushing at least one of the compacted packets to at most a single child node of the target node; and

in response to flushing the at least one of the compacted packets to the single child node, performing the compaction operation on the single child node, wherein the flushing of compacted packets proceeds along a single path toward a leaf node of the buffer tree.

7. The non-transitory computer-readable storage medium of claim 6 , wherein the computer executable instructions, which when executed by the computer device, further cause the computer device to select the single child node from among a plurality of children nodes of the target node based on how many data elements will be flushed to each of the children nodes.

8. The non-transitory computer-readable storage medium of claim 6 , wherein the computer executable instructions, which when executed by the computer device, further cause the computer device to select the single child node from among a plurality of children nodes of the target node in round robin fashion.

9. The non-transitory computer-readable storage medium of claim 6 , wherein the computer executable instructions, which when executed by the computer device, further cause the computer device to select the single child node from among a plurality of children nodes of the target node randomly.

10. The non-transitory computer-readable storage medium of claim 6 , wherein flushing at least one of the compacted packets to a single child node of the target node is selectively performed only when a total number of uncompacted and compacted packets in the buffer associated with the target node exceeds a predetermined value.

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:

receive a packet comprising a plurality of data elements to be stored in a node (“target node”) in a buffer tree;

store the received packet in a buffer in the target node, the buffer having a compacted portion and an uncompacted portion, the received packet stored as an uncompacted packet in the uncompacted portion of the buffer; and

perform a compaction operation on the target node, including:

combining data elements in one or more uncompacted packets in the uncompacted portion of the buffer to produce one or more compacted packets;

storing the one or more compacted packets in the compacted portion of the buffer associated with the target node;

flushing at least one of the compacted packets to at most a single child node of the target node; and

in response to flushing the at least one of the compacted packets to the single child node, performing the compaction operation on the single child node, wherein the flushing of compacted packets proceeds along a single path toward a leaf node of the buffer tree.

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 select the single child node from among a plurality of children nodes of the target node based on how many data elements will be flushed to each of the children nodes.

13. 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 select the single child node from among a plurality of children nodes of the target node in round robin fashion.

14. 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 select the single child node from among a plurality of children nodes of the target node randomly.

15. The apparatus of claim 11 , wherein flushing at least one of the compacted packets to a single child node of the target node is selectively performed only when a total number of uncompacted and compacted packets in the buffer associated with the target node exceeds a predetermined value.

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 Mar 1, 2019
From: JOHNSON, ROBERT T; GUPTA, ABHISHEK; GUERRA DELGADO, JORGE; ABRAHAM, ITTAI; SPILLANE, RICHARD P; PREMACHANDRAN, SRINATH; RANGASWAMY, SANDEEP; CHOWKSEY, KAPIL
To: VMWARE, INC.
Reel/Frame 048480/0611 →
Continuity (1)
Related Publication 20200151268A1 · May 14, 2020