Configuring memory for the storage services
You can configure memory limits and guarantees for the storage services at runtime by using the vinfra
tool. 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