Configuring memory policy for the storage services
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
The minimum
and 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:
Example 1 (cache size is within limits) |
Example 2 (cache size equals minimum) |
Example 3 (cache size equals maximum) |
|
---|---|---|---|
Total memory | 4 GiB | 4 GiB | 4 GiB |
Cache ratio | 0.5 | 0.1 | 0.9 |
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 vcmmd
, run:
# vcmmdctl list name type active guarantee limit swap cache <...> vstorage.slice/vstorage-services.sl… SRVC yes 1310720 24522132 0 1048576