Application performance data processing
A system and method for generating performance assistance charts is disclosed. An application performance spectrometer aggregates collected application performance data by scaling, normalizing and quantizing the data so that all samples indicative of low performance appear on one side of the graph, all samples indicative of high performance appear on the other side of the graph, and samples in between are positioned relative to those two poles in quantized buckets. The spectrometer may be used to visualize an application's performance characteristics, and as an application fingerprint may be used to compare different applications and determine which have similar performance profiles.
1 . A method for processing application performance data, the method comprising:
executing a performance tracking tool on a first computing system to collect performance data for a new application also executing on the first computing system, wherein the performance data comprises a plurality of different performance counters;
normalizing the collected performance data;
quantizing the normalized performance data;
creating an application performance fingerprint for the new application by combining the quantized and normalized performance data representing the different performance counters; and
predicting a performance of the new application on a second computing system using performance data collected for one or more similar prior executed applications, wherein each similar prior executed application includes multiple fingerprints corresponding to execution on different computing systems or configurations, and the prediction is based on one or more of those fingerprints;
selecting a configuration of the second computing system for executing the new application based on the predicted performance;
executing the new application on the second computing system using the selected configuration; and
generating a hot spot chart that identifies performance bottlenecks in the new application by categorizing functions based on a percentage of time spent during execution;
wherein the hot spot chart distinguishes between I/O latency-bound and I/O bandwidth-bound performance characteristics.
2 . The method of claim 1 , further comprising creating a spectrometer graph by plotting a histogram chart of the application performance fingerprint.
3 . The method of claim 2 , wherein the performance data comprises samples, and wherein samples indicative of low performance appear on a first side of the spectrometer graph, samples indicative of high performance appear on a second side of the spectrometer graph, and samples indicative of intermediate performance are positioned between the first side and the second side in quantized locations.
4 . The method of claim 1 , further comprising comparing the application performance fingerprint for the new application with a prior stored application performance fingerprint for at least one different application to find the one or more similar prior executed applications.
5 . The method of claim 4 , wherein the prior stored application performance fingerprint comprises performance data for the execution of the at least one different application on a plurality of different computing systems.
6 . The method of claim 4 , further comprising making a recommendation for application performance improvement based on the performance data collected for the one or more prior executed similar applications.
7 . The method of claim 1 , further comprising generating a load balance chart for the new application, wherein the load balance chart illustrates a distribution of work among parallel processes based on calculated function execution percentages, and identifying at least one process with disproportionate workload or idle time based on the chart.
8 . A method for managing application performance, the method comprising:
executing a performance tracking tool on a first computing system to collect performance data for a new application also being executed on the first computing system, wherein the performance data comprises a plurality of different performance counters;
creating an application performance fingerprint for the new application by (i) quantizing and normalizing the collected performance data, and (ii) combining the quantized and normalized data into a histogram representation that numerically correlates low and high-performance samples;
comparing the application performance fingerprint for the new application with a plurality of stored application performance fingerprints generated from prior executed applications, each fingerprint corresponding to execution of a prior application on a particular computing system or computing system configuration, to identify one or more similar prior executed applications based on a similarity metric;
predicting a performance of the new application on a second computing system or configuration by identifying one or more previously executed applications whose fingerprints are similar to the fingerprint of the new application, and using performance data of those similar applications obtained from executions on the second computing system or configuration to estimate an expected performance of the new application on the second computing system;
automatically generating a configuration recommendation identifying at least one computing system or configuration for optimized execution of the new application based on the predicted performance;
allocating computing resources of the second computing system or configuration in accordance with the recommendation; and
dispatching the new application to the allocated computing resources for execution, thereby automatically optimizing deployment of the new application based on a predicted performance counters.
9 . The method of claim 8 , wherein the earlier captured application performance fingerprints include different fingerprints for each application's performance data on different computing systems.
10 . The method of claim 9 , wherein the different computing systems include bare metal computing systems and cloud computing systems.
11 . The method of claim 8 , further comprising generating a visual performance spectrometer that graphically represents the quantized and normalized data of the new application, wherein the visual performance spectrometer displays samples arranged along a scale between low-performance and high-performance poles to highlight performance optimization opportunities.
12 . A system having at least one processor, the system configured to:
execute a performance tracking tool on a first computing system to collect performance data for a new application also executing on the first computing system, wherein the performance data comprises a plurality of different performance counters;
normalize the collected performance data;
quantize the normalized performance data;
create an application performance fingerprint for the new application by combining the quantized and normalized performance data representing the different performance counters; and
predict a performance of the new application on a second computing system using performance data collected for one or more similar prior executed applications, wherein each similar prior executed application includes multiple fingerprints corresponding to execution on different computing systems or configurations, and the prediction is based on one or more of those fingerprints;
generate, from the normalized performance data, an application performance histogram that categorizes performance characteristics of the new application by transaction size to distinguish between I/O-latency-bound, I/O-bandwidth-bound, network-latency-bound, and network-bandwidth-bound workloads;
select a configuration of the second computing system for executing the new application based on the predicted performance and the categorized performance characteristics identified in the application performance histogram; and
execute the new application on the second computing system using the selected configuration.
13 . The system of claim 12 , further configured to create a spectrometer graph by plotting a histogram chart of the application performance fingerprint.
14 . The system of claim 13 , wherein the performance data comprises samples, and wherein the samples indicative of low performance appear on a first side of the spectrometer graph, the samples indicative of high performance appear on a second side of the spectrometer graph, and the samples indicative of intermediate performance are positioned between the first side and the second side in quantized locations.
15 . The system of claim 12 , further configured to compare the application performance fingerprint for the new application with a prior stored application performance fingerprint for at least one different application to find the one or more similar prior executed applications.
16 . The system of claim 15 , wherein the prior stored application performance fingerprint comprises performance data for the execution of the at least one different application on a plurality of different computing systems.
17 . The system of claim 15 , further configured to make a recommendation for application performance improvement based on the performance data collected for the one or more similar prior executed applications.
18 . The system of claim 12 , wherein the second computing system has a different configuration than the first computing system.
19 . The system of claim 12 , wherein the one or more similar prior executed applications have a matching performance profile to the new application.