Memory Reservation Pools in Oracle Solaris 11.4 SRU1
There is a rare sitation that prohibits you to boot or reboot a Kernel Zone. In order to happen, you need to have a massively loaded system and a lot is going on on your system. The problem is, that you don’t have enough memory in a way the Solaris Kernel Zones can use. Furthermore: You may remember that the documentation suggests to set the
user_reserve_hint_pct parameter in order to ensure that a ZFS ARC can’t grow that large, that you can’t start the kernel zone.
In order to improve on both situations and make the first phenomenon even more rare than it is currently, a new feature was introduced into Solaris 11.4. It’s called memory reservation pools (MRP). However you can’t use them in the generally available image, as it was introduced with SRU1 and is thus an example of our policy to deliver new features with SRU as well. So, you need access to the SRU in order to try and use this feature.
The basic idea is simple: You reserve memory very early while booting and afterwards you can tell a kernel zone not to allocate its memory from the general memory, but from this reserved pool of memory.
How do you configure it?
It’s quite simple to use. However let us check first the current memory situation.
MRP are controlled by an SMF service. Thus we configure it with some
When you check for the memory situation again, you will see a new line in the output:
The size of the reserved pool can be changed without an reboot
Okay, you have reserved some memory, but how do you use it? The only consumer for such reserved memory are kernel zones, thus you configure its use in the zone configuration.
That’s pretty much all. In the
memory-reserve property you have to enter the name of the instance of the
svc:/system/memory-reserve service that created the MRP , thus when using the default
svc:/system/memory-reserve:zones the MRP name you have to use is
The best practive is from now on, that you don’t use
user_reserve_hint_pct to ensure that enough memory is free for Kernel Zones, but by using memory reservation pools.
Do you want to learn more?
support.oracle.com - Oracle Solaris 188.8.131.52.0 Support Repository Update (Oracle Solaris 11.4 SRU 1.4.0) (Doc ID 2449090.1)