IP Library Granted Patent US 12,379,940
Granted Patent B2
US 12,379,940 · App. 18/323,213 · Granted Aug 5, 2025

Application tuning based on performance characteristics

Inventor: Harish Kumar Somisetty (Bangalore, IN)
Assignee: Micro Focus LLC
G06F9/44505G06F8/656G06F11/302G06F11/3428
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 12,379,940
App. No.
18/323,213
Granted
Aug 5, 2025
Kind
B2
Abstract

According to examples, an apparatus may include a processor and a memory on which are stored machine-readable instructions that when executed by the processor, may cause the processor to receive information regarding a performance characteristic of an application during predetermined time periods. The processor may calculate a rate of change in the performance characteristic over the predetermined time periods. Based on a determination that the performance characteristic of the application has changed over the predetermined time periods, the processor may tune values of a set of parameters for the application based on the calculated rate of change in the performance characteristic.

Claims (74)

1. An apparatus comprising:

a processor; and

a memory on which are stored machine-readable instructions that when executed by the processor, cause the processor to:

receive information regarding a performance characteristic of an application during predetermined time periods, the performance characteristic being associated with a number of occurrences of an event of the application;

calculate a rate of change in the number of occurrences of the event of the application over the predetermined time periods; and

based on a determination that the calculated rate of change in the number of occurrences of the event of the application associated with the performance characteristic of the application has changed over the predetermined time periods, tune values of a set of parameters for the application based on the calculated rate of change, wherein the application is executed based on the tuned values of the set of parameters for the application;

based on a determination that the set of parameters for the application requires an application restart to apply changes to the values of the set of parameters for the application,

change the values of the set of parameters in a configuration file associated with the set of parameters for the application; and

output a notification to restart the application.

2. The apparatus of claim 1 , wherein the instructions cause the processor to:

maintain event counts comprising the number of occurrences of the event of the application during each of the predetermined time periods;

calculate the rate of change in the number of occurrences of the event of the application based on the maintained event counts; and

tune the values of the set of parameters for the application in proportion to the calculated rate of change in the number of occurrences of the event of the application.

3. The apparatus of claim 1 , wherein the instructions cause the processor to:

maintain a first event count for a number of occurrences of the event of the application during a first time period among the predetermined time periods and a second event count for a number of occurrences of the event of the application during a second time period among the predetermined time periods;

calculate the rate of change in the number of occurrences of the event of the application over the predetermined time periods based on a change between the first event count for the number of occurrences of the event of the application during the first time period and the second event count for the number of occurrences of the event of the application during the second time period; and

increase or decrease the values of the set of parameters for the application in proportion to the calculated rate of change in the maintained event counts of the event occurring in the application during the predetermined time periods based on the change between the first event count for the number of occurrences of the event of the application during the first time period and the second event count for the number of occurrences of the event of the application during the second time period.

4. The apparatus of claim 1 , wherein the instructions cause the processor to:

based on a determination that the calculated rate of change in the number of occurrences of the event of the application has increased over the predetermined time periods, tune the values of the set of parameters for the application by increasing the values of the set of parameters for the application in proportion to the increase in the calculated rate of change in the number of occurrences of the event of the application; and

based on a determination that the calculated rate of change in the number of occurrences of the event of the application has decreased over the predetermined time periods, tune the values of the set of parameters for the application by decreasing the values of the set of parameters for the application in proportion to the decrease in the calculated rate of change in the number of occurrences of the event of the application.

5. The apparatus of claim 1 , wherein the instructions cause the processor to:

in response to the values of the set of parameters for the application being tuned, receive second information regarding the performance characteristic of the application;

calculate a second rate of change in the performance characteristic based on the received second information regarding the performance characteristic of the application; and

based on the calculated second rate of change in the performance characteristic being the same as the calculated rate of change in the performance characteristic, tune values for a second set of parameters for the application in proportion to the calculated second rate of change in the performance characteristic, the second set of parameters for the application being different than the set of parameters for the application.

6. The apparatus of claim 1 , wherein the instructions cause the processor to:

apply the tuned values of the set of parameters for the application without an application restart.

