Kernel Memory Allocation

How kernel memory is allocated and may be controlled in a vPar PA-RISC environment
1. If the change in size of the kernel does not cross a 64MB boundry, when the monitor
loads the new kernel (ie. on reboot of the vPar) it will load the new kernel back into the
same spot. Or at the very least it may not be the same spot but you are guaranteed that it
will fit because the size hasn’t crossed another 64MB boundry and the vPar owned
enough lower 2GB address space originally.
2. If the change in size of the kernel does cross a 64MB boundry and the vPar does own
more of the lower 2GB of memory (remember this can happen with the last vPar loaded),
then when the monitor tries to load the new kernel (ie. reboot the vPar) it will be able to
find enough contiguous lower 2GB memory to put the kernel in and it will load.
3. If the change in size of the kernel does cross a 64MB boundry and the vPar doesn't
own anymore of the lower 2GB of memory, when the monitor tries to load the new kernel
(ie. reboot the vPar) it will not have enough contiguous memory to put the kernel in and the
load will fail.
4. You will not be able to create new vPars without freeing up BOTH lower 2GB memory
for the new kernel as well as memory in general for the vPar’s environment.
B. What if a kernel change is needed on one of the vPars that is booted or you
want to create additional vPars and you have NOT used/assigned all the memory
in the system/nPar?
If you have NOT assigned all the memory to the vPars (i.e. you have unbound memory), then you
will by default have lower 2GB memory left over. In this case, the monitor will have unassigned
lower 2GB memory address space to give to a vPar's kernel that requires additional 64MB
contiguous chunks of memory. There will also be unassigned lower 2GB memory address space to
give to a new vPar’s kernel. However for a new vPar, remember you still need memory for the
vPar’s environment in addition to the lower memory for its kernel.
V. How to define memory for a vPar
In the simplest memory definition, you can specify an amount of memory in MB for a vPar. This allows the
monitor to assign the memory using its process as described above. However, in addition to an amount of
memory, you may specify a base and range of memory. This essentially tells the monitor to "reserve" a
specific address range of memory for a vPar. The amount of memory specified by address must be less
than or equal to the total amount of memory defined for the vPar. The advantage to specifying a range of
memory by address is that now you can explicitly assign a predetermined amount of memory within the
lower 2GB address range for each vPar and upper memory if you really want to.
VI. Possible Solutions
Now that we have defined what the “rules” are, how the monitor allocates memory, what the problem is,
and how the user can control memory assignments, let’s look at ways to minimize the problem from
occuring.
Page 3 of 5