Japanese

Practical mastering IBM MQ basics

Performance evaluation (2) Single test

*This series may be revised based on the latest mqpgf/mqpcf. Please always download and use the latest version.

The script provided allows you to create a list of each workload (test case) for continuous execution, but first, this chapter will show you how to run single tests. After verifying the operation with a single small amount of data, it is recommended to use the test list to perform continuous and scheduled execution of various test cases.


Common to all single test scripts

First, I will explain the common matters for each single test script. Running each test script with no arguments shows how to specify the parameters and the environment variables used. The following is an example of displaying the usage of the RR-1 test script on Windows, but it is also displayed on Linux/HPE NonStop.

Cmd> PowerShell -File RR_1_s.ps1 or PS> ./RR_1_s Usage: RR_1_s.ps1 <Qmgr> <Connections> <Messages> <Bytes> <Log Directory> <Workload> <MQ Constant> <Data File> RR-1 MQI Local Bindings Parameters: $1 : Queue manager name $2 : Number of connections $3 : Number of messages $4 : Message Bytes $5 : Log Directory $6 : Workload $7 : MQ Constant (ex. MQPER_PERSISTENT, MQPER_NOT_PERSISTENT) $8 : Data File (Input message file) (Option) If not specified, "<workload name>" is used as the message. Environments(./runpfmts.bat): $INCL_CON_TIME : Include MQCONN/MQDISC time in measurement, 0:not include, 1:include $RCV_BUFF_SIZE : Receive buffer size $CON_RETRY : The number of connection retry $CON_INTERVAL : Connection retry interval $RR1_RequestQ : Request queue name $RR1_ReplyQ : Reply queue name >


Script parameters

All the parameters of each single test script RR_n_*.ps1(sh) are all the same. The parameters to be set are as follows.

Argument Value Description
$1 Target Queue Manager Queue manager name to connect
$2 Number of connections In the case of threads, the number of threads
For processes, the number of processes
In RR-1, this number is *2(Requester and Responder)
$3 Number of messages *Actual number of messages sent and received=$2*$3
$4 Number of bytes Specified message<$4 : Padding with NULL
Specified message>$4:Rounded down.
$5 Log directory name Directory where log files are stored
$6 Workload name If no data file is specified, $6 is used as a message.
$7 MQ Constants MQ constant specified in mqpgf(c)
Ex. MQPER_PERSISTENT, MQPER_NOT_PERSISTENT
$8 Data file *The normal version of mqpgf(c) cannot be specified.


Environment Variables

It also uses environment variables. The following are common to each test. Set these values to ./runpfmts.bat for Windows and ./runpfmts.ini for Linux, HPE NpnStop. You don't need to run runpfmts.bat or load runpfmts.ini into your environment in advance, as these files will be loaded directly in the script.

Variable Value Description
INCL_CON_TIME Include MQCONN/DISC time or not 0: Not included 1: included
RCV_BUFF_SIZE Receive buffer size Receivable message size
CON_RETRY Number of connection retry Number of retries when connection fails
CON_INTERVAL Connection retry interval ms order

< INCL_CON_TIME >

If you want to include MQCONN/MQDISC in the measurement time, set INCL_CON_TIME to '1'. Set to '0' if the MQCONN/MQDISC time is negligible, such as when the application remains connected. In general, if you envision an application that repeats MQCONN/MQDISC each time a message is sent or received, a test list containing many rows may be created. In that case, set INCL_CON_TIME to '1' and include the influence of MQCONN/MQDISC in the measurement time.
*For scripts that connect to each process on the requester side, a file named "syncfile" is created to avoid the effects of variations in process startup time. They then start processing synchronously after MQCONN and MQOPEN. If INCL_CON_TIME is '1', this synchronization process will not be performed.

< RCV_BUFF_SIZE >

(Important) Set RCV_BUFF_SIZE to a value greater than or equal to the maximum size message among the received messages used in all tests. This value does not include the size of MQMD. If a message larger than this setting is received, the received message will be truncated to the size of RCV_BUFF_SIZE. If it is truncated, it will generally result in higher performance than usual and incorrect measurement results. Be sure to set a value larger than the received message.

< CON_RETRY, CON_INTERVAL >

CON_RETRY and CON_INTERVAL are parameters for retrying the connection if there is a problem with the environment and the connection fails. This is a consideration when scheduling large test lists that take hours to run so that all subsequent tests are not invalidated.


How to run single test scripts

The execution method of each single test script is the same. The following is an example of RR_1 (start a process for each connection).

For Windows: Cmd> PowerShell -File ./RR_1_s.ps1 <Qmgr> <Connections> <Messages> <Bytes> <Log Directory> <Workload> <MQ Constant> <Data File> or PS> ./RR_1_s <Qmgr> <Connections> <Messages> <Bytes> <Log Directory> <Workload> <MQ Constant> <Data File> For Linux/HPE NonStop: $ ./RR_1_s.sh <Qmgr> <Connections> <Messages> <Bytes> <Log Directory> <Workload> <MQ Constant> <Data File>

RR_1 is a single test script that runs on the source server and launches both requester and responder processes. Other scripts require the requester and responder to be launched on separate machines. At that time, make sure to start the responder first(important). Performance measurements are displayed on both the requester and responder sides, but basically refer to the requester side. If you start the responder after the requester, the requester will wait for the response of the first message until the responder starts, which will have a negative effect on the measurement result. Please be careful about the starting order.


Output logs

The same content as the test result displayed on the screen is written to console.log under the log directory specified by the argument. This will be append every time you run a test. The following is an example of Windows, but the same applies to Linux and HPE NonStop.

>type <log directory>/console.log Start Time: 2022/04/21 15:36:06.838 Stop Time: 2022/04/21 15:36:06.869 Elapsed Time: 00:00:00.0310000 Total Number of messages: 10 Round Trips/sec: 322.58064516129 >

The meaning of each displayed item is as follows.

Start Time Test start time
Stop Time Test end time
Elapsed Time Stop Time-Start Time
Total Number of messages Number of sent/received messages(connections * messages)
Round Trips/sec Number of transmissions-receptions per second(test results)

Note: If the test time is extremely short, especially if the Start Time and Stop Time are the same, the result cannot be calculated and "Infinity"(for Windows) will be displayed in Round Trips/sec as shown below. In that case, specify a larger value for <Connections>, <Messages> and <Bytes>.

Start Time: 2022/05/24 14:52:42.354 Stop Time: 2022/05/24 14:52:42.354 Elapsed Time: 00:00:00 Total Number of messages: 10 Round Trips/sec: Infinity

The following naming directory is also created to store the logs that are the basis of these calculations.

<Workload>_<Messages>_<Connections>_<QMGR>_YYYYMMDD_hhmmss

The stored log file is the output from mqpgf (c) and is created for each process (not for each thread). The standard output (stdio) for Windows, the standard output (stdio) and standard error output (stderr) for Linux and HPE NonStop are output to the following naming log.

