Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
1) While running tests with JFR we observe huge memory allocation pressure produced by:
Stack Trace TLABs Total TLAB Size(bytes) Pressure(%)
java.util.HashMap.newNode(int, Object, Object, HashMap$Node) 481 298 044 784 100
java.util.HashMap.putVal(int, Object, Object, boolean, boolean) 481 298 044 784 100
java.util.HashMap.put(Object, Object) 481 298 044 784 100
java.util.HashSet.add(Object) 480 297 221 040 99,724
org.apache.ignite.internal.processors.affinity.GridAffinityAssignment.initPrimaryBackupMaps() 1 823 744 0,276
org.apache.ignite.internal.processors.affinity.GridAffinityAssignment.<init>(AffinityTopologyVersion, List, List) 1 823 744 0,276
Allocation stats
Class Average Object Size(bytes) Total Object Size(bytes) TLABs Average TLAB Size(bytes) Total TLAB Size(bytes) Pressure(%)
java.util.HashMap$Node 32 15 392 481 619 635,726 298 044 784 32,876
java.lang.Object[] 1 470,115 461 616 314 655 019,236 205 676 040 22,687
java.util.HashMap$Node[] 41 268,617 6 149 024 149 690 046,067 102 816 864 11,341
java.lang.Integer 16 1 456 91 662 911,385 60 324 936 6,654
java.util.ArrayList 24 1 608 67 703 389,97 47 127 128 5,198
2) Also another hot place found
Stack Trace TLABs Total TLAB Size(bytes) Pressure(%)
java.util.ArrayList.grow(int) 7 5 766 448 9,554
java.util.ArrayList.ensureExplicitCapacity(int) 7 5 766 448 9,554
java.util.ArrayList.ensureCapacityInternal(int) 7 5 766 448 9,554
java.util.ArrayList.add(Object) 7 5 766 448 9,554
org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionTopologyImpl.nodes(int, AffinityTopologyVersion, GridDhtPartitionState, GridDhtPartitionState[]) 7 5 766 448 9,554
The reason of that is defail
I think we need to improve memory efficiency by switching from from Sets to BitSets
JFR attached, see Allocations in 12:50:28 - 12:50:29
Attachments
Attachments
Issue Links
- is a child of
-
IGNITE-10894 Reduce heap utilization for grids with big topologies and caches/partitions numbers.
-
- Open
-
- relates to
-
IGNITE-11395 GridAffinityAssignment should use list of node UUIDs instead of ClusterNodes
-
- Open
-
-
IGNITE-10925 Failure to submit affinity task from client node
-
- Resolved
-
- links to