Extra Shared Memory

Overview

In NSX Advanced Load Balancer, there are various features that rely on database lookups. These features include IP reputation, L7 features dependent on a geographic database lookup, Bot Management, and GSLB site selection based on geolocation. These features need additional shared memory on the Service Engine to accommodate the requirements of these databases.

Similarly, GSLB, where many configuration objects are involved, requires some additional shared memory on the Service Engine. This article discusses the amount of additional shared memory required and the steps to configure additional shared memory.

Extra Shared Memory Requirements

The requirements for extra shared configuration memory depend on the features being used.

The additional memory requirement for each feature is shown below:

Feature Extra Shared Memory Required
IP reputation 40 MB
L7 features using GeoDB lookup 350 MB
Bot Management 600 MB (390 MB (=40 MB + 350 MB) for IP reputation and L7 GeoDB lookup)
GSLB using Geolocation 2000 MB
GSLB using any LB algorithm with 500-5000 GSLB Services 1000 MB
GSLB using any LB algorithm with greater than 5000 GSLB Services 2000 MB

If you are using more than one of these features simultaneously, then configure extra_shared_config_memory to be the sum of the requirements outlined above. However, as the Bot Management feature relies upon IP Reputation and L7 GeoDB lookup, the memory requirement of 600 MB already incorporates the 390 MB required for these two features.

Use the following examples to understand this further.

Example 1:
Using Bot Management and GSLB Geo Location with 1000 GSLB Services.

The breakup of extra shared memory to be configured is as follows:

Feature Extra Shared Memory Required
Bot Management 600 MB
GSLB using Geolocation 2000 MB
GSLB using load balancing algorithm with 1000 services 1000 MB
Total shared Memory to be configured 600 + 2000 + 1000 = 3600 MB

Example 2:
Using Bot Management, IP reputation, and GSLB Geo Location with lesser than 500 GSLB Services.

The breakup of extra shared memory to be configured is as follows:

Feature Extra Shared Memory Required
Bot Management 600 MB
IP reputation and GSLB Geo Location with <500 GSLB Services 2000 MB
Note: IP reputation requires 40 MB additional shared memory. Since this 40 MB is accounted for under Bot management, it can be excluded from the extra shared memory configuration. Therefore, only the shared memory of 2000 MB , required for GSLB geo- location is considered here.
Total shared Memory to be configured 600 + 2000 = 2600 MB

Configuring Extra-Shared Memory

In NSX Advanced Load Balancer, the configuration memory consists of two parts:

  • Heap: The memory allocation is dynamic. When a program needs memory at runtime (dynamically), it requests space from the heap. This memory is allocated and deallocated as needed during the program’s execution in general.
  • Shared: The memory allocation is fixed, and as the name implies, shared among multiple processes.

The shared memory can be adjusted through the extra extra_shared_config_memory knob under service engine group property which is shared resource across all virtual services on the Service engine.

Extra shared memory can be configured using the UI or the CLI.

This is an SE group-level property and is a shared resource across all virtual services on the Service engine.

Notes:

  • Allocating extra_shared_config_memory will reduce the memory available to the Service Engine for use by the connection table, buffers, and caching. This should be taken into account when determining the total memory allocated to the Service Engine.

  • This property takes effect only on SE boot up. Ensure that you reboot or restart the SE after configuring extra shared memory.

Configuring Using the UI

From the NSX Advanced Load Balancer UI,

  1. Navigate to Infrastructure > Cloud Resources > Service Engine Group.

  2. Under the Resources tab, select Enable Host Geolocation Profile. When this option is not selected the value of Extra Shared Config Memory is 0. On enabling this option, by default, the value of Extra Shared Config Memory is set to 2000 MB. However, this may not be sufficient depending on the use case.

  3. Specify the Extra Shared Config Memory value, as required.

    Extra Shared Config Memory

  4. Click Save.

  5. Reboot the SE for the configuration to take effect.

Configuring Using the CLI

To configure extra shared memory, use the CLI configuration shown below:


[admin:ctrl]: > configure serviceenginegroup demo_SEgroup

[admin:ctrl]: serviceenginegroup> extra_shared_config_memory 3600

Overwriting the previously entered value for extra_shared_config_memory

[admin:ctrl]: serviceenginegroup> save

Note: Reboot the SE for the configuration to take effect.