7. The apparatus of claim 1 , wherein the information regarding the performance characteristic includes information for a type of performance characteristic including a number of caching events during each of the predetermined time periods, an amount of time to load content, information regarding temporary file sizes that are allocated, a rate of incoming events, CPU usage, cache utilization percentage, or a combination thereof, and the set of parameters for the application includes a number of threads for the application, a size of memory allocated for the application, a batch size, a batch timeout value, CPU allocation, a size of cache allocated, a number of web servers allocated, or a combination thereof, and the instructions cause the processor to:

calculate the rate of change in the number of occurrences of the event associated with the type of performance characteristic during each of the predetermined time periods; and

change the number of threads for the application, the size of memory allocated for the application, the batch size, the batch timeout value, the CPU allocation, the size of cache allocated, the number of web servers allocated, or a combination thereof, in proportion to the calculated rate of change in the number of occurrences of the event associated with the type of performance characteristic during each of the predetermined time periods.

8. A method comprising:

detecting, by a processor, a plurality of events of an application, a number of occurrences of the plurality of events of the application being associated with a performance characteristic of the application;

calculating, by the processor, a rate of change in the number of occurrences of the plurality of events of the application; and

based on the rate of change in the number of occurrences of the plurality of events of the application, tuning, by the processor, values of a set of parameters for the application in proportion to the calculated rate of change in the number of occurrences of the plurality of events of the application, wherein the application is executed based on the tuned values of the set of parameters for the application, by:

based on a decrease in the calculated rate of change in the number of occurrences of the plurality of events of the application, tuning the values of the set of parameters for the application by decreasing the values of the set of parameters for the application in proportion to the decrease in the calculated rate of change in the number of occurrences of the plurality of events of the application.

9. The method of claim 8 , further comprising:

maintaining a first event count for a first number of occurrences of an event of the application during a first time period and a second event count for a second number of occurrences of the event of the application during a second time period;

calculating the rate of change in the number of occurrences of the plurality of events of the application based on a difference between the first event count for the first number of occurrences of the event of the application during the first time period and the second event count for the second number of occurrences of the event of the application during the second time period; and

increasing or decreasing the values of the set of parameters for the application in proportion to the calculated rate of change in the number of occurrences of the plurality of events of the application based on the difference between the first event count for the first number of occurrences of the event of the application during the first time period and the second event count for the second number of occurrences of the event of the application during the second time period.

10. The method of claim 8 , further comprising:

based on an increase in the calculated rate of change in the number of occurrences of the plurality of events of the application, tuning the values of the set of parameters for the application by increasing the values of the set of parameters for the application in proportion to the increase in the calculated rate of change in the number of occurrences of the plurality of events of the application.

11. The method of claim 8 , further comprising:

in response to the values of the set of parameters for the application being tuned, detecting a second plurality of events of the application;

calculating a second rate of change in a number of occurrences of the second plurality of events of the application;

determining whether the second rate of change in the number of occurrences of the second plurality of events is different than the rate of change in the number of occurrences of the plurality of events of the application; and

based on a determination that the second rate of change in the number of occurrences of the second plurality of events of the application is the same as the rate of change in the number of occurrences of the plurality of events of the application, tuning values for a second set of parameters for the application in proportion to the second rate of change in the number of occurrences of the plurality of events of the application, the second set of parameters for the application being different than the set of parameters for the application.

12. The method of claim 8 , further comprising:

applying the tuned values for the set of parameters for the application without first restarting the application.

13. The method of claim 8 , further comprising:

based on a determination that the set of parameters for the application requires an application restart to apply changes to the set of parameters for the application,

changing the values of the set of parameters for the application in a configuration file associated with the set of parameters for the application; and

outputting a notification to restart the application.

14. The method of claim 8 , wherein detecting the plurality of events of the application includes detecting a type of the plurality of events including caching events during predetermined time periods, an amount of time to load content, temporary file sizes that are allocated, a rate of incoming events, a CPU usage value, a cache utilization percentage, or a combination thereof, and the set of parameters for the application includes a number of threads for the application, a size of memory allocated for the application, a batch size, a batch timeout value, CPU allocation, a size of cache allocated, a number of web servers allocated, or a combination thereof, the method further comprising:

calculating the rate of change in the number of occurrences of the detected type of the plurality of events of the application during each of the predetermined time periods; and

changing the number of threads for the application, the size of memory allocated for the application, the batch size, the batch timeout value, the CPU allocation, the size of cache allocated, the number of web servers allocated, or a combination thereof, in proportion to the calculated rate of change in the number of occurrences of the plurality of events of the application.

15. The method of claim 8 , further comprising:

based on a determination that the calculated rate of change in the number of occurrences of the plurality of events of the application is increasing or decreasing by a first rate, tuning the set of parameters by increasing or decreasing a value of a parameter among the set of parameters by a first amount that correlates to the first rate; and

based on a determination that the rate of change in the number of occurrences of the plurality of events of the application is increasing or decreasing by a second rate that is greater than the first rate, tuning the set of parameters by increasing or decreasing the value of the parameter among the set of parameters by a second amount that correlates to the second rate.

16. A non-transitory computer-readable medium on which is stored machine-readable instructions that, when executed by a processor, cause the processor to:

detect events of an application, the events being associated with a performance characteristic of the application;

identify levels associated with the events of the application for predetermined time periods, the identified levels being correlated to a number of occurrences of the event of the application during each of the predetermined time periods;

calculate a rate of change in the identified levels associated with the events of the application over the predetermined time periods; and

tune values of a set of parameters for the application in proportion to the calculated rate of change in the identified levels associated with the events of the application over the predetermined time periods, wherein the application is executed based on the tuned values of the set of parameters for the application

in response to the values for the set of parameters for the application being tuned, detect second events of the application, the second events being associated with the performance characteristic of the application;

calculate a second rate of change in levels associated with the second events of the application; and

based on the calculated second rate of change in the levels associated with the second events of the application being the same as the calculated rate of change in the levels associated with the events of the application, tune values of a second set of parameters for the application in proportion to the calculated second rate of change in the levels associated with the second events of the application, the second set of parameters for the application being different than the set of parameters for the application.

17. The non-transitory computer-readable medium of claim 16 , wherein the instructions cause the processor to:

based on a determination that the calculated rate of change in the identified levels associated with the events of the application has increased, tune the set of parameters by increasing the values for the set of parameters for the application in proportion to the increase in the calculated rate of change in the identified levels associated with the events of the application; and

based on a determination that the rate of change in the identified levels associated with the events of the application has decreased, tune the set of parameters by decreasing the values for the set of parameters for the application in proportion to the decrease in the calculated rate of change in the identified levels associated with the events of the application.

18. The non-transitory computer-readable medium of claim 16 , wherein the instructions cause the processor to:

based on a determination that the set of parameters for the application does not require an application restart to apply changes to the set of parameters for the application,

apply the tuned values of the set of parameters for the application without the application restart; and

based on a determination that the set of parameters for the application requires the application restart to apply changes to the set of parameters for the application,

change the values for the set of parameters in a configuration file associated with the set of parameters for the application; and

