vmguarpages: memory allocation guarantee.
This parameter controls how much memory is available to the Container (i.e. how much memory its applications can allocate by malloc(3) or other standard Linux memory allocation mechanisms). The more clients are served or the more "heavy" the application is, the more memory the Container needs.
The amount of memory that Container's applications are guaranteed to be able to allocate is specified as the barrier of the vmguarpages parameter. The vmguarpages parameter does not have its own accounting. The current amount of allocated memory space is accounted into another parameter - privvmpages described in the Secondary Parameters section. The meaning of the limit of the vmguarpages parameter is unspecified in the current version and should be set to the maximal allowed value (2,147,483,647 on 32-bit Intel-family processors).
Memory allocation requests made by applications are granted or denied basing on the following rules. If the current amount of the allocated memory does not exceed the guaranteed amount (the barrier of vmguarpages), the memory allocation requests always succeed. If the current amount exceeds the guarantee but stays below the barrier of the privvmpages parameter, allocations may or may not succeed, depending on the total amount of available memory in the system. Starting from the barrier of the privvmpages parameter, normal priority allocations and, starting from the limit, all memory allocations made by the applications fail.
As it can be seen, these rules involve 2 resource control parameters. The memory allocation guarantee (vmguarpages) is the primary tool for controlling the memory available to Containers. It allows administrators to provide Service Level Agreements — agreements guaranteeing certain quality of service, certain amount of resources and general availability of the service. privvmpages is a helper parameter, limiting memory allocations even when the system has spare resources.
The unit of measurement of vmguarpages values is memory pages (4KB on 32-bit Intel-family processors).
The total memory allocation guarantees given to Containers are limited by the physical resources of the server - the size of RAM and the swap space - as discussed in the Allocated Memory subsection.