<Classification(req/rep)>_<Process Number>_YYYYMMDD_hhmmss
*<Process Number> is applied only when the process is started for each connection. If a thread is created for each connection, the log of all threads will be output to the log of the same process.

In the case of Winodows, the standard error output (stderr) is output to another log file with the following naming.

stderr_<Classification(req/rep)>_<Process Number>_YYYYMMDD_hhmmss
*<Process Number> is applied only when the process is started for each connection. If a thread is created for each connection, the log of all threads will be output to the log of the same process.

*The following is an example of displaying the execution log of RR-1(process) on Windows. logs>dir /S ... 2022/04/24 10:48 <DIR> . 2022/04/24 10:48 <DIR> .. 2022/04/24 10:48 346 console.log 2022/04/24 10:47 <DIR> RR-1_102400_100_PLQMS_20220427_104717 ... 2022/04/24 10:47 <DIR> . 2022/04/24 10:47 <DIR> .. 2022/04/24 10:48 39,411 rep_1_20220427_104717.log 2022/04/24 10:48 39,411 rep_2_20220427_104718.log 2022/04/24 10:48 39,411 rep_3_20220427_104718.log 2022/04/24 10:48 39,411 rep_4_20220427_104718.log 2022/04/24 10:48 39,411 rep_5_20220427_104718.log ... 2022/04/24 10:48 6,200 stderr_rep_1_20220427_104717.log 2022/04/24 10:48 6,200 stderr_rep_2_20220427_104718.log 2022/04/24 10:48 6,200 stderr_rep_3_20220427_104718.log 2022/04/24 10:48 6,200 stderr_rep_4_20220427_104718.log 2022/04/24 10:48 6,200 stderr_rep_5_20220427_104718.log ... logs>

I will omit the detailed explanation of the output contents here, but please refer to it when there is a problem in execution.


Confirmation before testing

Make sure the queue used is empty before testing. This is a common note for all test cases. If the queue used at the start of the test is not empty, the test will often fail.
Of course, tests using connections between servers should also have normal channel conditions. To check and start the channel, refer to "Starting the channel" in the previous chapter.

Scripts are also provided to check and operate the associated queue. These scripts reference <QMGR>.mqsc in the current directory to display only the queues associated with the performance test.

※ckchl.ps1(.sh), stachl.ps1(.sh), ckque.ps1(.sh), clrque.ps1(.sh), dltmsg.ps1(.sh) refer to <QMGR>.mqsc. Similarly, ckque_c.ps1(.sh), clrque_c.ps1(.sh), dltmsg_c.ps1(.sh) for the client also refer to <QMGR>.mqsc to connect to. Therefore, it is necessary to copy <QMGR>.mqsc of the connected source QMGR to the client directory. The reason for referencing <QMGR>.mqsc is to limit the processing to objects for performance testing.

For Windows: Cmd> PowerShell -File ./ckque.ps1 -m <QMGR> or PS> ./ckque -m <QMGR> Cmd> PowerShell -File ./ckque_c.ps1 -m <QMGR> *For client connection or PS> ./ckque_c -m <QMGR> *For client connection For Linux/HPE NonStop: $ ./ckque.sh <QMGR> $ ./ckque_c.sh <QMGR> *For client connection

*Option descriptions
-m or 1st argument: Queue manager name

The following is an example executed on a Windows server, but the same applies to Linux/HPE NonStop and client connection.

Cmd> PowerShell -File ./ckque.ps1 -m PLQMS ... 1: QUEUE(REQ1) TYPE(QUEUE) CURDEPTH(3) IPPROCS(0) OPPROCS(0) 1: QUEUE(REP1) TYPE(QUEUE) CURDEPTH(0) IPPROCS(0) OPPROCS(0) ... >

In this example, the message remains in REQ1, so delete it.

Windowsの場合: Cmd> PowerShell -File ./clrque.ps1 -m <QMGR> or PS> ./clrque -m <QMGR> Linux/HPE NonStopの場合: $ ./clrque.sh <QMGR>

*Option descriptions
-m or 1st argument: Queue manager name

Cmd> PowerShell -File ./clrque.ps1 -m PLQMS or PS> ./clrque -m PLQMS ... Clear Queue Success. Queue Name : REQ1 Clear Queue Success. Queue Name : REP1 ... >

Clearing the queue may fail with reason code 4004 MQRCCF_OBJECT_OPEN, for example if the queue to be cleared was a transmission queue. The following is an example of running on Linux, but the same is true for Windows/HPE NonStop. When an error occurs, mqpcf usually displays an error on two lines, but check the mqCommandRC at the end of the first line.

$ ./clrque.sh PLQMS mqpcf clr -qm PLQMS -q PLQMR MQExecute : Command Server Error. ..., mqCommandCC=[2], mqCommandRC=[4004] MQExecute : Command Server Error. ..., mqCommandCC=[2], mqCommandRC=[3008] mqpcf clr -qm PLQMS -q PLQMR2 MQExecute : Command Server Error. ..., mqCommandCC=[2], mqCommandRC=[4004] MQExecute : Command Server Error. ..., mqCommandCC=[2], mqCommandRC=[3008] ... >

In that case, delete it by reading all the messages with MQGET.

For Windows: Cmd> PowerShell -File ./dltmsg.ps1 -m <QMGR> or PS> ./dltmsg.ps1 -m <QMGR> For Linux/HPE NonStop: $ ./dltmsg.sh <QMGR>

*Option descriptions
-m or 1st argument: Queue manager name

Below is an example run on Windows. Running mqpgf with the -r option gets messages repeatedly until the queue is empty, ie the reason code 2033 MQRC_NO_MSG_AVAILABLE is returned.

Cmd> PowerShell -File ./dltmsg.ps1 -m PLQMS or PS> ./dltmsg -m PLQMS ... Command: ./mqpgf -qm PLQMS -q REQ1 -r [2022/04/26 15:19:47.856] 1: message length: 4 get message : xxxx [2022/04/26 15:19:47.856] 2: message length: 4 get message : xxxx [2022/04/26 15:19:47.856] 3: message length: 4 get message : xxxx no message available : REQ1 CompCd=02 ReasonCd=2033 Elapsed time = 16 msec Command: ./mqpgf -qm PLQMS -q REP1 -r no message available : REP1 CompCd=02 ReasonCd=2033 Elapsed time = 20 msec ... >

In the case of transmission queues, the queue may also be GET(DISABLED) by the MCA. Manually set GET(ENABLED) if necessary. Just in case, here is an operation example.

