IP Library Granted Patent US 10,394,692
Granted Patent B2
US 10,394,692 · App. 15/005,489 · Granted Aug 27, 2019

Real-time processing of data streams received from instrumented software

Inventors: Phillip Liu (Palo Alto, CA); Arijit Mukherji (Fremont, CA); Rajesh Raman (Palo Alto, CA)
Assignee: SignalFx, Inc.
G06F11/3644G06F11/3006G06F11/3082G06F16/24568G06F11/323
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,394,692
App. No.
15/005,489
Filed
Jan 25, 2016
Granted
Aug 27, 2019
Kind
B2
Art Unit
2191
USPC
717/130
Abstract

An analysis system receives data streams generated by instances of instrumented software executing on external systems. The analysis system evaluates an expression using data values of the data streams over a plurality of time intervals. For example, the analysis system may aggregate data values of data streams for each time interval. The analysis system determines whether or not a data stream is considered for a time interval based on when the data value arrives during the time interval. The analysis system determines a maximum expected delay value for each data stream being processed. The analysis system evaluates the expression using data values that arrive before their maximum expected delay values. The analysis system also determines a failure threshold value for a data stream. If a data value of a data stream fails to arrive before the failure threshold value, the analysis system marks the data stream as dead.

Claims (58)

1. A method for processing data generated by instrumented software, the method comprising:

receiving, by an analysis system, information identifying a set of data streams, each data stream generated by an instance of instrumented software executing on an external system;

receiving a specification of an expression, the expression processing data values of the set of data streams, each of the data values associated with a time interval of a plurality of time intervals for evaluating the expression, each time interval having a beginning point and an end point; and

for each of the plurality of time intervals for evaluating the expression:

for each data stream of the set of data streams, determining a maximum expected delay for the data stream, the maximum expected delay representing a limit on arrival delay within the time interval for a data value of the data stream from a corresponding instance of instrumented software to the analysis system, wherein the maximum expected delay is less than a length of the time interval,

monitoring the set of data streams for arrival of data values within the time interval,

modifying the set of data streams for the time interval by excluding a data stream if the data value of the data stream fails to arrive within the maximum expected delay for the data stream after the beginning point of the time interval,

evaluating the expression using the arrived data values of the modified set of data streams for the time interval, and

prior to the end point of the time interval, sending a value of the evaluated expression for presentation.

2. The method of claim 1 , wherein the expression aggregates the data values of the set of data streams, the data values associated with a time interval.

3. The method of claim 1 , wherein the maximum expected delay is determined based on historical arrival delays of data values of the data stream.

4. The method of claim 1 , wherein the maximum expected delay for a time interval is determined based on the arrival delay of the data value of the data stream for a previous time interval.

5. The method of claim 1 , wherein the maximum expected delay is determined to be a moving aggregate value based on arrival delays of at least three previous data values of the data stream.

6. The method of claim 5 , wherein the maximum expected delay is determined to be the moving aggregate value increased by a factor.

7. The method of claim 1 , further comprising:

storing data values of data streams that arrive after the maximum expected delay in a persistent data store.

8. The method of claim 1 , wherein data streams in the set of data streams dynamically change from one time interval to a subsequent time interval.

9. The method of claim 1 , further comprising:

determining a failure threshold value for a data stream; and

marking the data stream as dead if a data value of the data stream fails to arrive before the failure threshold value.

10. The method of claim 9 , further comprising:

excluding a data stream marked dead from the set of data streams monitored for arrival of data values for one or more subsequent time intervals.

11. The method of claim 9 , further comprising:

marking the data stream live if a data value is subsequently received for the data stream; and

including the data stream in the set of data streams monitored for arrival of data values for one or more subsequent time intervals.

12. The method of claim 1 , further comprising:

configuring results of evaluation of the expression for presentation by a real-time chart that is updated for every time interval.

13. A computer readable non-transitory storage medium storing instructions for processing data generated by instrumented software, the instructions when executed by a processor cause the processor to perform the steps of:

receiving, by an analysis system, information identifying a set of data streams, each data stream generated by an instance of instrumented software executing on an external system;

receiving a specification of an expression, the expression processing data values of the set of data streams, each of the data values associated with a time interval of a plurality of time intervals for evaluating the expression, each time interval having a beginning point and an end point; and

for each of the plurality of time intervals for evaluating the expression:

for each data stream of the set of data streams, determining a maximum expected delay for the data stream, the maximum expected delay representing a limit on arrival delay within the time interval for a data value of the data stream from a corresponding instance of instrumented software to the analysis system, wherein the maximum expected delay is less than a length of the time interval,

monitoring the set of data streams for arrival of data values within the time interval,

