IP Library Granted Patent US 11,010,274
Granted Patent B2
US 11,010,274 · App. 16/049,098 · Granted May 18, 2021

Method and apparatus for trace data collection

Inventors: Eldad Zinger (Raanana, IL); Eyal Harari (Herzliya, IL)
Assignee: EMC IP Holding Company LLC
G06F11/3636G06F12/06G06F2212/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 11,010,274
App. No.
16/049,098
Granted
May 18, 2021
Kind
B2
Abstract

A method is provided for collecting trace data items generated by a plurality of trace points, the method comprising: allocating a ring buffer in a first memory, the ring buffer including a plurality of trace buffers; when any of the trace points is executed, storing a trace data item generated by the trace point in one of the plurality of trace buffers that is identified by a given value of a ring pointer; retrieving the trace data item from the trace buffer based on at least one of: (i) a first timestamp that is generated when the trace data item is stored in the trace buffer, and (ii) a second timestamp indicating a time when the ring pointer was assigned the given value; and storing the retrieved trace data item in a second memory device.

Claims (44)

1. A method for collecting trace data items generated by a plurality of trace points, the method comprising:

allocating a ring buffer in a first memory device, the ring buffer including a plurality of trace buffers;

incrementing a ring pointer to assign a given value to the ring pointer;

when any of the trace points is executed, storing a trace data item generated by the trace point in one of the plurality of trace buffers that is identified by the given value of the ring pointer;

retrieving the trace data item from the trace buffer based on a timestamp indicating a time when the ring pointer was assigned the given value, wherein retrieving the trace data item based on the timestamp includes: performing a search of a ring pointer database based on the given value to identify a timestamp corresponding to a most recent time when the ring pointer was assigned the given value, retrieving the timestamp as a result of the search, detecting a distance between a current time and a time indicated by the timestamp, detecting whether the distance exceeds a threshold, and retrieving the trace data item only when the distance exceeds the threshold; and

storing the retrieved trace data item in a second memory device.

2. The method of claim 1 , wherein the plurality of trace points is contained in one or more files, the method further comprising:

pre-processing the one or more files before any of the trace points is executed to identify a size of a largest trace data item that is generated by any of the trace points,

wherein the ring buffer is allocated based on the size of the largest trace data item that is generated by any of the trace points, such that each trace buffer in the ring buffer has a respective size that is greater than or equal to the size of the largest trace data item that is generated by any of the trace points.

3. The method of claim 1 , wherein the plurality of trace points is contained in one or more files, the method further comprising:

pre-processing the one or more files before any of the trace points is executed to identify a respective format of each of the trace data items, and, for each trace point, inserting one or more processor-executable instructions into a file containing the trace point, which when executed cause a format ID to be included into the trace data item, or other data, that is generated by the trace point, the format ID identifying the format of the trace data item that is generated by the trace point.

4. A method for collecting trace data items generated by a plurality of trace points, the method comprising:

allocating a ring buffer in a first memory device, the ring buffer including a plurality of trace buffers;

when any of the trace points is executed, storing a trace data item generated by the trace point in one of the plurality of trace buffers that is identified by a given value of a ring pointer;

retrieving the trace data item from the trace buffer based on at least one of: (i) a first timestamp that is generated when the trace data item is stored in the trace buffer, and (ii) a second timestamp indicating a time when the ring pointer was assigned the given value;

detecting a first value of the ring pointer that is current when the retrieving of the trace data item is initiated;

detecting a second value of the ring pointer that is current when the retrieving of the trace data item is completed;

detecting whether the ring pointer has been re-assigned the given value before the retrieving of the trace data item is completed, the detecting being based on the first value of the ring pointer and the second value of the ring pointer; and

storing the retrieved trace data item in a second memory device, wherein the retrieved trace data item is stored in the second memory device only when the ring pointer has not been re-assigned the given value before the retrieving of the trace data item is completed.

5. An apparatus for collecting trace data items generated by a plurality of trace points, the apparatus comprising:

a first memory device;

a second memory device; and

at least one processor operatively coupled to the first memory device and the second memory device, the at least one processor being configured to:

allocate a ring buffer on the first memory device, the ring buffer including a plurality of trace buffers;

assign a given value to a ring pointer by incrementing the ring pointer,

when any of the trace points is executed, store a trace data item generated by the trace point in one of the plurality of trace buffers that is identified by the given value of the ring pointer;

retrieve the trace data item from the trace buffer based on a timestamp indicating a time when the ring pointer was assigned the given value, wherein the retrieval of the trace data item based on the timestamp includes: performing a search of a ring pointer database based on the given value to identify a timestamp corresponding to a most recent time when the ring pointer was assigned the given value, retrieving the timestamp as a result of the search, detecting a distance between a current time and a time indicated by the timestamp, detecting whether the distance exceeds a threshold, and retrieve the trace data item only when the distance exceeds the threshold; and

store the retrieved trace data item on the second memory device.

6. The apparatus of claim 5 , wherein the plurality of trace points is contained in one or more files, and the at least one processor is further configured to:

pre-process the one or more files before any of the trace points is executed to identify a size of a largest trace data item that is generated by any of the trace points,

wherein the ring buffer is allocated based on the size of the largest trace data item that is generated by any of the trace points, such that each trace buffer in the ring buffer has a respective size that is greater than or equal to the size of the largest trace data item that is generated by any of the trace points.

7. The apparatus of claim 5 , wherein the plurality of trace points is contained in one or more files, and the at least one processor is further configured to:

pre-process the one or more files before any of the trace points is executed to identify a respective format of each of the trace data items, and for each trace point, insert one or more processor-executable instructions into a file containing the trace point, which when executed cause a format ID to be included into the trace data item, or other data, that is generated by the trace point, the format ID identifying the format of the trace data item that is generated by the trace point.

8. An apparatus for collecting trace data items generated by a plurality of trace points, the apparatus comprising:

a first memory device;

a second memory device; and

at least one processor operatively coupled to the first memory device and the second memory device, the at least one processor being configured to:

allocate a ring buffer on the first memory device, the ring buffer including a plurality of trace buffers;

when any of the trace points is executed, store a trace data item generated by the trace point in one of the plurality of trace buffers that is identified by a given value of a ring pointer;

retrieve the trace data item from the trace buffer based on at least one of: (i) a first timestamp that is generated when the trace data item is stored in the trace buffer, and (ii) a second timestamp indicating a time when the ring pointer was assigned the given value;

detect a first value of the ring pointer that is current when the retrieval of the trace data item is initiated;

detect a second value of the ring pointer that is current when the retrieval of the trace data item is completed;

detect whether the ring pointer has been re-assigned the given value before the retrieval of the trace data item is completed, the detection being based on the first value of the ring pointer and the second value of the ring pointer; and

store the retrieved trace data item on the second memory device, the retrieved trace data item being stored in permanent storage only when the ring pointer has not been re-assigned the given value before the retrieval of the trace data item is completed.

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 Jul 31, 2018
From: ZINGER, ELDAD; HARARI, EYAL
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 046515/0819 →