Skip to main content

Redis Workload Profiles

The following profiles run customer-representative or benchmarking scenarios using the Memtier or Redis workloads against a Redis server.

Client/Server Topology Support

Redis workload profiles support running the workload on both a single system as well as in a client/server topology. This means that the workload supports operation on a single system or on 2 distinct systems. The client/server topology is typically used when it is desirable to include a network component in the overall performance evaluation. In a client/server topology, one system operates in the 'Client' role making calls to the system operating in the 'Server' role. The Virtual Client instances running on the client and server systems will synchronize with each other before running the workload. In order to support a client/server topology, an environment layout file MUST be supplied to each instance of the Virtual Client on the command line to describe the IP address/location of other Virtual Client instances. An environment layout file is not required for the single system topology.

In the environment layout file provided to the Virtual Client, define the role of the client system/VM as "Client" and the role of the server system(s)/VM(s) as "Server". The spelling of the roles must be exact. The IP addresses of the systems/VMs must be correct as well. The following example illustrates the idea. The name of the client must match the name of the system or the value of the agent ID passed in on the command line.

# Single System (environment layout not required)
./VirtualClient --profile=PERF-REDIS.json --system=Juno --timeout=1440

# Multi-System
# On Client Role System...
./VirtualClient --profile=PERF-REDIS.json --system=Juno --timeout=1440 --clientId=Client01 --layoutPath=/any/path/to/layout.json

# On Server Role System...
./VirtualClient --profile=PERF-REDIS.json --system=Juno --timeout=1440 --clientId=Server01 --layoutPath=/any/path/to/layout.json

# Example contents of the 'layout.json' file:
{
"clients": [
{
"name": "Client01",
"role": "Client",
"ipAddress": "10.1.0.1"
},
{
"name": "Server01",
"role": "Server",
"ipAddress": "10.1.0.2"
}
]
}

PERF-REDIS.json