$ ./dltmsg.sh PLQMS mqpgf -qm PLQMS -q PLQMR -r MQGET fail : PLQMR CompCd=02 ReasonCd=2016 MQBACK success : CompCd=00 ReasonCd=00 Elapsed time = 0.322203 sec ... $ $ mqrc 2016 2016 0x000007e0 MQRC_GET_INHIBITED *Indicates that MQGET failed due to GET(DISABLED). $ $ mqpcf que -qm PLQMS -q PLQMR GET 1: QUEUE(PLQMR) TYPE(QLOCAL) GET(DISABLED) $ $ mqpcf get enable -qm PLQMS -q PLQMR *Change to GET(ENABLED) Get Enabled : PLQMR $ $ mqpcf que -qm PLQMS -q PLQMR GET 1: QUEUE(PLQMR) TYPE(QLOCAL) GET(ENABLED) $ $ ./dltmsg.sh PLQMS ... Command: ./mqpgf -qm PLQMS -q REQ1 -r [2022/04/26 15:19:47.856] 1: message length: 4 get message : xxxx [2022/04/26 15:19:47.856] 2: message length: 4 get message : xxxx [2022/04/26 15:19:47.856] 3: message length: 4 get message : xxxx no message available : REQ1 CompCd=02 ReasonCd=2033 Elapsed time = 16 msec Command: ./mqpgf -qm PLQMS -q REP1 -r no message available : REP1 CompCd=02 ReasonCd=2033 Elapsed time = 20 msec ...


Performing RR-1 MQI Local Bindings test

The RR-1 specific inputs are only the following environment variables.
If you want to change the default naming, change <QMGR>.mqsc.src and then recreate the queue manager, or manually define the queue and change runpfmts.bat/ini.
*From now on, it is assumed that the default names are used for the object names such as queue manager and queue, so please read them as appropriate.

Variables Default Machine Description
RR1_RequestQ REQ1 Source Request queue name
RR1_ReplyQ REP1 Source Reply queue name

The types of test scripts for implementing RR-1 MQI Local Bindings as shown in the table below.
Use the one that suits your needs, or run each and compare the results.

Script name Platform Description
RR_1_s.ps1 Windows Process
RR_1_s.sh Linux, HPE Nonstop Process
RR_1_s_t.ps1 Windows Thread
RR_1_s_t.sh Linux, HPE Nonstop Thread

The execution sample of each script is shown below.
*All of the execution samples posted are examples with INCL_CON_TIME=0.
The data file specified for RR-1 is the request message sent from the requester, and the responder returns the message from the requester as it is.
Note: When testing using the normal version of mqpgf, the data file specification (last argument) cannot be used, so omit it.

Examples of execution are shown below.
Linux/HPE NonStop has the same script, so it will be displayed in the same way.

No. Source Server Process/Thread
1. Windows Process
2. Linux, HPE NonStop Process
3. Windows Thread
4. Linux, HPE NonStop Thread


[ 1. RR-1 Start a process for each connection Windows(RR_1_s.ps1) ]

...\script_s> PowerShell -File ./RR_1_s.ps1 PLQMS 10 5000 20480 logs RR-1 MQPER_PERSISTENT data/RR_1_1_req.dat *Qmgr:PLQMS, Connections:10, Messages:5000, Message length:20480, log directory:logs, Persistent Directory: ...\script_s\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/08/16 10:25 RR-1_20480_10_PLQMS_20220816_102522 *Name of the created log directory TARGET_QMGR: PLQMS Connections: 10 Messages: 5000 Bytes: 20480 LogDirPre: logs Workload: RR-1 MQ_Constant: MQPER_PERSISTENT DataFile: data/RR_1_1_req.dat *The file for synchronizing process start processing is deleted in advance. delete syncstart file for synchronization start. *The responder processes will be started for the specified number of connections. Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 5000 -cr 10 -wp 1000 -sz 163840 -ss -l 20480 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im start background: 1 of 10. Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 5000 -cr 10 -wp 1000 -sz 163840 -ss -l 20480 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im start background: 2 of 10. ... Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 5000 -cr 10 -wp 1000 -sz 163840 -ss -l 20480 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im start background: 10 of 10. *Next, the requester process will be started for the specified number of connections. Start Requester Program, Put REQ1, Get REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 5000 -l 20480 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 1 of 10. Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 5000 -l 20480 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 2 of 10. ... Start Requester Program, Put REQ1, Get REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 5000 -l 20480 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 10 of 10. Directory: ...\script_s Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2022/08/16 10:25 0 syncstart *The file that synchronize the processes start is created, and the processes are started. The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 187 14 3976 12392 0.09 17556 3 mqpgf *The execution status of the earliest started process among the running processes is displayed as a sample at 5 second intervals. ... The end of the test command has been detected. Process Number: 0 The number of the sampling process displayed: 1 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 0 5 772 6880 1.53 13668 3 mqpgf *The end of process number 0 is detected, and then the execution status of process number 1 is displayed as a sample. The end of the test command has been detected. Process Number: 1 The end of the test command has been detected. Process Number: 2 ... The end of the test command has been detected. Process Number: 19 *The end of all processes is detected. Start Time: 2022/08/16 10:25:23.410 Stop Time: 2022/08/16 10:25:29.787 Elapsed Time: 00:00:06.3770000 Total Number of messages: 50000 Round Trips/sec: 7840.67743453034 *Measurement results are displayed and written to console.log. ...\script_s>


[ 2. RR-1 Start a process for each connection Linux, HPE NonStop(RR_1_s.sh) ]

.../script_s$ ./RR_1_s.sh PLQMS 5 2000 10240 logs RR-1 MQPER_NOT_PERSISTENT data/RR_1_1_req.dat *Qmgr:PLQMS, Connections:5, Messages:2000, Message length:10240, log directory:logs, Not Persistent *The file for synchronizing process start processing is deleted in advance. delete syncstart file for synchronization start. *The responder processes will be started for the specified number of connections. Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 2000 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im start background: 1 of 5. Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 2000 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im start background: 2 of 5. ... Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 2000 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im start background: 5 of 5. *Next, the requester process will be started for the specified number of connections. Start Requester Program, Put REQ1, Get REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 2000 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 1 of 5. Start Requester Program, Put REQ1, Get REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 2000 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 2 of 5. ... Start Requester Program, Put REQ1, Get REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 2000 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 5 of 5. *The file that synchronize the processes start is created, and the processes are started. create syncstart file for synchronization start. *The end of all processes is detected. Waiting for the completion of the test process......terminated. Start Time: 22/11/08 10:52:54.362 Stop Time: 22/11/08 10:53:00.000 Elapsed Time: 5.638 Total Number of messages: 10000 Round Trips/sec: 1773.679 *Measurement results are displayed and written to console.log. .../script_s$


[ 3. RR-1 Create a thread for each connection Windows(RR_1_s_t.ps1) ]

