[CONTROLLER-1908] Deduplicate NodeIdentifierWithPredicate/LeafNode values from incoming streams Created: 26/Aug/19 Updated: 20/Nov/19 Resolved: 05/Nov/19 |
|
| Status: | Resolved |
| Project: | controller |
| Component/s: | clustering |
| Affects Version/s: | None |
| Fix Version/s: | Magnesium, Sodium SR1, Neon SR3 |
| Type: | Improvement | Priority: | High |
| Reporter: | Robert Varga | Assignee: | Robert Varga |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Description |
|
Heap dump analysis of an OFP-centric datastore snapshot shows we are have duplicate strings retained from MapNodes - one String is retained from NodeIdentifierWithPredicates, the other one is retained from the corresponding leaf. The same is probably true for LeafSetNodes and their NodeWithValue keys. While these duplicates are small in each instance (40-100 bytes each), there are 1.4M MapEntry nodes in the dump and strings are accounting for 18% of the allocated heap - thus we should attempt to de-duplicate them while restoring the data stream. |
| Comments |
| Comment by Robert Varga [ 27/Aug/19 ] |
|
This reduces memory footprint from 895MiB to 853MiB (-42MiB, 4.7%) by eliminating ~646K retained objects. |