5.5.4. Assigning of a Shared Processor Pool

In order to demonstrate the limitation of the processor utilization through a shared processor pool, we started a small benchmark program on 2 LPARs in parallel, see figure 5.13. Both LPARs are configured with 4 virtual processors, an entitlement of 0.4 and a weight of 100:

$ lpar lsproc lpar1 lpar2
            PROC         PROCS           PROC_UNITS                        UNCAP   PROC   
LPAR_NAME  MODE    MIN  DESIRED  MAX  MIN  DESIRED  MAX  CURR_SHARING_MODE WEIGHT  POOL
lpar1      shared  1    4        8    0.1  0.4      2.0  uncap             100   DefaultPool
lpar2      shared  1    4        8    0.1  0.4      2.0  uncap             100  DefaultPool
$

The same benchmark program was started on both LPARs at about the same time. The graphic in figure 5.13 shows that both LPARs together utilize up to 8 complete processors (cores).

Processor utilization by 2 LPARs without shared processor pool
Figure 5.13: Processor utilization by 2 LPARs without shared processor pool

By using a shared processor pool, the processor utilization of the two LPARs should be limited to a maximum of 2 processors (cores). For this we configure the previously unused SharedPool02 pool with a maximum pool capacity of 2 processors (cores) and at the same time rename the pool to benchmark:

$ ms chprocpool ms11 SharedPool02 new_name=benchmark max_pool_proc_units=2
$

Overall, we have the following shared processor pools:

$ ms lsprocpool ms11
MS_NAME  PROCPOOL     ID  EC_LPARS  RESERVED  PENDING  ENTITLED  MAX
ms11  DefaultPool  0   1.20      -         -        1.20      -
ms11  testpool     1   0.00      0.00      0.00     0.00      2.00
ms11  benchmark    2   0.00      0.00      0.00     0.00      2.00
$

Next we assign the two LPARs from above to the shared processor pool benchmark. The command to do this is “lpar chprocpool” (change processor pool):

$ lpar chprocpool lpar1 benchmark
$ lpar chprocpool lpar2 benchmark
$

With the “ms lsprocpool” command, the LPARs assigned to a pool can be displayed by using the “-l” (list LPARs) option:

$ ms lsprocpool -l ms11
               PROCPOOL           LPAR                PROCPOOL       
MS_NAME  NAME         ID  NAME   ID  EC    RESERVED  ENTITLED  MAX
ms11  DefaultPool  0   lpar3  5   0.40  -         -         -
ms11  DefaultPool  0   -      -   0.40  -         0.40      -
ms11  testpool     1   -      -   0.00  0.00      0.00      2.00
ms11  benchmark    2   lpar1  3   0.40  -         -         -
ms11  benchmark    2   lpar2  4   0.40  -         -         -
ms11  benchmark    2   -      -   0.80  0.00      0.80      2.00
$

In the output for the shared processor pool benchmark you can see that there are 2 assigned LPARs, lpar1 and lpar2, and that they each have an entitlement of 0.40, which makes a total of 0.80. The shared processor pool has a maximum pool capacity of 2.00 (column MAX).

We repeat the benchmark run on both LPARs. The resulting processor usage is shown in figure 5.14:

Processor utilization by 2 LPARs with shared processor pool
Figure 5.14: Processor utilization by 2 LPARs with shared processor pool

You can clearly see that the maximum pool capacity (red line) is not exceeded. The two LPARs each receive an average of around 1.0 processing units. It can also be clearly seen that the runtime of the benchmark has now increased significantly.

Note: The assignment of an LPAR to a shared processor pool can be changed without an active RMC connection between the LPAR and the HMCs.