...\script_s> PowerShell -File ./RR_1_s_t.ps1 PLQMS 10 5000 20480 logs RR-1 MQPER_PERSISTENT data/RR_1_1_req.dat *Qmgr:PLQMS, Connections:10, Messages:5000, Message length:20480, log directory:logs, Persistent Directory: ...\script_s\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/08/16 14:21 RR-1_20480_10_PLQMS_20220816_142125 *Name of the created log directory TARGET_QMGR: PLQMS Connections: 10 Messages: 5000 Bytes: 20480 LogDirPre: logs Workload: RR-1 MQ_Constant: MQPER_PERSISTENT DataFile: data/RR_1_1_req.dat *One responder process is started regardless of the specified number of connections. Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 5000 -cr 10 -wp 1000 -ni 10 -sz 163840 -ss -l 20480 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im *One requester process is started regardless of the specified number of connections. Start Requester Program, Put REQ1, Get REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 5000 -l 20480 -cr 10 -wp 1000 -ni 10 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 298 16 5416 12312 0.17 18836 5 mqpgf *The execution status of the earliest started process among the running processes is displayed as a sample at 5 second intervals. ... The end of the test command has been detected. Process Number: 0 The end of the test command has been detected. Process Number: 1 *The end of all processes is detected. Start Time: 2022/08/16 14:21:25.334 Stop Time: 2022/08/16 14:21:37.778 Elapsed Time: 00:00:12.4440000 Total Number of messages: 50000 Round Trips/sec: 4018.0006428801 *Measurement results are displayed and written to console.log. ...\script_s>


[ 4. RR-1 Create a thread for each connection Linux, HPE NonStop(RR_1_s_t.sh) ]

.../script_s$ ./RR_1_s_t.sh PLQMS 5 2000 10240 logs RR-1 MQPER_NOT_PERSISTENT data/RR_1_1_req.dat *Qmgr:PLQMS, Connections:5, Messages:2000, Message length:10240, log directory:logs, Not Persistent Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 2000 -cr 10 -wp 1000 -ni 5 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im Start Requester Program, Put REQ1, Get REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 2000 -l 10240 -cr 10 -wp 1000 -ni 5 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc Waiting for the completion of the test process........terminated. *Regardless of the specified number of connections, a pair of responder/requester processes are started and their termination is detected. Start Time: 22/08/16 15:02:40.083 Stop Time: 22/08/16 15:02:48.200 Elapsed Time: 8.117 Total Number of messages: 10000 Round Trips/sec: 1231.982 *Measurement results are displayed and written to console.log. .../script_s$


Performing RR-2 MQI Client Bindings test

The RR-2 specific inputs are the following environment variables.

Variables Default Machine Description
RR2_RequestQ REQ1 Client/Source Request queue name
RR2_ReplyQ REP1 Client/Source Reply queue name
CONNAME localhost(1414) Client Connection Name: ipaddr or hostname(port)
CHANNEL PLQMS.MQICHL Client Channel Name
MQSSLKEYR ' ' Client Key repository Location(for TLS Channel)
CERTLABL ' ' Client Certificate Label(for TLS Channel)
SSLCIPH ' ' Client SSL Cipher Specification(for TLS Channel)

RR2_RequestQ and RR2_ReplyQ have the same name on the client and source server. CONNAME and CHANNEL need to be set only on the client side. MQSSLKEYR, CERTLABL, and SSLCIPH are only required when using the TLS channel and should only be set on the client side. If you change RR2_RequestQ, RR2_ReplyQ, or CHANNEL to a name other than the default, you must also change <QMGR>.mqsc.src at the same time and recreate the queue manager or define the objects manually. If you change the value of SSLCIPH, also change the SSLCIPH property of the Server-connection channel specified by CHANNEL in <QMGR>.mqsc.src and recreate the queue manager or change the object manually.

The types of test scripts for implementing RR-2 MQI Client Bindings as shown in the table below.
The combination of machines and scripts used by the client and source server is arbitrary. Use the one that suits your needs, or run each and compare the results.

Script name Platform Machine Description
RR_2_c.ps1 Windows Client For Requester(Process)
RR_2_c.sh Linux, HPE Nonstop Client For Requester(Process)
RR_2_c_t.ps1 Windows Client For Requester(Thread)
RR_2_c_t.sh Linux, HPE Nonstop Client For Requester(Thread)
RR_2_s.ps1 Windows Source For Responder(Process)
RR_2_s.sh Linux, HPE Nonstop Source For Responder(Process)
RR_2_s_t.ps1 Windows Source For Responder(Thread)
RR_2_s_t.sh Linux, HPE Nonstop Source For Responder(Thread)

The data file specified by RR-2 can be specified separately for the requester and responder. If the data file is omitted on the responder side, the message from the requester is returned as it is.
Note: When testing using the normal version of mqpgf, the data file specification (last argument) cannot be used, so omit it.

You are free to use any platform and process/thread combination for your client and source server. The following pattern is shown as an example.

No. Client Machine Source Server Use TLS
1. Windows(Process) Windows(Process)
2. Windows(Thread) NonStop(Process) TLS Channel
3. Linux(Thread) NonStop(Thread)


[ 1. RR-2 Windows-Windows, Both client and server start a process for each connection ]


Responder Side, Start a process for each connection, Windows(RR_2_s.ps1)

Be sure to start the responder side first.
The number of connections and messages between the responder and the requester must always match.
The following is the display until the test is completed.

...\script_s> PowerShell -File ./RR_2_s.ps1 PLQMS 5 100 10240 logs RR-2 MQPER_NOT_PERSISTENT data/RR_2_1_rep.dat *Qmgr:PLQMS, Connections:5, Messages:100, Message length:10240, log directory:logs, Not Persistent Directory: ...\script_s\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/11/08 17:10 RR-2_10240_5_PLQMS_20221108_171051 *Name of the created log directory TARGET_QMGR: PLQMS Connections: 5 Messages: 100 Bytes: 10240 LogDirPre: logs Workload: RR-2 MQ_Constant: MQPER_NOT_PERSISTENT DataFile: data/RR_2_1_rep.dat *Responder processes are started for the specified number of connections. Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 163840 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_2_1_rep.dat start background: 1 of 5. Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 163840 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_2_1_rep.dat start background: 2 of 5. ... Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 163840 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_2_1_rep.dat start background: 5 of 5. The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 186 13 3436 10604 0.08 21156 4 mqpgf *The execution status of the earliest started process among the running processes is displayed as a sample at 5 second intervals. ... The end of the test command has been detected. Process Number: 0 The end of the test command has been detected. Process Number: 1 ... The end of the test command has been detected. Process Number: 4 *The end of all processes is detected. Start Time: 2022/11/08 17:11:01.440 Stop Time: 2022/11/08 17:11:02.189 Elapsed Time: 00:00:00.7490000 Total Number of messages: 500 Round Trips/sec: 667.556742323097 *Measurement results are displayed and written to console.log. ...\script_s>


Requester Side, Start a process for each connection, Windows(RR_2_c.ps1)

Then start the requester side.

