Profile-driven data layout optimization
1 Assignment
0 Petitions
Accused Products
Abstract
Data layout optimization arranges data members within memory to enhance software performance. Profiling data is consulted to determine how to group data members for an object class into groups. One technique groups the data members based on how frequently the data members are referenced in memory. Another technique groups the data members based on their affinities for one another in time as determined by observing when references to the data members take place. A variety of options when collecting the profiling data and grouping the data members is supported. The data member grouping is recorded in metadata associated with a definition of the object class. At runtime, a class loader places the data members of an object in memory according to the metadata. Data members of different groups can be placed in separately-loadable units of memory in the memory system. Subsequently, when the data members are referenced in memory, more frequently referenced data members, including those that tend to be referenced at times close to each other, reside at neighboring locations in the memory system.
-
Citations
73 Claims
-
1-53. -53. (canceled)
-
54. One or more computer-readable media having computer-executable instructions for performing a method of arranging a plurality of data members of an object in a memory system, the method comprising:
-
identifying more frequently referenced data members out of the plurality of data members of the object by consulting profiling data for the object;
responsive to said identifying the more frequently referenced data members out of the plurality of data members of the object, grouping the more frequently referenced data members out of the plurality of data members of the object together into a group of more frequently referenced data members; and
responsive to said grouping the more frequently referenced data members into a group, assigning the data members from the group of more frequently referenced data members neighboring locations within the memory system. - View Dependent Claims (55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68)
-
-
69. One or more computer-readable media having computer-executable instructions for performing a method for optimizing the data layout of software comprising a set of object class definitions, the method comprising:
-
instrumenting the software to generate profile data indicating how frequently data members of the object class definitions are referenced in memory;
grouping the data members of the object class definitions into groups according to how frequently the data members of the object class definitions are referenced in memory, wherein the groups comprise a more frequently referenced group and a less frequently referenced group;
associating metadata indicative of the groups with the set of object class definitions; and
at runtime, consulting the metadata indicative of the groups to determine how to arrange the data members within memory, placing the data members in the more frequently referenced group in a first unit of memory and the data members in the less frequently referenced group in a second unit of memory separately loadable from the first unit of memory into primary memory. - View Dependent Claims (70, 71)
-
-
72. One or more computer-readable media having computer-executable instructions for performing a method of monitoring affinity among a plurality of data members of an object class in a memory system, the method comprising:
-
constructing a table indicating how many times data members of the object were referenced during each of a plurality of time periods during profiling;
computing an affinity matrix for the object class with a dot product operation, wherein the affinity matrix indicates an affinity between a first data member of the object and a second data member of the object; and
displaying the affinity matrix as a graph for consideration by a user. - View Dependent Claims (73)
-
Specification