This book contains performance benchmarks using the Sh Cache Microservice

Topics

Benchmark Scenarios and Methodology

Descriptions of each of the benchmark scenarios, and notes on the benchmark methodology used

Hardware and Software

Details of the hardware, software, and configuration used for the benchmarks

Benchmark Results

Summaries of the benchmarks and links to detailed metrics.

Other documentation for the Sh Cache Microservice can be found on the Sh Cache Microservice product page.

Benchmark Scenarios and Methodology

This page describes the methodology used when running the benchmarks.

Rationale

The benchmark was performed using a real Sh Cache Microservice, and simulated network functions. The simulated network functions were run on separate hosts from the Sh Cache Microservice. The network functions (HSS, VoLTE, IP-SM-GW) were simulated to abstract away performance considerations for these functions. A real replicated Cassandra database was used, as simulating this effectively is impractical.

The benchmark was run at the maximum sustainable load level for the SH Cache Microservice node. In this configuration there is no tolerance for node failure, any additional incoming messages will be dropped. To allow for node failure, additional nodes need to be added to provide an acceptable margin (an N+K configuration).

Test setup

20 minutes of ramp up allows for the cache to reach a steady state. At this point data is expiring from the cache as fast as it is being replaced, due to a custom cache retention period. Additionally, this allows the majority of JIT compilation to occur before full load is reached. The JIT compiler compiles Java bytecode to machinecode, and recompiles code on the fly to take advantage of optimizations not otherwise possible. This dynamic compilation and optimization process takes some time to complete. During the early stages of JIT compilation/optimization, the node cannot process full load. At this point, the node is ready to enter full service.

The tests are run for two hours after reaching full load. Load is not stopped between ramp up and starting the test timer.

Scenarios

For the benchmark we used 5 scenarios representing common requests made to the SH Cache Microservice. The SH Cache Microservice implements a REST API for interaction with VoLTE and IP-SM-GW. All scenarios are written assuming no errors occur, and every request recieves a 200 response. Each of the 5 scenarios were assigned a data pool of 200,000 unique subscribers to ensure that there is a meaningful amount of data to cache.

GET MMTel-Services

The client-ShCM scenario makes two GET requests for the MMTEL-Services transparent data XML document. Two requests are made to guarantee that there will be a cache hit on the second request. The first request may or may not be a cache hit.

In the case of a cache miss, the SH Cache Microservice will send a User Data Request to the HSS to populate the cache.

GET MSISDN

The client-ShCM scenario makes two GET requests for the MSISDN. Two requests are made to guarantee that there will be a cache hit on the second request. The first request may or may not be a cache hit.

In the case of a cache miss, the SH Cache Microservice will send a User Data Request to the HSS to populate the cache.

PUT MMTel-Services

The client-ShCM scenario makes a PUT request, with a new MMTEL-Services transparent data XML document, and a GET request for the same information.

The SH Cache Microservice will send a Profile Update Request to the HSS for every PUT request.

PUT STN-SR

The client-ShCM scenario makes a PUT request, with a new Sh-IMS-Data document containing a new STN-SR, and a GET request for the same information.

The SH Cache Microservice will send a Profile Update Request to the HSS for every PUT request.

Ue-Reachability Subscribe

The client-ShCM scenario makes a POST request, subscribing to an IMPU for UE IP reachability updates. This triggers a Subscribe Notifications Request to the HSS for every POST.

Hardware and Software

This page describes the hardware and software used when running the benchmarks.

Hardware

All machines used for benchmarking are provided by Amazon’s EC2 public cloud. We use exclusively c5.xlarge instances as described here. The c5.xlarge instance type has 4 vCPU (hardware threads) and 8 GiB of ram, with up to 10 Gbps networking. Of particular note here, there are two generations of Intel hardware which may be used for any instance, entirely at Amazon’s discretion.

Software

Software Version

Sh Cache Microservice

4.0.0.1

Rhino TAS - Telecom Application Server

3.0.0.5

Apache Cassandra

3.11.2

Java

Oracle Corporation OpenJDK 64-Bit Server VM 11.0.4+11-LTS

Sh Cache Microservice configuration

The Sh Cache Microservice configuration is modified from the out-of-the-box install. Cache lifetimes have been reduced to 20 minutes from 24 hours to allow data to move in and out of the cache during the test. Addresses of the various simulated network elements have been configured as well. Some customization of Rhino and JVM configuration is required to be suitable for the Sh Cache Microservice application. These are detailed below.

JVM Parameters
Parameter Value

-Xmx

6144M

-Xms

6144M

-XX:MaxNewSize

1536M

-XX:NewSize

1536M

Rhino Parameters
Parameter Value

Staging Threads

150

Staging queue size

5000

MemDB committed size

400MB

io.netty.leakDetectionLevel

advanced

Benchmark Results

Call rate

The benchmark was run at the maximum sustainable load level for the Sh Cache Microservice. In this configuration there is no tolerance for node failure, any additional incoming messages will be dropped. To allow for node failure, additional nodes need to be added to provide an acceptable margin (an N+K configuration).

The benchmark is run at 700 sessions per second split unevenly across all scenarios. Scenarios are weighted unequally to mimic the GET heavy workload expected of the Sh Cache Microservice. We expect a GET heavy workload, as the TAS does multiple SH GET queries for many call flows. HSS writes (and resulting PUTs/POSTs) are comparatively rare.

Scenario

Percentage

GET MMTel-Services

35%

GET MSISDN

35%

PUT MMTel-Services

10%

PUT STN-SR

10%

Ue-Reachability Subscribe

10%

Scenario latencies

Scenario 50th percentile 75th percentile 90th percentile 95th percentile 99th percentile

get-mmtel-services

7.3ms

17.1ms

66.3ms

155.4ms

325.8ms

get-msisdn

6.1ms

17.2ms

66.5ms

156.5ms

326.1ms

put-mmtel-services

7.5ms

22.8ms

73.3ms

164.1ms

336.6ms

put-stn-sr

6.5ms

20.8ms

70.6ms

162.2ms

333.2ms

ue-reachability-subscribe

3.0ms

11.9ms

59.4ms

146.3ms

320.9ms

Detailed metrics

Rhino CPU usage

Rhino heap usage

Scenario latencies

get-mmtel-services
get-msisdn
put-mmtel-services
put-stn-sr
ue-reachability-subscribe