IP Library Granted Patent US 12670082
Granted Patent B1
US 12670082 · App. 16/886,578 · Granted Jun 30, 2026

Computing performance analysis for spans in a microservices-based architecture

Inventors: Mayank Agarwal (Mountain View, CA); Steven Flanders (Nashua, NH); Steven Karis (Redwood City, CA); Justin Smith (San Francisco, CA); Chengyu Yang (San Francisco, CA)
Assignee: Cisco Technology, Inc.
G06F11/3466G06F9/54G06F11/3006G06F11/323G06F11/3414G06F12/0253G06F16/1734
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 12670082
App. No.
16/886,578
Granted
Jun 30, 2026
Kind
B1
Abstract

A method of computing a workload performed by a group of related spans within a microservices-based application executing in a distributed computing environment comprises aggregating a plurality of ingested spans associated with one or more applications executing in the distributed computing environment into a plurality of traces. The method also comprises retrieving a set of traces from the plurality of traces in response to a query and tracking an execution time of each respective group of related spans in the set of traces, wherein the tracking an execution time is performed for a plurality of groups. Further, the method comprises tracking a cumulative execution time for the plurality of groups and computing a workload ratio associated with each respective group of related spans using an execution time associated with a respective group and the cumulative execution time for the plurality of groups.

Claims (83)

1 . A method of computing a workload performed by a group of related spans within a microservices-based application executing in a distributed computing environment, the method comprising:

detecting, via one or more processors, a user request associated with an execution of the microservices-based application within the distributed computing environment, wherein different microservices within the distributed computing environment process a different portion of the user request;

monitoring in real time the different microservices that execute within the distributed computing environment and are instrumented to generate data for each call generated by the different microservices to service the user request as the user request propagates within and between the different microservices, wherein the data includes service-to-service call data and function call data;

generating, from the data and other data, at least a thousand spans for a plurality of user requests, including the user request, wherein each span is associated with a particular user request;

converting at least a plurality of the spans into a plurality of metric data streams, where each metric data stream is associated with a single span identify comprising a tuple of information corresponding to an associated type of span;

monitoring in real time with sub second resolution the plurality of metric data streams and reporting in real time when a monitored metric of the plurality of metric data streams exhibits anomalous behavior;

aggregating, via the one or more processors, the at least a plurality of the spans into a plurality of traces by matching a unique trace identifier included in each span and identifying a parent-child relationship between spans based on a parent span identifier included in a child span that references a span identifier of a parent span;

wherein individual ones of the plurality of traces are associated with the user request, of the plurality of user requests, that propagates between two or more microservices, wherein individual ones of the plurality of traces are associated with the user request, of the plurality of user requests, that propagates between two or more microservices;

storing each of the plurality of traces with one or more tags, utilizing an unstructured format;

receiving, via a user interface element displayed within a graphical user interface, a query to execute;

responsive to the query, retrieving, via the one mor more processors, a set of traces from the plurality of traces;

grouping, via the one or more processors, the spans within the set of traces into a plurality of groups of related spans, based on one or more criteria;

tracking, via the one or more processors, an execution time of each span within the plurality of groups of related spans in the set of traces,

wherein each of the plurality of groups of related spans is associated with a particular category,

wherein spans in each group of related spans share common attributes extracted from the related spans in the group,

wherein the tracking the execution time for each span comprises computing a self-time interval for the span by determining a processing time for the span that excludes a time period in which the span waits for a child span to execute by traversing a tree structure of a trace including the span, and creating the self-time interval for the span for which no direct children of the span are active by creating an interval for a duration of the span, and creating the self-time interval for the span by removing intervals of any child spans from the interval for the span;

tracking, via the one or more processors, a cumulative execution time for the plurality of groups;

computing, via the one or more processors, a workload ratio associated with each group of related spans using an execution time associated with the group and the cumulative execution time for the plurality of groups; and

responsive to a user interaction, rendering, via the one or more processors, in a graphical user interface, a representation of the workload ratio associated with each respective group of related spans for display.

