Configuring and Migrating Memory on vPars
16
User Specified Ranges
The previous chapter described how the system administrator can specify the amount of memory, the
type and the locality required for the partition and let the vPars monitor choose the ranges that will be
part of the partition. Instead of letting the vPars monitor pick the ranges, the system administrator can
explicitly specify one or more address ranges, known as user specified ranges, within which all or a
portion of the requested memory should reside. This chapter describes when to use them, how to use
them and the side effects of using them.
The preferred way to bind memory to the partition is to let the vPars monitor choose the memory
range during boot and online add instead of explicitly binding it using user specified ranges as
described in this chapter. Explicit binding should only be done if there is a specific circumstance that
necessitates it. Following is one such example:
On PA-RISC platforms, the vPars monitor assigns one or more granules below 2 GB based on the
current size of the kernel. If later the kernel size
6
is increased significantly and rebooted, the vPars
monitor might not be able to find enough contiguous granules below 2 GB to fit the new kernel if all
the memory in the system is being used by active partitions. To avoid this problem, the user can
explicitly bind contiguous memory below 2 GB taking into account future kernel growth of the
partition. Note that each partition will require memory below 2 GB to boot. Hence, binding more
memory below 2 GB to one partition might make other partitions unable to boot.
The following provides the various syntaxes to add or delete memory ranges. Each range consists of
the starting address of the range and the size of the range and optional attribute to specify whether it
is base or floating. The default is base for add. For delete, the type is optional because the vPars
software can determine the type of the range based on the address range being deleted.
# vparcreate –p <vPar> .. –a mem:::<address>:<size>[:b|base|f|float] ..
# vparmodify –p <vPar> .. –a|-d mem:::<address>:<size>[:b|base|f|float] ..
For example, to create a partition with 1 GB of base ILM memory, 1 GB of floating ILM memory, and
then assign user specified base range of 512 MB at starting address 0x20000000 and user
specified floating range of 512 MB starting at starting address 0x100000000, the commands would
be:
# vparcreate –p vpar1 .. –a mem::1024 –a mem::1024:f ..
# vparmodify –p vpar1 .. –a mem:::0x20000000:512 –a mem:::0x100000000:512:f ..
The behavior of the user specified range depends on whether it is a non-live database or a down
partition or a live partition. The following lists some of the user specified range rules:
1. The size of the range must be a multiple of the granule size. Both end points of a range must be
aligned on a granule boundary.
2. When a partition is down or belongs to a non-live database, addition or deletion of a range
does not increase or decrease the amount of memory the partition owns. It only results in early
binding of the address range.
a. In the example above, if vpar1 is down, after the addition of a range, the total ILM
owned by the partition continues to be 1 GB base and 1 GB floating. When the
partition is booted, instead of binding granules for the whole 2 GB, the vPars monitor
will only bind granules for the remaining 512 MB base and 512 MB floating because
6
Refer to the HP-UX Virtual Partitions Administrator's Guide [4] Appendix C for details on how to determine kernel size.