Profile-driven data layout optimization
First Claim
1. One or more computer-readable media having computer-executable instructions for performing a method of splitting a class, the method comprising:
- specifying at least one threshold corresponding to a certain number of memory references made to at least one of a plurality of data members of an object;
specifying a proposed cold group via the at least one threshold;
receiving an indication of a policy according to a policy framework supporting a plurality of options and configured to determine whether or not the class is to be split based at least on the proposed cold group, wherein the policy overrides a default policy by specifying the policy for a particular class, wherein the policy specifies at least one selected from the group consisting of;
the class is split if the proposed cold group is bigger than a hot group overhead only, the class is split if the proposed cold group is bigger than a hot group overhead plus the proposed cold group overhead, and the class is split if the proposed cold group is bigger than a hot group overhead plus a fraction of the proposed cold group overhead;
assigning memory locations for data members for a hot group of the object within a first unit of memory in a virtual memory system;
assigning memory locations for data members for the proposed cold group of the object within a second unit of memory in the virtual memory system separately loadable into primary memory from the first unit; and
splitting the plurality of data members of the object into at least the hot group and the proposed cold group based at least in part upon the at least one threshold and profile data corresponding to the plurality of data members of the object and responsive to determining that the policy indicates that the class is to be split.
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.
42 Citations
6 Claims
-
1. One or more computer-readable media having computer-executable instructions for performing a method of splitting a class, the method comprising:
-
specifying at least one threshold corresponding to a certain number of memory references made to at least one of a plurality of data members of an object; specifying a proposed cold group via the at least one threshold; receiving an indication of a policy according to a policy framework supporting a plurality of options and configured to determine whether or not the class is to be split based at least on the proposed cold group, wherein the policy overrides a default policy by specifying the policy for a particular class, wherein the policy specifies at least one selected from the group consisting of;
the class is split if the proposed cold group is bigger than a hot group overhead only, the class is split if the proposed cold group is bigger than a hot group overhead plus the proposed cold group overhead, and the class is split if the proposed cold group is bigger than a hot group overhead plus a fraction of the proposed cold group overhead;assigning memory locations for data members for a hot group of the object within a first unit of memory in a virtual memory system; assigning memory locations for data members for the proposed cold group of the object within a second unit of memory in the virtual memory system separately loadable into primary memory from the first unit; and splitting the plurality of data members of the object into at least the hot group and the proposed cold group based at least in part upon the at least one threshold and profile data corresponding to the plurality of data members of the object and responsive to determining that the policy indicates that the class is to be split. - View Dependent Claims (2, 3, 4, 5, 6)
-
Specification