2 . The method of claim 1 , wherein spans in each group of related spans are related by at least one of the common attributes including a same type of request, a same type of operation, a same type of service, an infrastructural element or a same type of customer.

3 . The method of claim 1 , comprising retrieving the set of traces from a data set associated with an analysis modality of a plurality of analysis modalities, and wherein each analysis modality from the plurality of analysis modalities extracts a different level of detail from the spans.

4 . The method of claim 1 , comprising retrieving the set of traces from a data set associated with an analysis modality of a plurality of analysis modalities, and wherein the plurality of analysis modalities comprises a first analysis modality and a second analysis modality, wherein the first analysis modality is associated with a functionality of sampling traces and computing the workload associated with each group of related spans using the sampled traces, and wherein the second analysis modality is associated with analyzing raw trace data associated with the set of traces.

5 . The method of claim 1 , wherein the tracking the cumulative execution time for the plurality of groups comprises accumulating self-time intervals for spans in the plurality of groups.

6 . The method of claim 1 , comprising:

categorizing each group of related spans under a base category.

7 . The method of claim 1 , comprising:

categorizing each group of related spans under a base category, wherein the base category includes at least one of: application, database, external, network or garbage collection.

8 . The method of claim 1 , comprising: categorizing each group of related spans under a base category; and

rendering for display in the graphical user interface a categorization of the plurality of groups in respective base categories.

9 . The method of claim 1 , comprising:

categorizing a group of related spans under a database category, wherein the group of related spans is associated with communicating with a database.

10 . The method of claim 1 , comprising:

categorizing a group of related spans under an external category, wherein the group of related spans is associated with communicating with an external service that is external to microservices-based application.

11 . The method of claim 1 , comprising:

categorizing a group of related spans under a network category, wherein the group of related spans is associated with a cross-service call between different services.

12 . The method of claim 1 , comprising adding a length of an interval for a self-time interval of each span associated with a category to a global counter for the category,

wherein the unstructured format includes a blob storage format.

13 . The method of claim 1 , further comprising:

retrieving the set of traces from a data set associated with an analysis modality of a plurality of analysis modalities, wherein the plurality of analysis modalities comprises a first analysis modality and a second analysis modality, wherein the first analysis modality is associated with a functionality of sampling traces and computing the workload associated with each group of related spans using the sampled traces, and wherein the second analysis modality is associated with analyzing raw trace data associated with the set of traces;

categorizing each group of related spans under a base category;

categorizing a group of related spans under a garbage collection category,

wherein the group of related spans are operable to be associated with a base category in addition to the garbage collection category, the base category including at least one of: application, database, and external network, and wherein a duration of a span in a respective group of related spans is associated with the garbage collection category based on a value of a tag associated with garbage collection;

rendering for display in the graphical user interface a categorization of the plurality of groups in respective base categories; and

rendering a histogram for each respective group for display in the graphical user interface, wherein the histogram depicts a self-time interval for spans in each respective group;

wherein spans in each group of related spans are related by at least one of the common attributes including a same type of request, a same type of operation, a same type of service, an infrastructural element or a same type of customer.

14 . The method of claim 1 , comprising adding a length of an interval for the self-time interval of each of the spans in a trace to a global counter for the trace.

15 . The method of claim 1 , comprising, for each of the spans, categorizing the span and the self-time interval for the span.

16 . The method of claim 1 , further comprising generating a fixed size bin histogram for each of the plurality of groups of related spans, wherein the fixed size bin histogram is a data structure preserved in memory.

17 . A non-transitory computer-readable medium having computer-readable program code embodied therein for causing a computer system to perform a method of computing a workload performed by a group of related spans within a microservices-based application executing in a distributed computing environment, the method comprising:

detecting a user request associated with an execution of the microservices-based application within the distributed computing environment, wherein different microservices within the distributed computing environment process a different portion of the user request;

causing monitoring in real time the different microservices that execute within the distributed computing environment and are instrumented to generate data for calls generated by the different microservices to service the user request as the user request propagates within and between the different microservices;

generating, from the data, at least a thousand spans for a plurality of user requests, including the user request, wherein each span is associated with a particular user request;