...\script_c> PowerShell -File ./RR_2_c.ps1 PLQMS 5 100 10240 logs RR-2 MQPER_NOT_PERSISTENT data/RR_2_1_req.dat *Qmgr:PLQMS, Connections:5, Messages:100, Message length:10240, log directory:logs, Not Persistent Directory: ...\script_c\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/11/08 17:10 RR-2_10240_5_PLQMS_20221108_171059 *Name of the created log directory TARGET_QMGR: PLQMS Connections: 5 Messages: 100 Bytes: 10240 LogDirPre: logs Workload: RR-2 MQ_Constant: MQPER_NOT_PERSISTENT DataFile: data/RR_2_1_req.dat *The file for synchronizing process start processing is deleted in advance. delete syncstart file for synchronization start. *Requester processes are started for the specified number of connections. Start Requester Program, Put REQ1, Get REP1 mqpgfc -qm PLQMS -q REQ1 -x localhost(1414) -ch PLQMS.MQICHL -f data/RR_2_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 1 of 5. Start Requester Program, Put REQ1, Get REP1 mqpgfc -qm PLQMS -q REQ1 -x localhost(1414) -ch PLQMS.MQICHL -f data/RR_2_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 2 of 5. ... Start Requester Program, Put REQ1, Get REP1 mqpgfc -qm PLQMS -q REQ1 -x localhost(1414) -ch PLQMS.MQICHL -f data/RR_2_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 5 of 5. Directory: ...\script_c Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2022/11/08 17:11 0 syncstart *The file that synchronize the processes start is created, and the processes are started. The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 222 16 3308 11352 0.11 14928 4 mqpgfc *The execution status of the earliest started process among the running processes is displayed as a sample at 5 second intervals. The end of the test command has been detected. Process Number: 0 The end of the test command has been detected. Process Number: 1 ... The end of the test command has been detected. Process Number: 4 *The end of all processes is detected. Start Time: 2022/11/08 17:11:01.265 Stop Time: 2022/11/08 17:11:02.189 Elapsed Time: 00:00:00.9240000 Total Number of messages: 500 Round Trips/sec: 541.125541125541 *Measurement results are displayed and written to console.log. ...\script_s>


[ 2. RR-2 Windows-HPE NonStop, For each connevtion, Client: Start a thread, Server: Start a process ]


< A simple way to check client connectivity. >

Since we will be using the TLS channel, here is a simple way to check that the parameters for TLS and client connections in runpfmts.bat/ini are set correctly.

Each operational script for client connections will all refer to this file to connect to the server. If a TLS channel is used, the TLS connection is made using the same channel used in the test. In particular, when ckchl_c.ps1/sh is run, the status of the client connection channel (default: PLQMS.MQICHL) to which it connects itself is displayed along with the parameters, SECPROT,SSLCERTI,SSLCIPH,SSLPEER,STATUS etc., used for the connection.

...\script_s> PowerShell -File ckchl_c.ps1 -m PLQMST Command: mqpcfc chs -qm PLQMST -c PLQMS.MQICHL -x "16.147.169.198(18598)" -ch PLQMS.MQICHL -cs TLS_RSA_WITH_AES_256_CBC_SHA256 -lb PLCLA MQCD_VERSION_11 STATUS SECPROT SSLCERTI SSLCIPH SSLPEER 1: CHANNEL(PLQMS.MQICHL) CHLTYPE(SVRCONN) CONNAME(xxx.xxx.xxx.xxx) CHLINSTYPE(CURRENT) SECPROT(TLSV12) SSLCERTI(E=support@pulsarintegration.com,CN=www.pulsarintegration.com, O=Pulsar Integration Inc.,ST=Chiba,C=JP) SSLCIPH(TLS_RSA_WITH_AES_256_CBC_SHA256) SSLPEER(SERIALNUMBER=06,CN=www.pulsarintegration.PLCL.com,O=Pulsar Integration PLCL Inc., ST=Fukuoka,C=JP) STATUS(RUNNING) STOPREQ(NO) SUBSTATE(RECEIVE) RAPPLTAG(...\mqpcfc.exe) ... *This command displays the status of all channels in the <QMGR>.mqsc file. ...\script_s>


Responder Side, Start a process for each connection, HPE NonStop(RR_2_s.sh)

Be sure to start the responder side first.
The number of connections and messages between the responder and the requester must always match.
The following is the display until the test is completed.

...script_s_TLS$ ./RR_2_s.sh PLQMST 5 100 10240 logs RR-2 MQPER_NOT_PERSISTENT data/RR_2_1_rep.dat *Qmgr:PLQMST, Connections:5, Messages:100, Message length:10240, log directory:logs, Not Persistent *Responder processes are started for the specified number of connections. Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMST -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_2_1_rep.dat start background: 1 of 5. Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMST -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_2_1_rep.dat start background: 2 of 5. ... Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMST -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_2_1_rep.dat start background: 5 of 5. Waiting for the completion of the test process........................................... ................................terminated. *The end of all processes is detected. Start Time: 22/11/09 15:23:07.051 Stop Time: 22/11/09 15:24:12.793 Elapsed Time: 65.742 Total Number of messages: 500 Round Trips/sec: 7.605 *Measurement results are displayed and written to console.log. .../script_s_TLS$


Requester Side, Start a thread for each connection, Windows(RR_2_c_t.ps1)

Then start the requester side.

...\script_c_TLS> PowerShell -File ./RR_2_c_t.ps1 PLQMST 5 100 10240 logs RR-2 MQPER_NOT_PERSISTENT data/RR_2_1_req.dat *Qmgr:PLQMST, Connections:5, Messages:100, Message length:10240, log directory:logs, Not Persistent Directory: ...\script_c_TLS\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/11/09 15:22 RR-2_10240_5_PLQMST_20221109_152252 *Name of the created log directory TARGET_QMGR: PLQMST Connections: 5 Messages: 100 Bytes: 10240 LogDirPre: logs Workload: RR-2 MQ_Constant: MQPER_NOT_PERSISTENT DataFile: data/RR_2_1_req.dat *One responder process is started regardless of the specified number of connections. Start Requester Program, Put REQ1, Get REP1 mqpgfc -qm PLQMST -q REQ1 -x 16.147.169.198(18598) -ch PLQMS.MQICHL -f data/RR_2_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -ni 5 -n 100 -l 10240 -cr 10 -wp 1000 -cs TLS_RSA_WITH_AES_256_CBC_SHA256 -cl PLCLA MQCD_VERSION_11 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc *The execution status is displayed at 5 second intervals. Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 105 10 2092 6524 0.02 27396 4 mqpgfc ... The end of the test command has been detected. *The end of the process is detected. Start Time: 2022/11/09 15:23:05.927 Stop Time: 2022/11/09 15:24:13.145 Elapsed Time: 00:01:07.2180000 Total Number of messages: 500 Round Trips/sec: 7.43848373947455 *Measurement results are displayed and written to console.log. ...\script_c_TLS>


[ 3. RR-2 Linux-HPE NonStop, Both client and server start a thread for each connection ]


Responder Side, Start a thread for each connection, HPE NonStop(RR_2_s_t.sh)

Be sure to start the responder side first.
The number of connections and messages between the responder and the requester must always match.
The following is the display until the test is completed.

