Dynamic classification of sections of software
First Claim
1. A method in a computer system for classifying a component of software by matching a usage background of the component to a usage profile, wherein the software comprises plural components, and wherein a dynamic structure tracks the usage of the plural components, the method comprising:
- executing the software under expected conditions, thereby generating a usage profile, wherein executing comprises;
identifying a first component with a first component identifier; and
creating a usage profile based upon the first component identifier and the state of the dynamic structure;
mapping the usage profile to an outcome to produce a component map; and
re-executing the software, wherein re-executing comprises;
identifying a second component with a second component identifier;
creating a usage background of the second component based upon the second component identifier and the state of the dynamic structure;
matching the usage background to a usage profile in the component map; and
following the mapped outcome for the matched profile.
2 Assignments
0 Petitions
Accused Products
Abstract
Dynamic classification of sections of software using a profile-based optimization system optimizes management of the sections of software. Software executes under expected usage conditions. After execution, a set of usage profiles describes the dynamic properties of sections of the software. Each usage profile includes information identifying a section of software. Each usage profile maps to an outcome meant to optimize management of the sections of the software during later execution. During such later execution, a usage background describes the dynamic properties of a section of the software. The usage background includes information identifying the section of software. By matching the usage background to a usage profile in the set of usage profiles, the section is dynamically classified during later execution. Based on this dynamic classification, the section maps to the outcome meant to optimize management of the sections of software.
-
Citations
61 Claims
-
1. A method in a computer system for classifying a component of software by matching a usage background of the component to a usage profile, wherein the software comprises plural components, and wherein a dynamic structure tracks the usage of the plural components, the method comprising:
-
executing the software under expected conditions, thereby generating a usage profile, wherein executing comprises;
identifying a first component with a first component identifier; and
creating a usage profile based upon the first component identifier and the state of the dynamic structure;
mapping the usage profile to an outcome to produce a component map; and
re-executing the software, wherein re-executing comprises;
identifying a second component with a second component identifier;
creating a usage background of the second component based upon the second component identifier and the state of the dynamic structure;
matching the usage background to a usage profile in the component map; and
following the mapped outcome for the matched profile. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
during the executing, repeating the identifying and creating for each new first component, thereby generating plural usage profiles;
during the mapping, mapping the plural usage profiles to plural outcomes to produce additions to the component map; and
during the re-executing, repeating the identifying, creating, matching, and following for each new second component.
-
-
4. The method of claim 1 further comprising:
-
during the executing, repeating the identifying and creating, thereby generating a second usage profile;
comparing the second usage profile to the usage profile; and
if the second usage profile is not similar to the usage profile, mapping the second usage profile to an outcome to produce an addition to the component map.
-
-
5. The method of claim 1 further comprising:
-
re-executing the software under expected conditions, thereby generating a second usage profile;
comparing the second usage profile to the usage profile; and
if the second usage profile is not similar to the usage profile, mapping the second usage profile to an outcome to produce an addition to the component map.
-
-
6. The method of claim 1 wherein the plural components belong to plural groups, and wherein the first and second component identifiers are group identifiers.
-
7. The method of claim 1 wherein the first and second component identifiers are individual identifiers provided by a system service of the computer system.
-
8. The method of claim 1 wherein the first and second component identifiers are individual identifiers provided by an instrumentation system.
-
9. The method of claim 1 wherein for a component in use the dynamic structure records a component identifier, thereby tracking the sequence of usage of the plural components, wherein the creating a usage profile comprises:
-
noting a first sequence of recorded component identifiers in the dynamic structure; and
creating a first call chain with the first component identifier and the first sequence of recorded component identifiers;
and wherein the creating a usage background comprises; noting a second sequence of recorded component identifiers in the dynamic structure; and
creating a second call chain with the second component identifier and the second sequence of recorded component identifiers.
-
-
10. The method of claim 1 wherein a component comprises plural functions, wherein for a function in use the dynamic structure records a function identifier, thereby tracking the sequence of usage of the plural functions of the plural components, wherein the creating a usage profile comprises:
-
noting a first sequence of recorded functions in the dynamic structure; and
creating a first call chain with the first component identifier and the first sequence of recorded function identifiers;
and wherein the creating a usage background comprises; noting a second sequence of recorded functions in the dynamic structure; and
creating a second call chain with the second component identifier and the second sequence of recorded function identifiers.
-
-
11. The method of claim 1 wherein a component comprises plural functions, wherein for a function in use the dynamic structure records a function identifier and a component identifier of the component of which the function is a part, thereby tracking the sequence of usage of the plural components, wherein the creating a usage profile comprises:
-
noting a first sequence of recorded component identifiers and function identifiers in the dynamic structure; and
creating a first call chain with the first component identifier and the first sequence of recorded component identifiers and function identifiers;
and wherein the creating a usage background comprises; noting a second sequence of recorded component identifiers and function identifiers in the dynamic structure; and
creating a second call chain with the second component identifier and the second sequence of recorded component identifiers and function identifiers.
-
-
12. A computer-readable medium having computer-executable instructions for performing the method of claim 11.
-
13. The method of claim 11 wherein the first and second call chains comprise for each use of a function the function identifier and the component identifier of the component of which the function is a part.
-
14. The method of claim 11 wherein the first and second call chains comprise for the first use of a component the component identifier and the function identifier of the function in use during the first use.
-
15. The method of claim 11 wherein a function identifier comprises a return address for a function.
-
16. The method of claim 1 wherein the dynamic structure is a system stack of the computer system.
-
17. The method of claim 1 wherein the dynamic structure is a stack provided by an instrumentation system.
-
18. The method of claim 1 wherein a component comprises plural functions, wherein the dynamic structure is a system stack of the computer system, wherein for a function in use the system stack records a function identifier, thereby tracking the sequence of usage of the plural functions, and wherein a second stack provided by an instrumentation system for a component in use records a component identifier, thereby tracking the sequence of usage of the plural components.
-
19. A computer-readable medium having computer-executable instructions for performing the method of claim 18.
-
20. The method of claim 1 wherein the creating a usage profile comprises:
-
setting a level of precision;
traversing the dynamic structure up to the level of precision; and
forming a usage profile based upon the first component identifier and the state of the traversed portion of the dynamic structure;
and wherein the creating a usage background comprises; traversing the dynamic structure up to the level of precision; and
forming a usage background based upon the second component identifier and the state of the traversed portion of the dynamic structure.
-
-
21. The method of claim 20 wherein the dynamic structure is a stack, wherein the level of precision is a depth in the stack, wherein the traversing comprises following the stack to the set depth, and wherein the usage profile and usage background comprise call chains based upon the state of the traversed portion of the stack.
-
22. The method of claim 1 wherein the matching comprises:
-
finding the usage profile that is most similar to the usage background; and
selecting the mapped outcome for the most similar usage profile.
-
-
23. A method in a computer system for classifying a component of an application program by matching a usage background of the component to a usage profile, wherein the application comprises plural components, and wherein a dynamic structure tracks the usage of the plural components, the method comprising:
-
executing the application program in a profiling scenario, thereby generating a usage profile, wherein executing comprises;
identifying a first component with a first component identifier; and
creating a usage profile based upon the first component identifier and the state of the dynamic structure;
mapping the usage profile to a location in a distributed computing environment to produce a component map; and
re-executing the application program, wherein re-executing comprises;
identifying a second component with a second component identifier;
creating a usage background of the second component based upon the second component identifier and the state of the dynamic structure;
matching the usage background to a usage profile in the component map; and
instantiating the second component at the location that is mapped to the matched profile. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47)
during the executing, repeating the identifying and creating for each new first component, thereby generating plural usage profiles;
during the mapping, mapping the plural usage profiles to plural locations to produce additions to the component map; and
during the re-cxecuting, repeating the identifying, creating, matching, and instantiating for each new second component.
-
-
26. The method of claim 23 further comprising:
-
during the executing, repeating the identifying and creating, thereby generating a second usage profile;
comparing the second usage profile to the usage profile; and
if the second usage profile is not similar to the usage profile, mapping the second usage profile to a location to produce an addition to the component map.
-
-
27. The method of claim 23 further comprising:
-
re-executing the application program under expected conditions, thereby generating a second usage profile;
comparing the second usage profile to the usage profile; and
if the second usage profile is not similar to the usage profile, mapping the second usage profile to a location to produce an addition to the component map.
-
-
28. The method of claim 23 wherein a component belongs to a class, and wherein the first and second component identifier are class identifiers.
-
29. The method of claim 23 wherein the first and second component identifiers are individual identifiers provided by a system service of the computer system.
-
30. The method of claim 23 wherein the first and second component identifiers are individual identifiers provided by an instrumentation system.
-
31. The method of claim 23 wherein for an instantiated component the dynamic structure records a component identifier, thereby tracking the sequence of usage of the plural components, wherein the creating a usage profile comprises:
-
noting a first sequence of recorded component identifiers in the dynamic structure; and
creating a first call chain with the first component identifier and the first sequence of recorded component identifiers;
and wherein the creating a usage background comprises; noting a second sequence of recorded component identifiers in the dynamic structure; and
creating a second call chain with the second component identifier and the second sequence of recorded component identifiers.
-
-
32. The method of claim 23 wherein a component is created by an activation function called by another component, and wherein the usage profile and usage background comprise the component identifier of a calling component.
-
33. The method of claim 23 wherein a component is created by an activation function called by another component, wherein the dynamic structure stores an identifier of the activation function, and wherein usage profile and usage background are based upon the identifier of the activation function.
-
34. The method of claim 23 wherein a component is created by an activation function called by another component, and wherein the usage profile and usage background comprise the component identifier of a calling component and an identifier of the called activation function.
-
35. The method of claim 23 wherein a component comprises plural functions, wherein for a function in use the dynamic structure records a function identifier, thereby tracking the sequence of usage of the plural functions of the plural components, wherein the creating a usage profile comprises:
-
noting a first sequence of recorded functions in the dynamic structure; and
creating a first call chain with the first component identifier and the first sequence of recorded function identifiers;
and wherein the creating a usage background comprises; noting a second sequence of recorded functions in the dynamic structure; and
creating a second call chain with the second component identifier and the second sequence of recorded function identifiers.
-
-
36. The method of claim 23 wherein a component comprises plural functions, wherein for a function in use the dynamic structure records a function identifier and a component identifier of the component of which the function is a part, thereby tracking the sequence of usage of the plural components, wherein the creating a usage profile comprises:
-
noting a first sequence of recorded component identifiers and function identifiers in the dynamic structure; and
creating a first call chain with the first component identifier and the first sequence of recorded component identifiers and function identifiers;
and wherein the creating a usage background comprises; noting a second sequence of recorded component identifiers and function identifiers in the dynamic structure; and
creating a second call chain with the second component identifier and the second sequence of recorded component identifiers and function identifiers.
-
-
37. A computer-readable medium having computer-executable instructions for performing the method of claim 36.
-
38. The method of claim 36 wherein the first and second call chains comprise for each use of a function the function identifier and the component identifier of the component of which the function is a part.
-
39. The method of claim 36 wherein the first and second call chains comprise for the first use of a component identifier and the function identifier of the function in use during the first use.
-
40. The method of claim 36 wherein a function identifier comprises a return address for a function.
-
41. The method of claim 23 wherein the dynamic structure is the call stack of the computer system.
-
42. The method of claim 23 wherein the dynamic structure is a stack provided by an instrumentation system.
-
43. A computer-readable medium having computer-executable instructions for performing the method of claim 42.
-
44. A computer-readable medium having computer-executable instructions for performing the method of claim 43.
-
45. The method of claim 23 wherein the creating a usage profile comprises:
-
setting a level of precision;
traversing the dynamic structure up to the level of precision; and
forming a usage profile based upon the first component identifier and the state of the traversed portion of the dynamic structure;
and wherein the creating a usage background comprises; traversing the dynamic structure up to the level of precision; and
forming a usage profile based upon the second component identifier and the state of the traversed portion of the dynamic structure.
-
-
46. The method of claim 45 wherein the dynamic structure is a stack, wherein the level of precision is a depth in the stack, wherein the traversing comprises following the stack to the set depth, and wherein the usage profile and usage background comprise call chains based upon the state of the traversed portion of the stack.
-
47. The method of claim 23 wherein the matching comprises:
-
finding the usage profile that is most similar to the usage background; and
selecting the location that is mapped to the most similar usage profile.
-
-
48. A method in a computer system for classifying a program segment of software by matching a usage background of the program segment to a usage profile, wherein the software comprises plural program segments, and wherein a dynamic structure tracks the usage of the plural program segments, the method comprising:
-
executing the software under expected conditions, thereby generating a usage profile, wherein executing comprises;
identifying a first program segment with a first program segment identifier; and
creating a usage profile based upon the first program segment identifier and the state of the dynamic structure;
mapping the usage profile to an outcome to produce a program segment map, wherein the outcome is a memory placement; and
re-executing the software, wherein re-executing comprises;
identifying a second program segment with a second program segment identifier;
creating a usage background of the second program segment based upon the second program segment identifier and the state of the dynamic structure;
matching the usage background to a usage profile in the section map; and
following the mapped outcome for the matched profile, wherein the following comprises allocating memory for a program segment in the memory placement that is mapped to the matched usage profile. - View Dependent Claims (49, 50, 51, 52)
during the executing, repeating the identifying and creating, thereby generating a second usage profile;
comparing the second usage profile to the usage profile; and
if the second usage profile is not similar to the usage profile, mapping the second usage profile to an outcome to produce an addition to the program segment map.
-
-
50. The method of claim 48 wherein the creating a usage profile comprises:
-
setting a level of precision;
traversing the dynamic structure up to the level of precision; and
forming a usage profile based upon the first program segment identifier and the state of the traversed portion of the dynamic structure;
and wherein the creating a usage background comprises; traversing the dynamic structure up to the level of precision; and
forming a usage background based upon the second program segment identifier and the state of the traversed portion of the dynamic structure.
-
-
51. The method of claim 48 wherein the memory placement is a lifetime prediction bucket for garbage collection of memory.
-
52. The method of claim 48 wherein the memory placement is a memory heap for management of plural memory heaps.
-
53. A method in a computer system for classifying a program segment of software by matching a usage background of the program segment to a usage profile, wherein the software comprises plural program segments, and wherein a dynamic structure tracks the usage of the plural program segments, the method comprising:
-
executing the software under expected conditions, thereby generating a usage profile, wherein executing comprises;
identifying a first program segment with a first program segment identifier; and
creating a usage profile based upon the first program segment identifier and the state of the dynamic structure;
mapping the usage profile to an outcome to produce a program segment map, wherein the outcome is a lifetime estimate for load balancing; and
re-executing the software, wherein re-executing comprises;
identifying a second program segment with a second program segment identifier;
creating a usage background of the second program segment based upon the second program segment identifier and the state of the dynamic structure;
matching the usage background to a usage profile in the program segment map; and
following the mapped outcome for the matched profile, wherein the following comprises;
selecting a resource based on the lifetime estimate that is mapped to the matched usage profile; and
allocating memory for the second program segment in the selected resource. - View Dependent Claims (54, 55, 56, 57)
during the executing, repeating the identifying and creating, thereby generating a second usage profile;
comparing the second usage profile to the usage profile; and
if the second usage profile is not similar to the usage profile, mapping the second usage profile to an outcome to produce an addition to the program segment map.
-
-
55. The method of claim 53 wherein for a program segment in use the dynamic structure records a program segment identifier, thereby tracking the sequence of usage of the plural program segments, wherein the creating a usage profile comprises:
-
noting a first sequence of recorded program segment identifiers in the dynamic structure; and
creating a first call chain with the first program segment identifier and the first sequence of recorded program segment identifiers;
and wherein the creating a usage background comprises; noting a second sequence of recorded program segment identifiers in the dynamic structure; and
creating a second call chain with the second program segment identifier and the second sequence of recorded program segment identifiers.
-
-
56. The method of claim 53 wherein the creating a usage profile comprises:
-
setting a level of precision;
traversing the dynamic structure up to the level of precision; and
forming a usage profile based upon the first program segment identifier and the state of the traversed portion of the dynamic structure;
and wherein the creating a usage background comprises; traversing the dynamic structure up to the level of precision; and
forming a usage background based upon the second program segment identifier and the state of the traversed portion of the dynamic structure.
-
-
57. The method of claim 56 wherein the dynamic structure is a stack, wherein the level of precision is a depth in the stack, wherein the traversing comprises following the stack to the set depth, and wherein the usage profile and usage background comprise call chains based upon the state of the traversed portion of the stack.
-
58. A method in a computer system for classifying a cache page of data in software by matching a usage background of the cache page of data to a usage profile, wherein the software comprises plural cache pages of data, and wherein a dynamic structure tracks the usage of the plural cache pages of data, the method comprising:
-
executing the software under expected conditions, thereby generating a usage profile, wherein executing comprises;
identifying a first cache page of data with a first cache page identifier; and
creating a usage profile based upon the first cache page identifier and the state of the dynamic structure;
mapping the usage profile to an outcome to produce a cache page map, wherein the outcome is a placement in a cache; and
re-executing the software, wherein re-executing comprises;
identifying a second cache page of data with a second cache page identifier;
creating a usage background of the second cache page of data based upon the second cache page identifier and the state of the dynamic structure;
matching the usage background to a usage profile in the cache page map; and
following the mapped outcome for the matched profile, wherein the following comprises writing a page of cache data to the cache based on the placement that is mapped to the matched usage profile. - View Dependent Claims (59, 60)
during the executing, repeating the identifying and creating, thereby generating a second usage profile;
comparing the second usage profile to the usage profile; and
if the second usage profile is not similar to the usage profile, mapping the second usage profile to an outcome to produce an addition to the cache page map.
-
-
60. The method of claim 58 wherein the creating a usage profile comprises:
-
setting a level of precision;
traversing the dynamic structure up to the level of precision; and
forming a usage profile based upon the first cache page identifier and the state of the traversed portion of the dynamic structure;
and wherein the creating a usage background comprises; traversing the dynamic structure up to the level of precision; and
forming a usage background based upon the second cache page identifier and the state of the traversed portion of the dynamic structure.
-
-
61. A method in a computer system for classifying an application component of software by matching a usage background of the application component to a usage profile, wherein the software comprises plural application components, and wherein a dynamic structure tracks the usage of the plural application components, the method comprising:
-
executing the software under expected conditions, thereby generating a usage profile, wherein executing comprises;
identifying a first application component with a first application component identifier; and
creating a usage profile based upon the first application component identifier and the state of the dynamic structure;
mapping the usage profile to an outcome to produce an application component map, wherein the outcome is a location in a distributed computing environment; and
re-executing the software, wherein re-executing comprises;
identifying a second application component with a second application component identifier;
creating a usage background of the second application component based upon the second application component identifier and the state of the dynamic structure;
matching the usage background to a usage profile in the application component map; and
following the mapped outcome for the matched profile, wherein the following comprises instantiating a component at the location that is mapped to the matched usage profile.
-
Specification