converting at least a plurality of the spans into a plurality of metric data streams, where each metric data stream is associated with a single span identify comprising a tuple of information corresponding to an associated type of span;

monitoring in real time with sub second resolution the plurality of metric data streams and reporting in real time when a monitored metric of the plurality of metric data streams exhibits anomalous behavior;

aggregating the at least a plurality of spans into a plurality of traces by matching a unique trace identifier included in each span and identifying a parent-child relationship between spans based on a parent span identifier included in a child span that references a span identifier of a parent span; wherein individual ones of the plurality of traces are associated with the user request, of the user requests, that propagates between two or more microservices;

storing each of the plurality of traces with one or more tags, utilizing an unstructured format;

retrieving a set of traces from the plurality of traces in response to a query;

grouping the spans within the set of traces into a plurality of groups of related spans, based on one or more criteria;

tracking an execution time of each span within the plurality of groups of related spans in the set of traces;

wherein each of the plurality of groups of related spans is associated with a particular category;

wherein spans in each group of related spans share common attributes extracted from the related spans in the group;

wherein the tracking the execution time for each span comprises computing a self-time interval for the span determining a processing time for the span and excluding a time period in which the span waits for a child span to execute by traversing a tree structure of a trace including the span, and creating the self-time interval for the span for which no direct children of the span are active by creating an interval for a duration of the span, and creating the self-time interval for the span by removing intervals of any child spans from the interval for the span;

tracking a cumulative execution time for the plurality of groups;

computing a workload ratio associated with each group of related spans using an execution time associated with the group and the cumulative execution time for the plurality of groups; and

responsive to a query received via a user interface element, rendering a representation of the workload ratio associated with each respective group for display in a graphical user interface for a user.

18 . A system for performing a method of computing a workload performed by a group of related spans within a microservices-based application executing in a distributed computing environment, the system comprising:

a processing device communicatively coupled with a memory and configured to:

detect a user request associated with an execution of the microservices-based application within the distributed computing environment, wherein different microservices within the distributed computing environment process a different portion of the request;

monitor in real time the different microservices that execute within the distributed computing environment and are instrumented to generate data for calls generated by the different microservices to service the user request as the user request propagates within and between the different microservices;

generate, from the data, at least a thousand spans for a plurality of user requests, including the user request, wherein each span is associated with a particular user request;

convert at least a plurality of the spans into a plurality of metric data streams, where each metric data stream is associated with a single span identify comprising a tuple of information corresponding to an associated type of span;

monitor in real time with sub second resolution the plurality of metric data streams and reporting in real time when a monitored metric of the plurality of metric data streams exhibits anomalous behavior;

aggregate the at least a plurality of the spans into a plurality of traces by matching a unique trace identifier included in each span and identifying a parent-child relationship between spans based on a parent span identifier included in a child span that references a span identifier of a parent span; wherein individual ones of the plurality of traces are associated with the user request, of the user requests, that propagates between two or more microservices;

store each of the plurality of traces with one or more tags, utilizing an unstructured format;

retrieve a set of traces from the plurality of traces in response to a query;

grouping the spans within the set of traces into a plurality of groups of related spans, based on one or more criteria;

track an execution time of each span within the plurality of groups of related spans in the set of traces,

wherein each of the plurality of groups of related spans is associated with a particular category,

wherein spans in each group of related spans share common attributes extracted from the related spans in the group,

wherein tracking the execution time for each span comprises computing a self-time interval for the span determining a processing time for the span and excluding a time period in which the span waits for a child span to execute by traversing a tree structure of a trace including the span, and creating the self-time interval for the span for which no direct children of the span are active by creating an interval for a duration of the span, and creating the self-time interval for the span by removing intervals of any child spans from the interval for the span;

track a cumulative execution time for the plurality of groups of related spans;

compute a workload ratio associated with each group of related spans using an execution time associated with the group and the cumulative execution time for the plurality of groups; and

responsive to a query received via a user interface element, render a representation of the workload ratio associated with each group for display in a graphical user interface for a user.