...script_s$ ./RR_2_s_t.sh PLQMS 5 100 10240 logs RR-2 MQPER_NOT_PERSISTENT data/RR_2_1_rep.dat *Qmgr:PLQMS, Connections:5, Messages:100, Message length:10240, log directory:logs, Not Persistent *One responder process is started regardless of the specified number of connections. Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -ni 5 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_2_1_rep.dat Waiting for the completion of the test process.............terminated. *The end of the process is detected. Start Time: 22/11/11 14:24:58.953 Stop Time: 22/11/11 14:24:59.730 Elapsed Time: 0.777 Total Number of messages: 500 Round Trips/sec: 643.501 *Measurement results are displayed and written to console.log. .../script_s$


Requester Side, Start a thread for each connection, Linux(RR_2_c_t.sh)

Then start the requester side.

../script_c$ ./RR_2_c_t.sh PLQMS 5 100 10240 logs RR-2 MQPER_NOT_PERSISTENT data/RR_2_1_req.dat *Qmgr:PLQMS, Connections:5, Messages:100, Message length:10240, log directory:logs, Not Persistent *One responder process is started regardless of the specified number of connections. Start Requester Program, Put REQ1, Get REP1 mqpgfc -qm PLQMS -q REQ1 -x 172.21.10.50(18599) -ch PLQMS.MQICHL -f data/RR_2_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPMO_NO_SYNCPOINT -ni 5 -n 100 -l 10240 -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc Waiting for the completion of the test process.terminated. *The end of the process is detected. Start Time: 22/11/11 14:15:51.474 Stop Time: 22/11/11 14:15:52.277 Elapsed Time: 0.803 Total Number of messages: 500 Round Trips/sec: 622.665 *Measurement results are displayed and written to console.log. .../script_c$


Performing RR-5 MQI Distributed Queuing test

The RR-5 specific inputs are the following environment variables.
The name of the send/receive queue is the prefix plus serial number set in RR5_RequestQPrefix and RR5_ReplyQPrefix.
By default, 5 sets of send/receive queues are defined, so the maximum number of connections is 5. If you want to change the default naming or the default prefix, change <QMGR>.mqsc.src and then recreate the queue manager, or manually define the queue and change runpfmts.bat/ini.
If you do not want to use the prefix and serial number format for the queue name, you need to change the script.

Variables Default Machine Description
RR5_RequestQPrefix REQR Source Request queue prefix
REQ Response
RR5_ReplyQPrefix REP Source Reply queue prefix
REPS Response

The types of test scripts for implementing RR-5 MQI Distributed Queuing as shown in the table below.
A process is started for each connection, and one pair of send/receive queues and one server-to-server connection channel correspond to each connection. The combination of machines and scripts used by the source and response server is arbitrary. Use the one that suits your needs, or run each and compare the results.

Script name Platform Machine Description
RR_5_s.ps1 Windows Source For Requester(Process)
RR_5_s.sh Linux, HPE Nonstop Source For Requester(Process)
RR_5_r.ps1 Windows Response For Responder(Process)
RR_5_r.sh Linux, HPE Nonstop Response For Responder(Process)

The data file specified by RR-5 can be specified separately for the requester and responder. If the data file is omitted on the responder side, the message from the requester is returned as it is.
Note: When testing using the normal version of mqpgf, the data file specification (last argument) cannot be used, so omit it.

The following patterns are shown as examples.
Linux/HPE NonStop has the same script, so it will be displayed in the same way. Also, since TLS parameters are set to the channel, the display is the same regardless of whether TLS is used or not.

No. Source server Response server Use TLS
1. Windows Windows
2. NonStop Linux TLS Channel


[ 1. RR-5 Windows-Windows、Both source and response server start a process for each connection ]


RR-5 Responder, Start a process for each connection Windows(RR_5_r.ps1)

Be sure to start the responder side first.
The number of connections and messages between the responder and the requester must always match.
The following is the display until the test is completed.

PS ...\script_r> ./RR_5_r PLQMR 5 100 10240 logs RR-5 MQPER_NOT_PERSISTENT data/RR_5_1_rep.dat *Qmgr:PLQMR, Connections:5, Messages:100, Message length:10240, log directory:logs, Not Persistent Directory: ...\script_r\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/11/15 17:37 RR-5_10240_5_PLQMR_20221115_173751 *Name of the created log directory TARGET_QMGR: PLQMR Connections: 5 Messages: 100 Bytes: 10240 LogDirPre: logs Workload: RR-5 MQ_Constant: MQPER_NOT_PERSISTENT DataFile: data/RR_5_1_rep.dat *Processes are started for the specified number of connections. Start Responder Program, Get REQ1, Put REPS1 mqpgf -qm PLQMR -q REQ1 -oq REPS1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 163840 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_5_1_rep.dat start background: 1 of 5. Start Responder Program, Get REQ2, Put REPS2 mqpgf -qm PLQMR -q REQ2 -oq REPS2 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 163840 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_5_1_rep.dat start background: 2 of 5. ... Start Responder Program, Get REQ5, Put REPS5 mqpgf -qm PLQMR -q REQ5 -oq REPS5 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 163840 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_5_1_rep.dat start background: 5 of 5. The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 191 13 3416 10680 0.05 30172 4 mqpgf *The execution status of the earliest started process among the running processes is displayed as a sample at 5 second intervals. The end of the test command has been detected. Process Number: 0 The end of the test command has been detected. Process Number: 1 The end of the test command has been detected. Process Number: 2 The end of the test command has been detected. Process Number: 3 The end of the test command has been detected. Process Number: 4 *The end of all processes is detected. Start Time: 2022/11/15 17:37:53.804 Stop Time: 2022/11/15 17:37:54.092 Elapsed Time: 00:00:00.2880000 Total Number of messages: 500 Round Trips/sec: 1736.11111111111 *Measurement results are displayed and written to console.log. PS ,,,script_r>


RR-5 Requester, Start a process for each connection Windows(RR_5_s.ps1)

Then start the requester side.

