The VolanoMark loopback test on an 8P system has idle CPU. The idle CPU may be attributed to having too small of an initial JVM heap size. The default initial JVM heap size is 8MB. Having too small of an initial heap size may result in more heap garbage collection (GC) and allocation failures (AF). Part of the JVM garbage collection is single threaded so this will result in idle time on an 8P system. We ran VolanoMark using different initial JVM heap sizes to determine if this would reduce idle time and improve throughput.
VolanoMark 2.1.2 10/100 loopback, 2.4.1 kernel, 2.4.1 MQ Scheduler patch, 8 CPUs, IBM JVM 1.2.2 (20011026)
(1) -verbosegc option used to obtain JVM stats for garbage collection (GC) and allocation failures (AF)
Increasing the client JVM initial heap from 8 MB to 64 MB reduced both GC and AF.
241 (15052-13416)/13416 = 12.2
% throughput increase w/ 64 MB heap, idle time decreased from 10.83 to
5.54 %
241MQ (38700-34124)/34124 = 13.4 % throughput
increase w/ 64 MB heap, idle time decreased from 24.17 to 14.29 %
Increasing the server JVM heap size provided slightly better throughput and slightly less idle time.
client GC/AF data
min max num
num msg
kernel heap heap
gc af sec
241 8
64 29 27
13329 ***
241 64
64 4
2 15165 ***
gc and af reduced ***
241 128
128 4 1
15683
241MQ 8
64 30 27
33993 ***
241MQ 64
64 5
2 38473 ***
gc and af reduced ***
241MQ 128
128 4 1
36229
Changing the min JVM heap sizes decreases the number GC and AF, thus reducing idle time and increasing throughput.
client data w/ server heap size of 8M and 64M
run
min max
msg
kernel num heap
heap user sys
idle sec
241 0
8 64
12.80 76.38 10.83 13416 ***
241 1
8 64
12.22 77.74 10.04 12987
241MQ 0 8
64 31.57 44.24 24.18
33867
241MQ 1 8
64 30.89 44.95 24.17
34124 ***
241 0
64 64 14.82
79.64 5.54 15052 ***
throughput increased and idle time reduced ***
241 1
64 64 15.14
78.97 5.89 14653
241MQ 0
64 64 34.76
50.26 14.99 38700 ***
throughput increased and idle time reduced ***
241MQ 1 64
64 34.99 50.72 14.29
38659
241 0
128 128 15.06
76.98 7.97 14902
241 1
--- --- -----
----- ----- -----
241MQ 0 128
128 36.43 50.34 13.23
35878
241MQ 1 128
128 38.37 47.31 14.32
34124
241 0
256 256 16.09
77.93 5.98 15503
241 1
256 256 15.52
78.89 5.59 15133
241MQ 0 256
256 37.53 45.30 17.17
35705
241MQ 1 256
256 35.62 50.43 13.95
36553
client data w/ server heap size of 128M and 128M
run
min max
msg
kernel num heap
heap user sys
idle sec
241 0
8 64
12.73 78.12 9.15 13316
241 1
8 64
13.49 77.37 9.14 12868
241MQ 0 8
64 31.08 43.99 24.93
33988
241MQ 1 8
64 32.27 45.16 22.57
32990
241 0
64 64 17.37
77.43 5.20 15656
241 1
64 64 14.57
80.27 5.16 15442
241MQ 0 64
64 35.44 52.11 12.46
40646 + 5.0 %
241MQ 1 64
64 36.14 50.20 13.67
37979
241 0
128 128 17.20
77.01 5.79 15740
241 1
128 128 17.27
77.37 5.37 16115
241MQ 0 128
128 37.78 49.97 12.25
36344
241MQ 1 128
128 37.81 49.20 12.99
36163
241 0
256 256 14.58
78.39 7.04 15249
241 1
256 256 16.78
78.39 4.83 15864
241MQ 0 256
256 28.18 36.78 35.04
37037 (stuck - idle time not correct)
241MQ 1 256
256 38.71 48.00 13.29
34311