The goal of this benchmark is to measure the memory footprint of the indexes the space maintains to boost read/take operations when searching for matching objects.
This should help users to plan the amount of memory to allocate when doing their capacity planning prior deploying the application.
See blow the final Conclusions and the detailed report:
– XAP 6.6 consumes less memory compared to XAP 6.5 with indexed data.
– XAP 6.6 consumes about 85 bytes less per index value with 32 bit JVM and 150 bytes less per index value with 64 bit JVM.
– The footprint reduction is increased when having more indexed fields defined. With a single indexed field the footprint reduction is 15% per object. With every additional indexed field the additional reduction is about 5%.
– With 4 indexed fields the footprint reduction with 6.6 is close to 30%. For 200,000 objects stored within the space it translated to 67 MB less memory used where the original footprint with XAP 6.5 was 227 MB when using 32 JVM. With 64 bit JVM the footprint reduction is 111 MB less where the original footprint was 414 MB (27% reduction).
– 64 bit JVM consumes about 80% additional memory per object compared to 32 bit JVM.
– No major footprint difference observed between 64 1.5 JVM and 64 1.6 JVM.
– XAP 6.6 does not provide any footprint reduction with the space entry object raw data storage footprint.
Detailed report
The indexes are used when a client application performs a query or regular template matching where the space engine using indexed fields data to construct the candidate list of objects to perform the matching phase.
The indexes are updated with write , take and update space operations. An index includes the indexed value and references to the objects that stores the object data. To allow concurrent access to the index, the index object includes some additional objects that ensure the index will be locked in the relevant cases. These objects will determine the footprint of the indexes.
The benchmark had 5 types of classes tested:
– 4 fields – no indexes. Control group.
– 4 fields – 1 indexed field: String type
– 4 fields – 2 indexed fields: String and Integer
– 4 fields – 3 indexed fields: String , Integer , Long
– 4 fields – 4 indexed fields: String , Integer , Long and Double
The benchmark compared XAP 6.5 and 6.6 which went through some changes with its index structure that improved its footprint. With this benchmark each object has a unique value – i.e. each index has only one object associated with.
Shay