PS ...\script_s> ./RR_5_s PLQMS 5 100 10240 logs RR-5 MQPER_NOT_PERSISTENT data/RR_5_1_req.dat *Qmgr:PLQMS, Connections:5, Messages:100, Message length:10240, log directory:logs, Not Persistent Directory: ...\script_s\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/11/15 17:37 RR-5_10240_5_PLQMS_20221115_173753 *Name of the created log directory TARGET_QMGR: PLQMS Connections: 5 Messages: 100 Bytes: 10240 LogDirPre: logs Workload: RR-5 MQ_Constant: MQPER_NOT_PERSISTENT DataFile: data/RR_5_1_req.dat *The file for synchronizing process start processing is deleted in advance. delete syncstart file for synchronization start. *Processes are started for the specified number of connections. Start Requester Program, Put REQR1, Get REP1 mqpgf -qm PLQMS -q REQR1 -f data/RR_5_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 1 of 5. Start Requester Program, Put REQR2, Get REP2 mqpgf -qm PLQMS -q REQR2 -f data/RR_5_1_req.dat -iq REP2 -rq REP2 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 2 of 5. ... Start Requester Program, Put REQR5, Get REP5 mqpgf -qm PLQMS -q REQR5 -f data/RR_5_1_req.dat -iq REP5 -rq REP5 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 5 of 5. Directory: ...\script_s Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2022/11/15 17:37 0 syncstart *The file that synchronize the processes start is created, and the processes are started. The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 192 13 3460 11168 0.09 29624 4 mqpgf *The execution status of the earliest started process among the running processes is displayed as a sample at 5 second intervals. The end of the test command has been detected. Process Number: 0 The end of the test command has been detected. Process Number: 1 The end of the test command has been detected. Process Number: 2 The end of the test command has been detected. Process Number: 3 The end of the test command has been detected. Process Number: 4 *The end of all processes is detected. Start Time: 2022/11/15 17:37:53.796 Stop Time: 2022/11/15 17:37:54.092 Elapsed Time: 00:00:00.2960000 Total Number of messages: 500 Round Trips/sec: 1689.18918918919 *Measurement results are displayed and written to console.log. PS ...\script_s>


[ 2. RR-5 HPE NonStop-Linux, Both source and response server start a process for each connection ]


RR-5 Responder, Start a process for each connection Linux(RR_5_r.sh)

Be sure to start the responder side first.
The number of connections and messages between the responder and the requester must always match.
The following is the display until the test is completed.

.../script_r_TLS$ ./RR_5_r.sh PLQMRT 5 100 10240 logs RR-5 MQPER_NOT_PERSISTENT data/RR_5_1_rep.dat *Qmgr:PLQMRT, Connections:5, Messages:100, Message length:10240, log directory:logs, Not Persistent *Processes are started for the specified number of connections. Start Responder Program, Get REQ1, Put REPS1 mqpgf -qm PLQMRT -q REQ1 -oq REPS1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_5_1_rep.dat start background: 1 of 5. Start Responder Program, Get REQ2, Put REPS2 mqpgf -qm PLQMRT -q REQ2 -oq REPS2 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_5_1_rep.dat start background: 2 of 5. ... Start Responder Program, Get REQ5, Put REPS5 mqpgf -qm PLQMRT -q REQ5 -oq REPS5 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_5_1_rep.dat start background: 5 of 5. Waiting for the completion of the test process......terminated. *The end of the process is detected. Start Time: 22/11/17 16:43:13.387 Stop Time: 22/11/17 16:43:14.250 Elapsed Time: 0.863 Total Number of messages: 500 Round Trips/sec: 579.374 *Measurement results are displayed and written to console.log. .../script_r_TLS$


RR-5 Requester, Start a process for each connection HPE NonStop(RR_5_s.sh)

Then start the requester side.

.../script_s_TLS$ ./RR_5_s.sh PLQMST 5 100 10240 logs RR-5 MQPER_NOT_PERSISTENT data/RR_5_1_req.dat *Qmgr:PLQMST, Connections:5, Messages:100, Message length:10240, log directory:logs, Not Persistent *The file for synchronizing process start processing is deleted in advance. delete syncstart file for synchronization start. *Processes are started for the specified number of connections. Start Requester Program, Put REQR1, Get REP1 mqpgf -qm PLQMST -q REQR1 -f data/RR_5_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 1 of 5. Start Requester Program, Put REQR2, Get REP2 mqpgf -qm PLQMST -q REQR2 -f data/RR_5_1_req.dat -iq REP2 -rq REP2 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 2 of 5. ... Start Requester Program, Put REQR5, Get REP5 mqpgf -qm PLQMST -q REQR5 -f data/RR_5_1_req.dat -iq REP5 -rq REP5 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 5 of 5. *The file that synchronize the processes start is created, and the processes are started. create syncstart file for synchronization start. Waiting for the completion of the test process.terminated. *The end of the process is detected. Start Time: 22/11/17 16:52:40.264 Stop Time: 22/11/17 16:52:41.135 Elapsed Time: 0.871 Total Number of messages: 500 Round Trips/sec: 574.053 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 .../script_s_TLS$


Performing PL-1 MQ Cluster test

The PL-1 specific inputs are the following environment variables.
The name of the send/receive queue is the prefix plus serial number set in PL1_RequestQPrefix and PL1_ReplyQPrefix.
By default, 5 sets of send/receive queues are defined, so the maximum number of connections is 5. If you want to change the default naming or the default prefix, change <QMGR>.mqsc.src and then recreate the queue manager, or manually define the queue and change runpfmts.bat/ini.
If you do not want to use the prefix and serial number format for the queue name, you need to change the script.

Variables Default Machine Description
PL1_RequestQPrefix CQR Source Request queue prefix
CQR Response
PL1_ReplyQPrefix CQS Source Reply queue prefix
CQS Response

The types of test scripts are shown in the table below.
A process is started for each connection, and one pair of send/receive queues correspond to each connection. The combination of machines and scripts used by the source and response server is arbitrary. Use the one that suits your needs, or run each and compare the results.

Script name Platform Machine Description
PL_1_s.ps1 Windows Source PL-1 MQ Cluster (for Requester)(Process)
PL_1_s.sh Linux, HPE Nonstop Source PL-1 MQ Cluster (for Requester)(Process)
PL_1_r.ps1 Windows Response PL-1 MQ Cluster (for Responder)(Process)
PL_1_r.sh Linux, HPE Nonstop Response PL-1 MQ Cluster (for Responder)(Process)

The data file specified by PL-1 can be specified separately for the requester and responder. If the data file is omitted on the responder side, the message from the requester is returned as it is.
Note: When testing using the normal version of mqpgf, the data file specification (last argument) cannot be used, so omit it.

The following patterns are shown as examples.
Linux/HPE NonStop has the same script, so it will be displayed in the same way. Also, since TLS parameters are set to the channel, the display is the same regardless of whether TLS is used or not.

No. Source server Response server Use TLS
1. Windows Windows TLS Channel
2. NonStop Linux


[ 1. PL-1 Windows-Windows, Both source and response server start a process for each connection ]


PL-1 Responder, Start a process for each connection Windows(PL_1_r.ps1)

Be sure to start the responder side first.
The number of connections and messages between the responder and the requester must always match.
The following is the display until the test is completed.