output a notification to restart the application.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2023
From: SOMISETTY, HARISH KUMAR
To: MICRO FOCUS LLC
Reel/Frame 063838/0229 →
Continuity (2)
Continuation 17365787 · Jul 1, 2021
Related Publication 20230297393A1 · Sep 21, 2023
References Cited (50)
US 5684374A · Chaffee · 1997 [cited by examiner]
US 5768500A · Agrawal · 1998 [cited by applicant]
US 5974457A · Waclawsky · 1999 [cited by examiner]
US 6189142B1 · Johnston · 2001 [cited by applicant]
US 6230312B1 · Hunt · 2001 [cited by applicant]
US 6311324B1 · Smith · 2001 [cited by examiner]
US 6460107B1 · Rao · 2002 [cited by applicant]
US 7142523B1 · Chekuri · 2006 [cited by examiner]
US 7237242B2 · Blythe et al. · 2007 [cited by applicant]
US 7331049B1 · Jin · 2008 [cited by applicant]
US 7406686B2 · Liu · 2008 [cited by applicant]
US 7630802B2 · Breed · 2009 [cited by applicant]
US 7870438B2 · Bartik · 2011 [cited by applicant]
US 7984429B2 · Hunt · 2011 [cited by applicant]
US 7996814B1 · Qureshi · 2011 [cited by applicant]
US 8185906B2 · Muscarella · 2012 [cited by applicant]
US 8219987B1 · Vlaovic · 2012 [cited by applicant]
US 8677360B2 · de Justo Teixeira et al. · 2014 [cited by applicant]
US 8874477B2 · Hoffberg · 2014 [cited by examiner]
US 8874801B1 · Ramineni · 2014 [cited by applicant]
US 9027011B1 · Lam · 2015 [cited by examiner]
US 9405575B2 · Burka · 2016 [cited by examiner]
US 9569729B1 · Oehrle · 2017 [cited by examiner]
US 9582603B1 · Acharya · 2017 [cited by examiner]
US 10019271B2 · Hsiao · 2018 [cited by examiner]
US 10402220B2 · Gleyzer et al. · 2019 [cited by applicant]
US 10708654B1 · Moraghan · 2020 [cited by applicant]
US 10756995B2 · Schibler · 2020 [cited by applicant]
US 10943273B2 · Hoffberg · 2021 [cited by examiner]
US 11010863B2 · Imbrogno · 2021 [cited by examiner]
US 11144428B2 · Abe · 2021 [cited by applicant]
US 11256590B1 · Hulick, Jr. · 2022 [cited by applicant]
US 11741196B2 · Ghose · 2023 [cited by examiner]
US 20120227045A1 · Knauth · 2012 [cited by examiner]
CN 103810048B · 2017 [cited by applicant]
CN 111752708A · 2020 [cited by applicant]
Sbaraglia et al, “A Productivity Centered Application Performance Tuning Framework”, ACM, pp. 1-10 (Year: 2007). [cited by examiner]
Sato et al, “Performance Tuning and Analysis of Future Vector Processors Based on the Roofline Model”, ACM, pp. 7-14 (Year: 2009). [cited by examiner]
Ryoo et al, “Optimization Principles and Application Performance Evaluation of a Multithreaded GPU Using CUDA”, ACM, pp. 1-10 (Year: 2008). [cited by examiner]
Zhang et al, “A framework for parallel simulation application performance evaluation and optimization”, IEEE, pp. 1-4 (Year: 2011). [cited by examiner]
Santolucito et al, “Synthesizing Configuration File Specifications with Association Rule Learning”, ACM, pp. 1-20 (Year: 2017). [cited by examiner]
Nitish Agarwal et al.; “Performance Prediction for Multi-Threaded Applications”; New York University; The 2nd International Workshop on AI-assisted Design for Architecture (AIDArc), held in conjunction with the Internat… [cited by applicant]
Tao Ju, et al.; “Energy-Efficient Thread Mapping for Heterogeneous Many-Core Systems via Dynamically Adjusting the Thread Count”; Apr. 8, 2019; (20 pages). [cited by applicant]
Tao Ju, et al.; “Thread Count Prediction Model: Dynamically Adjusting Threads for Heterogeneous Many-Core Systems”; Dec. 17, 2015; (9 pages). [cited by applicant]
Ahmed et al, “Studying the Effectiveness of Application Performance Management (APM) Tools for Detecting Performance Regressions for Web Applications: An Experience Report”, IEEE, pp. 1-12 (Year: 2016). [cited by applicant]
Browne et al, “A Scalable Cross-Platform Infrastructure for Application Performance Tuning Using Hardware Counters”, IEEE, pp. 1-13 (Year: 2000). [cited by applicant]
Chen et al, “Multi-objectivizing Software Configuration Tuning”, ACM, pp. 453-465 (Year: 2021). [cited by applicant]
Felber et al, “Dynamic Performance Tuning of Word-Based Software Transactional Memory”, ACM, pp. 237-245 (Year: 2008). [cited by applicant]
Johnston et al, “Performance Analysis of a Dynamic Programming Track Before Detect Algorithm”, IEEE, pp. 228-242 (Year: 2002). [cited by applicant]
Siracusa et al,“A CAD-based methodology to optimize HLS code via the Roofline model”, ACM, pp. 1-9 (Year: 2020). [cited by applicant]