The 2G Line
One of the restrictions of the CP 64-bit support is that most data referenced by CP are required to be below the 2G line. 1 In addition to CP's own code and control blocks, this also includes most data that CP needs to reference in the virtual machine address spaces. This includes I/O buffers, IUCV parameter lists, and the like. When CP needs to reference a page that resides in a real storage frame that is above the 2G line, CP, when necessary, dynamically relocates that page to a frame that is below the 2G line.
This process normally has little effect on performance because the pages that need to be below the line are quickly relocated there and they tend to remain there. However, if there is enough demand for frames below the line, pages that had been moved below the line later have to be paged out in order to make room for other pages that must have frames below the line and get paged back in, often above the 2G line, when they are next referenced. This repeated movement of pages can result in degraded performance. The most likely scenario where this problem could develop is when a large percentage of the frames below the 2G line are taken up by a large V=R area.
Measurements were obtained in environments with progressively fewer frames available below the 2G line in order to better understand CP performance as this thrashing situation is approached and to provide some guidance on how many below-the-line frames tend to be required per CMS user.
The measured system was a 2064-109 LPAR, configured with 2 dedicated processors, 3G of real storage, and 1G of expanded storage. See page for I/O subsystem and virtual machine configuration details. The amount of the 3G of real storage actually used by CP was controlled by means of the STORE=nnnnM IPL parameter. Through the use of appropriately chosen STORE sizes and V=R area sizes, five measurement configurations were created where the total amount of available real storage was held constant at 1G and the amount of available real storage that resided below the 2G line were 1G, 0.5G, 0.25G, 0.2G, and 0.1G.
Each measurement was made with 3420 CMS1 users. The real storage minidisk cache size and the expanded storage minidisk cache size were each set to a fixed size of 100M in order to eliminate minidisk cache size as a variable affecting the results. Measurements were successfully completed for the first 4 configurations. The 0.1G configuration was too small and the system was not able to log on all of the users (the system stayed up but entered a "soft hang" situation due to severely degraded performance). The results are summarized in the following two tables. Table 1 shows the absolute results, while Table 2 shows the results relative to the 1G below-the-line base case.
Table 1. 2G Line Constraint Experiment
Available Storage < 2G Run ID | 1G 72CC3422 | 0.5G 72CC3423 | 0.25G 72CC3424 | 0.2G 72CC3425 |
---|---|---|---|---|
Response Time TRIV INT NONTRIV INT TOT INT TOT INT ADJ AVG FIRST (T) AVG LAST (T) |
|
|
|
|
Throughput AVG THINK (T) ETR ETR (T) ETR RATIO ITR (H) ITR EMUL ITR ITRR (H) ITRR |
|
|
|
|
Proc. Usage PBT/CMD (H) PBT/CMD CP/CMD (H) CP/CMD EMUL/CMD (H) EMUL/CMD |
|
|
|
|
Processor Util. TOTAL (H) TOTAL UTIL/PROC (H) UTIL/PROC TOTAL EMUL (H) TOTAL EMUL MASTER TOTAL MASTER EMUL TVR(H) TVR |
|
|
|
|
Storage NUCLEUS SIZE (V) TRACE TABLE (V) WKSET (V) PGBLPGS PGBLPGS/USER TOT PAGES/USER (V) FREEPGS FREE UTIL SHRPGS 2GPAGES/USER 2GMOVES/SEC |
|
|
|
|
Paging READS/SEC WRITES/SEC PAGE/CMD PAGE IO RATE (V) PAGE IO/CMD (V) XSTOR IN/SEC XSTOR OUT/SEC XSTOR/CMD FAST CLR/CMD |
|
|
|
|
Queues DISPATCH LIST ELIGIBLE LIST |
|
|
|
|
I/O VIO RATE VIO/CMD RIO RATE (V) RIO/CMD (V) NONPAGE RIO/CMD (V) DASD RESP TIME (V) MDC REAL SIZE (MB) MDC XSTOR SIZE (MB) MDC READS (I/Os) MDC WRITES (I/Os) MDC AVOID MDC HIT RATIO |
|
|
|
|
PRIVOPs PRIVOP/CMD DIAG/CMD DIAG 04/CMD DIAG 08/CMD DIAG 0C/CMD DIAG 14/CMD DIAG 58/CMD DIAG 98/CMD DIAG A4/CMD DIAG A8/CMD DIAG 214/CMD DIAG 270/CMD SIE/CMD SIE INTCPT/CMD FREE TOTL/CMD |
|
|
|
|
TCPIP Machine WKSET (V) TOT CPU/CMD (V) CP CPU/CMD (V) VIRT CPU/CMD (V) DIAG 98/CMD (V) |
|
|
|
|
Note: 2064-109; LPAR; 2 dedicated processors; LPAR storage: 3G central, 1G expanded; available real storage: 1G; 3420 CMS1 users; External TPNS; T=TPNS, V=VMPRF, H=Hardware Monitor, Unmarked=RTM |
Table 2. 2G Line Constraint Experiment - Ratios
Available Storage < 2G Run ID | 1G 72CC3422 | 0.5G 72CC3423 | 0.25G 72CC3424 | 0.2G 72CC3425 |
---|---|---|---|---|
Response Time TRIV INT NONTRIV INT TOT INT TOT INT ADJ AVG FIRST (T) AVG LAST (T) |
|
|
|
|
Throughput AVG THINK (T) ETR ETR (T) ETR RATIO ITR (H) ITR EMUL ITR |
|
|
|
|
Proc. Usage PBT/CMD (H) PBT/CMD CP/CMD (H) CP/CMD EMUL/CMD (H) EMUL/CMD |
|
|
|
|
Processor Util. TOTAL (H) TOTAL UTIL/PROC (H) UTIL/PROC TOTAL EMUL (H) TOTAL EMUL MASTER TOTAL MASTER EMUL TVR(H) TVR |
|
|
|
|
Storage WKSET (V) PGBLPGS/USER TOT PAGES/USER (V) FREEPGS FREE UTIL SHRPGS 2GPAGES/USER |
|
|
|
|
Paging READS/SEC WRITES/SEC PAGE/CMD PAGE IO RATE (V) PAGE IO/CMD (V) XSTOR IN/SEC XSTOR OUT/SEC XSTOR/CMD FAST CLR/CMD |
|
|
|
|
Queues DISPATCH LIST |
|
|
|
|
I/O VIO RATE VIO/CMD RIO RATE (V) RIO/CMD (V) NONPAGE RIO/CMD (V) DASD RESP TIME (V) MDC REAL SIZE (MB) MDC XSTOR SIZE (MB) MDC READS (I/Os) MDC WRITES (I/Os) MDC AVOID MDC HIT RATIO |
|
|
|
|
PRIVOPs PRIVOP/CMD DIAG/CMD DIAG 04/CMD DIAG 08/CMD DIAG 0C/CMD DIAG 14/CMD DIAG 58/CMD DIAG 98/CMD DIAG A4/CMD DIAG A8/CMD DIAG 214/CMD DIAG 270/CMD SIE/CMD SIE INTCPT/CMD FREE TOTL/CMD |
|
|
|
|
TCPIP Machine WKSET (V) TOT CPU/CMD (V) CP CPU/CMD (V) VIRT CPU/CMD (V) DIAG 98/CMD (V) |
|
|
|
|
Note: 2064-109; LPAR; 2 dedicated processors; LPAR storage: 3G central, 1G expanded; available real storage: 1G; 3420 CMS1 users; External TPNS; T=TPNS, V=VMPRF, H=Hardware Monitor, Unmarked=RTM |
The results show increasing CP overhead (CP/CMD (H)) as the amount of storage below the 2G line is decreased from 1G to 0.2G but this effect is relatively small. Relative to the 1G base case, CP/CMD (H) increased by 8.4% for the most constrained environment, resulting in a 2.4% decrease in internal throughput (ITR (H)). This workload didn't run with only 0.1G below the 2G line so these results indicate that the adverse performance effects are small until the amount of available storage below 2G gets close to the system thrashing point.
A count of pages moved below the line has been added in z/VM 3.1.0 to the CP monitor data. This is field SYTRSP_PLSMVB2G, located in domain 0 record 4. This count, expressed as pages moved per second, is shown in the Storage section of Table 1 as 2GMOVES/SEC. It is interesting to note that 2GMOVES/SEC is 0 with 1G available below the 2G line, then increases to 659/second with 0.5G, but then does not increase substantially after that. This is analogous to the curve of paging as a function of decreasing storage size. With enough storage, everything fits into memory and there is no paging. This is followed by a transition where an ever larger percentage of each user's working set has to be paged back in when that user becomes active again after think time, followed by a plateau representing the situation where all of a user's pages have been paged out by the time that user becomes active again and have to be paged back in. When available storage becomes sufficiently small, the paging rate rises very steeply as the system starts thrashing the pages required by the active users. The existence of this plateau where PGMOVES/SEC is not very sensitive to decreasing frames below the 2G line decreases your ability to use this value to predict how close the system is operating to the thrashing point. On the other hand, if the page move rate is near zero, you know that the system is not anywhere close to the thrashing point.
Another value called 2GPAGES/USER has also been added to the Storage section of the results tables. It is calculated as the total number of available page frames below the 2G line divided by the number of CMS1 users (3420). Using this number, we can see that, for this workload, somewhere between 38 and 77 frames per user are needed below the 2G line in order to avoid all page move processing. This can be reduced to 19 frames per user without much effect on system performance, but the system hits the thrashing point somewhere between 19 and 15 frames per user.
Footnotes:
- 1
- Also sometimes referred to as the 2G bar.