PS ...\script_r_TLS> ./PL_1_r PLQMRT 5 1000 20480 logs PL-1 MQPER_PERSISTENT data/PL_1_1_rep.dat *Qmgr:PLQMR, Connections:5, Messages:1000, Message length:20480, log directory:logs, Persistent Directory: ...\script_r_TLS\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2023/01/24 18:01 PL-1_20480_5_PLQMRT_20230124_180108 *Name of the created log directory *The responder processes will be started for the specified number of connections. TARGET_QMGR: PLQMRT Connections: 5 Messages: 1000 Bytes: 20480 LogDirPre: logs Workload: PL-1 MQ_Constant: MQPER_PERSISTENT DataFile: data/PL_1_1_rep.dat Start Responder Program, Get CQR1, Put CQS1 mqpgf -qm PLQMRT -q CQR1 -oq CQS1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 1000 -cr 10 -wp 1000 -sz 163840 -ss -l 20480 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/PL_1_1_rep.dat start background: 1 of 5. ... Start Responder Program, Get CQR5, Put CQS5 mqpgf -qm PLQMRT -q CQR5 -oq CQS5 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 1000 -cr 10 -wp 1000 -sz 163840 -ss -l 20480 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/PL_1_1_rep.dat start background: 5 of 5. The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 187 13 3428 10744 0.06 11372 1 mqpgf *The execution status of the earliest started process among the running processes is displayed as a sample at 5 second intervals. The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 188 13 3468 11364 0.11 11372 1 mqpgf The end of the test command has been detected. Process Number: 0 The end of the test command has been detected. Process Number: 1 The end of the test command has been detected. Process Number: 2 The end of the test command has been detected. Process Number: 3 The end of the test command has been detected. Process Number: 4 *The end of all processes is detected. Start Time: 2023/01/24 18:01:11.334 Stop Time: 2023/01/24 18:01:17.454 Elapsed Time: 00:00:06.1200000 Total Number of messages: 5000 Round Trips/sec: 816.993464052288 *Measurement results are displayed and written to console.log. PS ...\script_r_TLS>


PL-1 Requester, Start a process for each connection Windows(PL_1_s.ps1)

Then start the requester side.

PS ...\script_s_TLS> ./PL_1_s PLQMST 5 1000 20480 logs PL-1 MQPER_PERSISTENT data/PL_1_1_req.dat *Qmgr:PLQMST, Connections:5, Messages:1000, Message length:20480, log directory:logs, Persistent Directory: ...\script_s_TLS\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2023/01/24 18:01 PL-1_20480_5_PLQMST_20230124_180110 *Name of the created log directory TARGET_QMGR: PLQMST Connections: 5 Messages: 1000 Bytes: 20480 LogDirPre: logs Workload: PL-1 MQ_Constant: MQPER_PERSISTENT DataFile: data/PL_1_1_req.dat *The file for synchronizing process start processing is deleted in advance. delete syncstart file for synchronization start. *Processes are started for the specified number of connections. Start Requester Program, Put CQR1, Get CQS1 mqpgf -qm PLQMST -q CQR1 -f data/PL_1_1_req.dat -iq CQS1 -rq CQS1 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 1000 -l 20480 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 1 of 5. Start Requester Program, Put CQR2, Get CQS2 mqpgf -qm PLQMST -q CQR2 -f data/PL_1_1_req.dat -iq CQS2 -rq CQS2 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 1000 -l 20480 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 2 of 5. ... Start Requester Program, Put CQR5, Get CQS5 mqpgf -qm PLQMST -q CQR5 -f data/PL_1_1_req.dat -iq CQS5 -rq CQS5 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 1000 -l 20480 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 5 of 5. Directory: ...\script_s_TLS Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2023/01/24 18:01 0 syncstart *The file that synchronize the processes start is created, and the processes are started. The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 188 13 3452 11220 0.03 276 1 mqpgf *The execution status of the earliest started process among the running processes is displayed as a sample at 5 second intervals. The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 188 13 3468 11160 0.25 276 1 mqpgf The end of the test command has been detected. Process Number: 0 The end of the test command has been detected. Process Number: 1 The end of the test command has been detected. Process Number: 2 The end of the test command has been detected. Process Number: 3 The end of the test command has been detected. Process Number: 4 *The end of all processes is detected. Start Time: 2023/01/24 18:01:11.327 Stop Time: 2023/01/24 18:01:17.453 Elapsed Time: 00:00:06.1260000 Total Number of messages: 5000 Round Trips/sec: 816.193274567418 *Measurement results are displayed and written to console.log. PS ...\script_s_TLS>


[ 2. PL-1 HPE NonStop-Linux, Both source and response server start a process for each connection ]


PL-1 Responder, Start a process for each connection Linux(PL_1_r.sh)

Be sure to start the responder side first.
The number of connections and messages between the responder and the requester must always match.
The following is the display until the test is completed.

.../script_r$ ./PL_1_r.sh PLQMR 5 100 10240 logs PL-1 MQPER_PERSISTENT data/PL_1_1_rep.dat *Qmgr:PLQMR, Connections:5, Messages:100, Message length:10240, log directory:logs, Persistent *Processes are started for the specified number of connections. Start Responder Program, Get CQR1, Put CQS1 mqpgf -qm PLQMR -q CQR1 -oq CQS1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/PL_1_1_rep.dat start background: 1 of 5. Start Responder Program, Get CQR2, Put CQS2 mqpgf -qm PLQMR -q CQR2 -oq CQS2 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/PL_1_1_rep.dat start background: 2 of 5. ... Start Responder Program, Get CQR5, Put CQS5 mqpgf -qm PLQMR -q CQR5 -oq CQS5 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/PL_1_1_rep.dat start background: 5 of 5. Waiting for the completion of the test process........................................ ................terminated. *The end of the process is detected. Start Time: 23/01/27 13:49:55.862 Stop Time: 23/01/27 13:50:18.696 Elapsed Time: 22.834 Total Number of messages: 500 Round Trips/sec: 21.897 *Measurement results are displayed and written to console.log. .../script_r$


Pl-1 Requester, Start a process for each connection HPE NonStop(PL_1_s.sh)

Then start the requester side.

.../script_s$ ./PL_1_s.sh PLQMS 5 100 10240 logs PL-1 MQPER_PERSISTENT data/PL_1_1_req.dat *Qmgr:PLQMS, Connections:5, Messages:100, Message length:10240, log directory:logs, Persistent *The file for synchronizing process start processing is deleted in advance. delete syncstart file for synchronization start. *Processes are started for the specified number of connections. Start Requester Program, Put CQR1, Get CQS1 mqpgf -qm PLQMS -q CQR1 -f data/PL_1_1_req.dat -iq CQS1 -rq CQS1 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 1 of 5. Start Requester Program, Put CQR2, Get CQS2 mqpgf -qm PLQMS -q CQR2 -f data/PL_1_1_req.dat -iq CQS2 -rq CQS2 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 2 of 5. ... Start Requester Program, Put CQR5, Get CQS5 mqpgf -qm PLQMS -q CQR5 -f data/PL_1_1_req.dat -iq CQS5 -rq CQS5 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 5 of 5. *The file that synchronize the processes start is created, and the processes are started. create syncstart file for synchronization start. Waiting for the completion of the test process........terminated. *The end of the process is detected. Start Time: 23/01/27 13:52:21.675 Stop Time: 23/01/27 13:52:46.081 Elapsed Time: 24.406 Total Number of messages: 500 Round Trips/sec: 20.487 *Measurement results are displayed and written to console.log. .../script_s$

In the next chapter, we will introduce how to test using the test list.

to the top

to the top