You can configure memory limits and guarantees for the storage services at runtime by using the
vinfra memory-policy vstorage-services commands. You can do this for the entire cluster or a specific node.
The following memory parameters can be configured manually:
- Memory guarantee
- Swap size
- Page cache (which, in turn, is set using cache ratio, minimum, and maximum)
Page cache is calculated according to the following formula:
$PAGE_CACHE = minimum <= ratio * $TOTAL_MEMORY <= maximum
maximum values are hard limits that are applied if the
ratio * $TOTAL_MEMORY value is outside these limits.
To better understand how page cache size is calculated, consider the following examples:
(cache size is within limits)
(cache size equals minimum)
(cache size equals maximum)
|Total memory||4 GiB||4 GiB||4 GiB|
|Cache minimum||1 GiB||2 GiB||1 GiB|
|Cache maximum||3 GiB||3 GiB||3 GiB|
|Cache size||2 GiB||2 GiB||3 GiB|
If memory parameters are set both per node and per cluster, the per-node ones are applied. If no memory parameters are configured manually, the memory management is performed automatically by the
vcmmd daemon as follows:
- Each CS (for example, storage disk) requires 512 MiB of RAM for page cache.
- The page cache minimum is 1 GiB.
- If the total memory is less than 48 GiB, the page cache maximum is calculated as two-thirds of it.
- If the total memory is greater than 48 GiB, the page cache maximum is 32 GiB.
To check the current memory parameters for the storage services set by
# vcmmdctl list name type active guarantee limit swap cache <...> vstorage.slice/vstorage-services.sl… SRVC yes 1310720 24522132 0 1048576