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