Name
exbenchcl — Enduro/X benchmark tool
Synopsis
exbenchcl [OPTIONS]
DESCRIPTION
exbenchcl is Enduro/X benchmark tool. Tool is used for benchmarking standard
tpcall(3) request/reply messages. Also tool supports persistent queue tpenqueue(3)
and tpdequeue(3) benchmarking. Tools supports multi-threading and multi-processing.
Test duration can be limited either by specified runtime in seconds or by optional
number of messages processed by each processing unit (thread or processes).
Currently supported data buffer format is UBF. Data loaded to UBF is loaded
in following way (may be combined):
-
Data loaded from command line argument -b which is in format of tpjsontoubf(3)
-
Random data generated and set in specified UBF CARRAY field in CLI options.
The benchmark result is appended to benchmark output file, in following format:
"Configuration" "MsgSize" "CallsPerSec"
"<config_name>" <msg_size_in_bytes> <calls_per_second>
"<config_name>" <msg_size_in_bytes> <calls_per_second>
...
When performing benchmark to persistent queue, the default mode is to enqueue
and dequeue message.
WARNING: Binary is experimental and may be changed in future releases (including
but not limited with replaced CLI flags, etc).
ENVIRONMENT
-
[NDRX_BENCH_FILE]
-
Benchmark output text file name. If not set, default name test.out is written
in current directory.
-
[NDRX_BENCH_CONFIGNAME]
-
Configuration name used in benchmark file. If not specified, default value test
is used.
OPTIONS
-
[-n NR_OF_THREADS]
-
Number of worker threads. In fork mode (-F), this configures the number of worker
forked processes. Default is 1.
-
[-s CALL_SERVICE_NAME]
-
This configures the target service name. For queue testing mode (-Q specified),
this identifies the target persistent queue name. In case if using multiple
service (-N specified) names or queues, then actual service / queue name used
by thread is constructed CALL_SERVICE_NAME appended with NNN, formatted as
current thread number by modulus of the total number of services (-N value).
Total service name length must not be longer than 30 symbols (name is truncated
to 30 chars). Default is EXBENCH.
-
[-t RUN_TIME_SECONDS]
-
Number of seconds for test to run. The default is 60.
-
[-d OUTPUT_DIRECTOR]
-
Optional flag for changing output directory where object file is generated. If
parameter is not set, current directory is used.
-
[-b SAMPLE_DATA_STRING]
-
UBF sample data in form of tpjsontoubf(3). 1024 bytes are allocated for target
buffer.
-
[-S RANDOM_DATA_SIZE]
-
This specified random field size (field specified by -f) in bytes. The default
value is 1024.
-
[-p PRIO]
-
Absolute call priority, if specified then before tpcall(3) or tpenqueue(3)
the tpsprio(3) is executed by worker thread or process.
-
[-P]
-
Plot the results in benchmark output file. If this parameter is not specified,
results are not written to benchmark output file.
-
[-f UBF_FIELD_NAME]
-
This parameter specifies CARRAY typed field name were random blob data of size specified
by -S shall be loaded.
-
[-F]
-
Use fork mode, instead of threads.
-
[-N NUMBER_OF_SERVICES]
-
This parameter enables multi service/queue mode and in the same time specifies
total number of services or queues used in test. The default value is 0, meaning
that service name specified in -s is used without appending with the service/queue
number.
-
[-Q QUEUE_SPACE_NAME]
-
This parameter if set enables persistent queue tests and at the same time it
specifies the queue space name used for tpenqueue(3) and tpdequeue(3) calls.
-
[-A]
-
Enable testing of tmqueue(8) automatic forwarding queue. During the test
specified run-time, messages are enqueued only. Once time (or message count
-R) have been exceeded, the worker thread/process will perform periodic
peek to message queue, to ensure that count is 0 (thus all messages have been
forwarded). By default if -A or -E flags are not specified, then persistent
queue benchmark is performed as pair of tpenqueue(3) and tpdequeue(3) operations.
-
[-E]
-
Persist messages only (for -Q mode). Thus only tpenqueue(3) is executed.
-
[-R NUMBER_OF_REQUESTS]
-
If set, then this parameter limits the benchmarking additionally to number
of messages processed by worker thread. Benchmark will terminate in either
time is reached or number of requests reached, which ever comes first. Total
number of requests is made by test is multiplied by worker thread/process count.
-
[-T TRANSACTION_TIMEOUT]
-
If flag is set and value TRANSACTION_TIMEOUT is greater than 0, worker threads
will perform calls in global transaction. This means that exbenchcl must
have proper transaction environment. If this flag is not set, the XATMI calls
are not run in transaction mode.
-
[-I]
-
Used for process to wait for tpnotify(3) call from server back to benchmark
client. In this mode, benchmark tool sets the XATMI client id in EX_CLTID UBF
field. When exbenchsv receives the request and if it sees that EX_CLTID is set,
it performs the tpnotify() call with the request buffer and only after
that performs tpreturn().
-
[-e]
-
Perform tppost(3) instead of tpcall(3). If parameter is set, event name
is set in -s parameter.
-
[-h]
-
Print usage.
CONFIGURATION EXAMPLE
Responder service in ndrxconfig.xml(5), single service name mode -N (not set or 0).
<server name="exbenchsv">
<srvid>1800</srvid>
<min>15</min>
<max>15</max>
<sysopt>-e /tmp/EXBENCH</sysopt>
</server>
Responder service in ndrxconfig.xml(5), multi-service mode, 5 services:
<server name="exbenchsv">
<srvid>1800</srvid>
<min>15</min>
<max>15</max>
<sysopt>-e /tmp/EXBENCH</sysopt>
<appopt>-N5</appopt>
</server>
EXAMPLE
Benchmark of UBF buffer at 1024 bytes with 5 threads:
$ exbenchcl -n5 -P -t20 -b "{}" -f EX_DATA -S1024
Benchmark of 10 threads, to 5 service names
$ exbenchcl -n10 -P -t20 -b "{}" -f EX_DATA -S1024 -N5
Persistent queue benchmark to queue space named SAMPLESPACE. Queue name
used is TESTQ1:
$ exbenchcl -n10 -P -t20 -b "{}" -f EX_DATA -S1024 -QSAMPLESPACE -sTESTQ1