modifying the set of data streams for the time interval by excluding a data stream if the data value of the data stream fails to arrive within the maximum expected delay for the data stream after the beginning point of the time interval,

evaluating the expression using the arrived data values of the modified set of data streams for the time interval, and

prior to the end point of the time interval, sending a value of the evaluated expression for presentation.

14. The computer readable non-transitory storage medium of claim 13 , wherein the expression aggregates the data values of the set of data streams, the data values associated with a time interval.

15. The computer readable non-transitory storage medium of claim 13 , wherein the maximum expected delay is determined based on historical arrival delays of data values of the data stream.

16. The computer readable non-transitory storage medium of claim 13 , wherein the maximum expected delay is determined to be a moving aggregate value based on arrival delays of at least three previous data values of the data stream.

17. The computer readable non-transitory storage medium of claim 13 , wherein the instructions further cause the processor to perform the steps of:

determining a failure threshold value for a data stream; and

marking the data stream as dead if a data value of the data stream fails to arrive before the failure threshold value.

18. The computer readable non-transitory storage medium of claim 17 , wherein the instructions further cause the processor to perform the steps of:

excluding a data stream marked dead from the set of data streams monitored for arrival of data values for one or more subsequent time intervals.

19. The computer readable non-transitory storage medium of claim 17 , wherein the instructions further cause the processor to perform the steps of:

marking the data stream live if a data value is subsequently received for the data stream; and

including the data stream in the set of data streams monitored for arrival of data values for one or more subsequent time intervals.

20. A computer-implemented system for processing data generated by instrumented software, the system comprising:

a computer processor; and

a computer readable non-transitory storage medium storing instructions thereon, the instructions when executed by a processor cause the processor to perform the steps of:

receiving, by an analysis system, information identifying a set of data streams, each data stream generated by an instance of instrumented software executing on an external system;

receiving a specification of an expression, the expression processing data values of the set of data streams, each of the data values associated with a time interval of a plurality of time intervals for evaluating the expression, each time interval having a beginning point and an end point; and

for each of the plurality of time intervals for evaluating the expression:

for each data stream of the set of data streams, determining a maximum expected delay for the data stream, the maximum expected delay representing a limit on arrival delay within the time interval for a data value of the data stream from a corresponding instance of instrumented software to the analysis system, wherein the maximum expected delay is less than a length of the time interval,

monitoring the set of data streams for arrival of data values within the time interval,

modifying the set of data streams for the time interval by excluding a data stream if the data value of the data stream fails to arrive within the maximum expected delay for the data stream after the beginning point of the time interval,

evaluating the expression using the arrived data values of the modified set of data streams for the time interval, and

prior to the end point of the time interval, sending a value of the evaluated expression for presentation.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 22, 2025
From: SPLUNK LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 072173/0058 →
CHANGE OF NAME Recorded Jul 22, 2025
From: SPLUNK INC.
To: SPLUNK LLC
Reel/Frame 072170/0599 →
CORRECTIVE ASSIGNMENT TO CORRECT THE MISSPACED COMPANY NAME OF SIGNAL FX, INC PREVIOUSLY RECORDED ON REEL 052858 FRAME 0782. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jun 16, 2020
From: SOLIS MERGER SUB II, LLC; SIGNALFX, INC.
To: SIGNALFX LLC
Reel/Frame 052958/0872 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 5, 2020
From: SIGNALFX LLC
To: SPLUNK INC.
Reel/Frame 052858/0787 →
MERGER AND CHANGE OF NAME Recorded Jun 5, 2020
From: SOLIS MERGER SUB II, LLC; SIGNAL FX, INC.; SIGNALFX LLC
To: SIGNALFX LLC
Reel/Frame 052858/0782 →
RELEASE OF SECURITY INTEREST Recorded Oct 1, 2019
From: SILVER LAKE WATERMAN FUND II, L.P.
To: SIGNALFX, INC.
Reel/Frame 050585/0240 →
SECURITY INTEREST Recorded Dec 14, 2017
From: SIGNALFX, INC.
To: SILVER LAKE WATERMAN FUND II, L.P.
Reel/Frame 044868/0541 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 5, 2016
From: LIU, PHILLIP; MUKHERJI, ARIJIT; RAMAN, RAJESH
To: SIGNALFX, INC.
Reel/Frame 037675/0681 →
Continuity (2)
Provisional Application 62109308 · Jan 29, 2015
Related Publication 20160224459A1 · Aug 4, 2016
Cited By (11)
US 12,192,078 US 12,212,476 US 12,224,921 US 12,231,307 US 12,231,308 US 12,278,746 US 12,335,275 US 12,455,809 US 12,596,568 US 12,657,049 US 12,670,003