Runs the Memtier workload against to generate various network traffic patterns against a Redis server. Although this is the default client workload the Redis benchmark itself can also be run to evaluate the performance of the Redis server. We have two profiles for Redis.One supports redis with TLS and one without TLS.

  • Workload Profile

  • Supported Platform/Architectures

    • linux-x64
    • linux-arm64
  • Supports Disconnected Scenarios

    • No. Internet connection required.
  • Dependencies
    The dependencies defined in the 'Dependencies' section of the profile itself are required in order to run the workload operations effectively.

    • Internet connection.
    • The IP addresses defined in the environment layout (see above) for the Client and Server systems must be correct.
    • The name of the Client and Server instances defined in the environment layout must match the agent/client IDs supplied on the command line (e.g. --agentId) or must match the name of the system as defined by the operating system itself.

    Additional information on components that exist within the 'Dependencies' section of the profile can be found in the following locations:

  • Profile Parameters
    The following parameters can be optionally supplied on the command line to modify the behaviors of the workload.

    ParameterPurposeDefault Value
    DurationOptional. Defines the length of time to execute the Memtier benchmark operations against the Redis servers for each scenario in the profile.2 mins
    ClientInstancesOptional. Defines the number of distinct client instances that to execute requests against each Redis server concurrently.1
    EmitAggregateMetricsOptional. "True" to emit aggregate/rollup metrics from all individual Memtier client/Redis server request streams. The profile executes a Redis server per logical processor on the system and can thus emit a lot of metrics. As such emitting the metrics as aggregates of all Redis server processes may be desirable.false
    EmitRawMetricsOptional. "True" to emit the raw metrics from each individual Memtier client/Redis server request stream. This is the default option..true
    ServerInstancesOptional. Defines the number of distinct Redis server instances to run concurrently. This allows the user to adjust alongside the number of client instances for higher scale situations.# logical processors
    ServerThreadCountOptional. The number of threads to use by the Redis server to handle operations.4
    ServerPortOptional. The initial port on which the Redis servers will listen for traffic. Additional ports will be used for each 1 server instance defined in a sequential manner (e.g. 6379, 6380, 6381)6379
    IsTLSEnabledOptional. It defines if Redis server runs with TLS or not. "True" for TLS, "False" for no TLSFalse
  • Component Parameters
    The following parameters describe the parameters within the profile components.

    Server Role ParameterPurposeDefault Value
    ScenarioScenario use to define the purpose of the action in the profile. This can be used to specify exact actions to run or exclude from the profile.
    BindToCoresTrue to instruct the Redis servers to bind to explicit cores on the system (e.g. 0, 1, 2, 3 )
    CommandLineThe command line to use for executing the Redis server.
    PackageNameThe name of the package that contains the Redis server binaries/scripts.
    PortThe initial port on which the Redis servers will listen for traffic. Additional ports will be used for each 1 server instance defined in a sequental manner (e.g. 6379, 6380, 6381)
    ServerInstancesThe number of distinct Redis server instances to run concurrently.# logical processors
    ServerThreadCountThe number of threads to use by the Redis server to handle operations.4
    UsernameRequired when Virtual Client itself is launched by any process running as 'root' (e.g. a daemon)

    Defines a specific username under which to run the Redis server.
    The user account for the process that launches Virtual Client.
    IsTLSEnabledIt defines if Redis server runs with TLS or not. "True" for TLS, "False" for no TLSFalse
    Client Role ParameterPurposeDefault Value
    ScenarioScenario use to define the purpose of the action in the profile. This can be used to specify exact actions to run or exclude from the profile.
    ClientInstancesDefines the number of concurrent Memtier processes to start for execution of requests against the Memcached server. Note that each client instance will open 1 connection against the server for each --thread and --clients definition (e.g. --threads 16 --clients 16 == 256 connections). Ensure the Memcached server OS limits exceed this number of connections (e.g. ulimit -Sn on Linux).8
    CommandLineThe command line to use for executing the Memtier workload against the Memcached server. Note that the --port and --server options will be added automatically by the executor. For the --key-pattern option, 'S' means sequential distribution, 'R' means uniform random distribution and 'G' means Gaussian distribution of object.
    EmitAggregateMetricsOptional. "True" to emit aggregate/rollup metrics from all individual Memtier client/Redis server request streams. The profile executes a Redis server per logical processor on the system and can thus emit a lot of metrics. As such emitting the metrics as aggregates of all Redis server processes may be desirable.false
    EmitRawMetricsOptional. "True" to emit the raw metrics from each individual Memtier client/Redis server request stream. This is the default option.true
    PackageNameThe name of the package that contains the Memtier benchmark binaries/scripts.
    WarmUpTrue if the component/action is meant to be used to warmup the Memcached server. Metrics will not be captured in warmup steps.false
    IsTLSEnabledIt defines if Redis server runs with TLS or not. "True" for TLS, "False" for no TLSFalse
  • Profile Runtimes
    See the 'Metadata' section of the profile for estimated runtimes. These timings represent the length of time required to run a single round of profile actions. These timings can be used to determine minimum required runtimes for the Virtual Client in order to get results. These are often estimates based on the number of system cores.

  • Usage Examples
    The following section provides a few basic examples of how to use the workload profile. Additional usage examples can be found in the 'Usage Scenarios/Examples' link at the top.

    # When running on a single system (environment layout not required)
    ./VirtualClient --profile=PERF-REDIS.json --system=Demo --timeout=250 --packageStore="{BlobConnectionString|SAS Uri}"

    # When running in a client/server environment
    ./VirtualClient --profile=PERF-REDIS.json --system=Demo --timeout=1440 --clientId=Client01 --layoutPath="/any/path/to/layout.json" --packageStore="{BlobConnectionString|SAS Uri}"
    ./VirtualClient --profile=PERF-REDIS.json --system=Demo --timeout=1440 --clientId=Server01 --layoutPath="/any/path/to/layout.json" --packageStore="{BlobConnectionString|SAS Uri}"