HiperSockets
Starting with the z/900 Model 2064, z/Architecture provides a new type of I/O device called HiperSockets. As an extension to the Queued Direct I/O Hardware Facility, HiperSockets provides a high-bandwidth method for programs to communicate within the same logical partition (LPAR) or across any logical partition within the same Central Electronics Complex (CEC) using traditional TCP/IP socket connections.VM Guest LAN support, also in z/VM 4.2.0, provides the capability for a VM guest to define a virtual HiperSocket adapter and connect it with other virtual network adapters on the same VM host system to form an emulated LAN segment. While real HiperSockets support requires a z/800 or z/900, VM Guest LAN support is available on G5 and G6 processors as well.
This section summarizes the results of a performance evaluation of TCP/IP VM comparing the new HiperSockets and Guest LAN support with existing QDIO, IUCV and VCTC support.
Methodology: An internal tool was used to drive request-response (RR), connect-request-response (CRR) and streaming (S) workloads. The request-response workload consisted of the client sending 200 bytes to the server and the server responding with 1000 bytes. This interaction lasted for 200 seconds. The connect-request-response workload had the client connecting, sending 64 bytes to the server, the server responding with 8K and the client then disconnecting. This same sequence was repeated for 200 seconds. The streaming workload consisted of the client sending 20 bytes to the server and the server responding with 20MB. This sequence was repeated for 400 seconds.
Each workload was run using IUCV, VCTC, HiperSockets, Guest LAN and QDIO connectivity at various MTU sizes. For IUCV, VCTC and QDIO 1500 and 8992 MTU sizes were chosen. For HiperSockets and Guest LAN 8K, 16K, 32K and 56K MTU sizes were used. For HiperSockets, the Maximum Frame Size (MFS) specified on the CHPID definition is also important. The MFS defined for the system were 16K, 24K, 40K and 64K and are associated with MTU sizes of 8K, 16K, 32K and 56K respectively. All measurements included 1, 5, 10, 20 and 50 client-server pairs. The clients and servers ran on the same VM system with a TCPIP stack for the clients and a separate TCPIP stack for the servers.
The measurements were done on a 2064-109 in an LPAR with 2 dedicated processors. The LPAR had 1GB central storage and 2GB expanded storage. APARs VM62938 and PQ51738, which enable HiperSockets support, were applied. CP monitor data was captured during the measurement run, and reduced using VMPRF.
Specifying DATABUFFERLIMITS 10 10 in the TCPIP configuration file helped to increase the throughput. It was also necessary to specify 65536 for DATABUFFERPOOLSIZE and LARGEENVELOPEPOOLSIZE to support the larger MTUs.
Results: The following charts show, for each workload (RR, CRR and streaming), throughput and CPU time. Each chart has a line for each connectivity/MTU pair measured. Throughput for all cases shows generally the same trend of reaching a plateau and then trailing off. The corresponding CPU time, in general, shows the same pattern where time decreases until the throughput plateau is reached. As throughput trails off, the time increases showing we've passed the optimum point. Specific details are mentioned for each workload after the charts for that workload.
The CPU Time shows that while the legacy connectivity types (IUCV and VCTC) have basically the same time no matter how many client-server pairs are running, the others do gain efficiency as the number of connections increases until about 20 connections.
MTU size doesn't have much effect on throughput because of the small amount of data sent in the RR workload.
IUCV and VCTC have better throughput since they have been optimized for VM-to-VM communication whereas the other connectivity types have to support more than just the VM environment and therefore are not as optimized.
The throughput for all connectivity types plateaus at 10 users.
With the CRR workload, IUCV and VCTC have lost their advantage because they are not as efficient with connect and disconnect. The optimization done for moving data does not help as much with this workload.
The CPU times are greater for CRR than RR for the same reason (connect and disconnect overhead).
The plateau is reached between 5 and 10 users, depending on the connectivity type.
Guest LAN handles CRR more efficiently than the other types.
Figure 5. Streaming Throughput
The number of connections is not as significant for the streaming workload as it was for RR and CRR.
MTU size, however, does make a difference with this workload because of the large amounts of data being transferred. Bigger is better.
An anomaly was noted for the single user Guest LAN case when running with 56K MTU size. This is currently being investigated.
It is possible that IUCV and VCTC may do better than shown in this chart if an MTU size larger than 8992 is chosen.
The throughput and CPU time results for all runs are summarized in
the following tables (by connectivity type).
Table 1. Throughput and CPU Time: HiperSockets
MTU Size
8K
16K
32K
56K
Throughput (trans/sec)
RR1
RR5
RR10
RR20
RR50
852.06
1352.97
1508.20
1535.70
1351.26
856.69
1365.10
1595.59
1620.41
1462.30
877.11
1364.84
1656.22
1648.21
1486.11
913.99
1347.30
1646.97
1651.54
1542.31
CRR1
CRR5
CRR10
CRR20
CRR50
70.10
83.29
80.99
80.90
88.70
71.78
84.92
84.32
82.00
79.99
65.27
76.98
82.60
82.19
87.89
64.04
77.98
80.54
81.58
80.36
Throughput (MB/sec)
S1
S5
S10
S20
S50
27.45
30.10
29.90
28.27
28.93
38.63
46.46
45.98
44.17
40.71
60.40
69.33
65.19
57.36
52.07
70.43
72.86
67.49
62.72
53.25
CPU time (msec/trans)
RR1
RR5
RR10
RR20
RR50
1.83
1.46
1.29
1.15
1.24
1.83
1.45
1.20
1.07
1.14
1.81
1.45
1.15
1.02
1.12
1.82
1.47
1.15
0.99
1.08
CRR1
CRR5
CRR10
CRR20
CRR50
18.97
15.37
15.73
15.60
15.13
18.56
14.46
14.44
15.27
16.08
20.71
16.47
14.33
15.21
14.47
21.14
16.34
15.30
14.66
16.05
CPU time (msec/MB)
S1
S5
S10
S20
S50
61.86
53.89
51.64
52.92
54.61
45.41
36.50
36.45
37.49
39.65
31.13
27.23
27.76
30.65
33.99
26.44
24.43
25.16
26.75
31.70
Table 2. Throughput and CPU Time: Guest LAN
MTU Size
8K
16K
32K
56K
Throughput (trans/sec)
RR1
RR5
RR10
RR20
RR50
612.12
1352.50
1507.93
1530.21
1374.24
614.10
1349.25
1587.62
1596.38
1444.74
614.19
1359.39
1655.89
1654.49
1514.85
584.38
1293.02
1597.29
1602.41
1490.61
CRR1
CRR5
CRR10
CRR20
CRR50
68.67
77.30
77.70
76.63
75.67
67.94
78.08
83.21
81.45
80.30
68.15
81.55
84.43
82.26
80.74
72.35
90.44
91.54
86.51
84.42
Throughput (MB/sec)
S1
S5
S10
S20
S50
14.89
15.54
14.43
12.94
13.72
36.02
40.95
37.65
28.37
38.13
60.29
65.36
61.40
55.57
49.03
6.46
62.39
58.57
58.30
51.51
CPU time (msec/trans)
RR1
RR5
RR10
RR20
RR50
1.64
1.44
1.29
1.14
1.21
1.63
1.42
1.20
1.08
1.16
1.63
1.42
1.14
1.02
1.11
1.72
1.49
1.18
1.03
1.13
CRR1
CRR5
CRR10
CRR20
CRR50
16.75
14.67
14.62
14.80
15.09
19.52
16.19
14.49
15.32
16.21
19.52
15.92
14.43
15.15
15.88
18.38
14.13
13.63
14.75
15.28
CPU time (msec/MB)
S1
S5
S10
S20
S50
102.22
98.07
104.23
112.98
119.97
44.81
38.34
39.73
45.19
41.17
29.86
28.43
29.09
31.71
36.26
23.53
26.00
26.98
28.99
32.93
Table 3. Throughput and CPU Time: QDIO
MTU Size
1500
8992
Throughput (trans/sec)
RR1
RR5
RR10
RR20
RR50
594.29
1410.62
1631.10
1554.05
1527.24
596.85
1406.49
1625.78
1547.36
1527.62
CRR1
CRR5
CRR10
CRR20
CRR50
62.10
75.30
78.08
77.81
77.30
64.17
75.96
83.22
81.68
81.19
Throughput (MB/sec)
S1
S5
S10
S20
S50
40.76
28.65
29.54
30.44
28.62
64.32
74.45
72.62
64.46
59.22
CPU time (msec/trans)
RR1
RR5
RR10
RR20
RR50
1.68
1.32
1.09
0.94
1.05
1.68
1.33
1.10
0.94
1.05
CRR1
CRR5
CRR10
CRR20
CRR50
16.81
14.98
14.47
14.27
14.54
19.32
16.06
14.90
15.18
15.42
CPU time (msec/MB)
S1
S5
S10
S20
S50
43.23
45.45
48.75
52.76
59.89
28.64
26.46
26.47
29.23
31.17
Table 4. Throughput and CPU Time: IUCV
Throughput
MTU Size
1500
8992
Throughput (trans/sec)
RR1
RR5
RR10
RR20
RR50
1109.99
1985.96
2022.08
2159.24
1942.32
CRR1
CRR5
CRR10
CRR20
CRR50
66.79
78.60
78.61
81.81
75.98
Throughput (MB/sec)
S1
S5
S10
S20
S50
34.39
43.18
40.01
35.75
30.30
45.21
54.02
52.32
46.41
41.38
CPU time (msec/trans)
RR1
RR5
RR10
RR20
RR50
0.94
0.98
0.98
0.92
0.99
CRR1
CRR5
CRR10
CRR20
CRR50
18.84
17.02
18.06
18.68
20.87
CPU time (msec/MB)
S1
S5
S10
S20
S50
33.91
41.08
45.69
51.08
57.62
23.45
28.25
29.09
31.11
36.06
Table 5. Throughput and CPU Time: VCTC
MTU Size
1500
8992
Throughput (trans/sec)
RR1
RR5
RR10
RR20
RR50
1034.59
1933.19
1964.4
1990.4
1799.93
CRR1
CRR5
CRR10
CRR20
CRR50
71.51
84.05
78.25
81.12
80.71
Throughput (MB/sec)
S1
S5
S10
S20
S50
40.58
47.12
46.19
43.30
36.35
48.21
57.36
56.14
49.48
44.94
CPU time (msec/trans)
RR1
RR5
RR10
RR20
RR50
0.99
1.03
1.01
0.99
1.04
CRR1
CRR5
CRR10
CRR20
CRR50
16.78
15.92
17.99
18.22
17.82
CPU time (msec/MB)
S1
S5
S10
S20
S50
37.11
39.86
41.44
44.16
52.27
27.01
30.20
29.96
32.34
36.63
Maximum Throughput Results: The maximum throughput for each workload is summarized in the following tables. MB/sec (megabytes per second), trans/sec (transactions per second) and response time were supplied by the workload driver and show the throughput rate. All other values are from CP monitor data or derived from CP monitor data.
Total_cpu_util
This field was obtained from the SYSTEM_SUMMARY_BY_TIME VMPRF report that shows the average of both processors out of 100%.
tot_cpu_util
This field is calculated from the USER_RESOURCE_UTILIZATION VMPRF report (CPU seconds, total) for the client stack (tcpip1), the server stack (tcpip2) and the driver clients and servers and gives the total system CPU utilization. 100% is the equivalent of one fully utilized processor.
virt_cpu_util
This field is calculated from the USER_RESOURCE_UTILIZATION VMPRF report (CPU seconds, Virtual) for the client stack (tcpip1), the server stack (tcpip2) and the driver clients and servers (nontcp). This result is the total virtual CPU utilization.
run+wait
This was calculated from the previous tot_cpu_util plus percent of time waiting on CPU as reported in USER_STATES VMPRF report for each stack (tcpip1 and tcpip2).
cpu_msec/trans
This field was calculated from the previous tot_cpu_util divided by the number of transactions per second (or number of megabytes per second for the streaming workload) to show the number of milliseconds of time per transaction.
Table 6. Maximum Throughput: Request-Response
Protocol
MTU size
Number of clients
runid
QDIO
1500
10
qnxr1072
HIPER
56K
20
h5xr2072
GUEST
32K
20
g3xr2071
vCTC
8992
20
vjxr2071
IUCV
8992
20
ijxr2071
MB/sec
trans/sec
response time (msec)
elapsed time (sec)
total_cpu_util
1.87
1631.10
6.13
150.00
89.30
1.89
1651.54
12.10
150.00
81.90
1.89
1654.49
12.08
150.00
84.00
2.28
1990.40
10.04
150.00
99.00
2.42
2116.14
9.44
150.00
99.20
tcpip1_tot_cpu_util
tcpip1_virt_cpu_util
tcpip1_run+wait
58.70
45.30
85.40
43.30
30.70
66.00
47.30
32.00
78.00
48.00
22.70
73.30
40.00
20.70
69.30
tcpip2_tot_cpu_util
tcpip2_virt_cpu_util
tcpip2_run+wait
35.30
22.00
48.60
32.70
19.30
47.40
34.70
19.33
66.70
47.30
22.70
76.60
40.70
20.70
59.40
nontcp_tot_cpu_util
nontcp_virt_cpu_util
80.00
67.33
80.00
80.00
80.00
80.00
106.67
80.00
106.67
106.67
cpu_msec/trans
emul_msec/trans
cp_msec/trans
1.09
0.86
0.24
0.99
0.76
0.23
1.02
0.76
0.25
0.99
0.67
0.33
0.94
0.67
0.26
tcpip1_cpu_msec/trans
tcpip1_vcpu_msec/trans
tcpip1_ccpu_msec/trans
0.36
0.28
0.08
0.26
0.19
0.08
0.14
0.10
0.05
0.24
0.11
0.13
0.19
0.10
0.09
tcpip2_cpu_msec/trans
tcpip2_vcpu_msec/trans
tcpip2_ccpu_msec/trans
0.22
0.13
0.08
0.20
0.12
0.08
0.10
0.06
0.05
0.24
0.11
0.12
0.19
0.10
0.09
nontcp_cpu_msec/trans
nontcp_vcpu_msec/trans
nontcp_ccpu_msec/trans
0.49
0.41
0.08
0.48
0.48
0.00
0.77
0.61
0.16
0.54
0.40
0.13
0.50
0.50
0.00
Both IUCV and vCTC attained 99% CPU utilization for this workload and therefore are gated by the available processors. IUCV had the best throughput with 2116.14 transactions a second.
The driver client virtual machines communicate with the TCPIP2 stack virtual machine. The driver server virtual machines communicate with the TCPIP1 stack virtual machine. All cases show that the driver clients and servers used a large portion of the resources available.
Table 7. Maximum Throughput: Connect-Request-Response
Protocol
MTU Size
Number of clients
runid
QDIO
8992
10
qjxc1071
HIPER
8K
50
h8xc5071
GUEST
56K
10
g5xc1073
vCTC
8992
05
vjxc0572
IUCV
8992
20
ijxc2072
MB/sec
trans/sec
response time (msec)
elapsed time (sec)
total_cpu_util
0.66
83.22
120.16
150.00
62.00
0.70
88.74
563.71
120.00
67.10
0.72
91.54
109.24
150.00
62.40
0.66
84.05
59.49
150.00
66.90
0.64
81.81
244.47
150.00
76.40
tcpip1_tot_cpu_util
tcpip1_virt_cpu_util
tcpip1_run+wait
88.70
87.30
98.00
85.80
84.20
92.50
86.70
84.70
89.40
84.70
82.70
99.40
92.70
91.30
100.70
tcpip2_tot_cpu_util
tcpip2_virt_cpu_util
tcpip2_run+wait
24.00
22.70
28.00
33.30
31.70
43.30
25.30
23.30
29.30
38.70
37.30
45.40
50.00
48.70
58.00
nontcp_tot_cpu_util
nontcp_virt_cpu_util
13.33
13.33
0.00
0.00
13.33
13.33
8.67
6.67
0.00
0.00
cpu_msec/trans
emul_msec/trans
cp_msec/trans
14.90
14.28
0.62
15.13
14.27
0.86
13.63
12.93
0.71
15.92
15.18
0.74
18.68
18.07
0.61
tcpip1_cpu_msec/trans
tcpip1_vcpu_msec/trans
tcpip1_ccpu_msec/trans
10.65
10.49
0.16
9.68
9.49
0.19
9.47
9.25
0.22
10.07
9.84
0.24
11.33
11.16
0.16
tcpip2_cpu_msec/trans
tcpip2_vcpu_msec/trans
tcpip2_ccpu/_msec/trans
2.88
2.72
0.16
3.76
3.57
0.19
2.77
2.55
0.22
4.60
4.44
0.16
6.11
5.95
0.16
nontcp_cpu_msec/trans
nontcp_vcpu_msec/trans
nontcp_ccpu_msec/trans
1.60
1.60
0.00
0.00
0.00
0.00
1.46
1.46
0.00
1.03
0.79
0.24
0.00
0.00
0.00
CRR throughput is less than RR throughput due to the overhead
of connect/disconnect.
Guest LAN seemed to handle the CRR workload the best.
The client stack appeared to be the limiting factor in all cases.
For all cases 90% of the time or greater the stacks were either
running or waiting for the CPU.
Since the stack design is based on a uni-processor model, it will
never be able to exceed 100% of one processor.
Table 8. Maximum Throughput: Streaming
Protocol
MTU Size
Number of clients
runid
QDIO
8992
05
qjxs0573
HIPER
56K
05
h5xs0573
GUEST
32K
05
g3xs0573
vCTC
8992
05
vjxs0573
IUCV
8992
05
ijxs0572
MB/sec
trans/sec
response time(msec)
elapsed time (sec)
total_cpu_util
74.45
3.72
1343.24
330.00
98.50
72.86
3.64
1372.57
330.00
89.00
65.36
3.27
1530.00
330.00
92.97
57.36
2.87
1743.30
330.00
86.61
54.02
2.70
1851.07
330.00
76.39
tcpip1_tot_cpu_util
tcpip1_virt_cpu_util
tcpip1_run+wait
93.00
70.30
96.00
92.10
70.00
99.40
91.50
59.40
98.20
60.30
26.10
77.90
48.50
26.10
60.00
tcpip2_tot_cpu_util
tcpip2_virt_cpu_util
tcpip2_run+wait
64.50
40.30
77.20
52.10
31.80
63.50
57.30
34.50
71.20
67.00
26.40
88.80
61.50
25.20
76.70
nontcp_tot_cpu_util
nontcp_virt_cpu_util
37.88
33.33
32.12
24.85
36.36
31.82
42.73
37.88
40.91
34.85
cpu_msec/MB
emul_msec/MB
cp_msec/MB
26.46
19.23
7.23
24.43
17.90
6.53
28.43
19.25
9.18
30.20
15.73
14.47
28.25
16.11
12.14
tcpip1_cpu_msec/MB
tcpip1_vcpu_msec/MB
tcpip1_ccpu_msec/MB
12.50
9.44
3.05
12.64
9.61
3.04
14.00
9.09
4.91
10.51
4.54
5.97
8.98
4.82
4.15
tcpip2_cpu_msec/MB
tcpip2_vcpu_msec/MB
tcpip2_ccpu_msec/MB
8.67
5.41
3.26
7.15
4.37
2.79
8.76
5.29
3.48
11.68
4.60
7.08
11.39
4.66
6.73
nontcp_cpu_msec/MB
nontcp_vcpu_msec/MB
nontcp_ccpu_msec/MB
5.09
4.48
0.61
4.41
3.41
1.00
18.18
15.91
4.59
7.45
6.60
0.85
7.57
6.45
1.12
QDIO was the winner for the streaming workload. For QDIO,
total system CPU utilization limited throughput.
For HiperSockets and Guest LAN, the client stack was the limiting
factor with more than 95% of the time either running or waiting on
the CPU.