rds-stress
(1)
名称
rds-stress - ets
用法概要
rds-stress [-p port_number] -r [receive_address] [-s send_address]
[-a ack_bytes] [-q request_bytes] [-D rdma_bytes]
[-d queue_depth] [-t nr_tasks] [-c] [-R] [-V] [-v]
描述
User Commands RDS-STRESS(1)
NAME
rds-stress - send messages between processes over RDS sock-
ets
SYNOPSIS
rds-stress [-p port_number] -r [receive_address] [-s send_address]
[-a ack_bytes] [-q request_bytes] [-D rdma_bytes]
[-d queue_depth] [-t nr_tasks] [-c] [-R] [-V] [-v]
DESCRIPTION
rds-stress sends messages between groups tasks, usually run-
ning on seperate machines.
First a passive receiving instance is started.
$ rds-stress
Then an active sending instance is started, giving it the
address and port at which it will find a listening passive
receiver. In addition, it is given configuration options
which both instances will use.
$ rds-stress -s recvhost -p 4000 -t 1 -d 1
The active sender will parse the options, connect to the
passive receiver, and send the options over this connection.
From this point on both instances exhibit the exact same be-
haviour.
They will create a number of child tasks as specified by the
-t option. Once the children are created the parent sleeps
for a second at a time, printing a summary of statistics at
each interval.
Each child will open an RDS socket, each binding to a port
number in order after the port number given on the command
line. The first child would bind to port 4001 in our exam-
ple. Each child sets the send and receive buffers to
exactly fit the number of messages, requests and acks, that
will be in flight as determind by the command line argu-
ments.
The children then enter their loop. They will keep a number
of sent messages outstanding as specified by the -d option.
When they reach this limit they will wait to receive acks
which will allow them to send again. As they receive mes-
sages from their peers they immediately send acks.
Every second, the parent process will display statistics of
the ongoing stress test. The output is described in section
SunOS 5.11 Last change: May 15, 2007 1
User Commands RDS-STRESS(1)
OUTPUT below.
If the -T option is given, the test will terminate after the
specified time, and a summary is printed.
Each child maintains outstanding messages to all other chil-
dren of the other instance. They do not send to their sib-
lings.
OPTIONS
The following options are available for use on the command
line:
-p port_number
Each parent binds a TCP socket to this port number
and their respective address. They will trade the
negotiated options over this socket. Each child will
bind an RDS socket to the range of ports immediately
following this port number, for as many children as
there are.
-s send_address
A connection attempt is made to this address. Once
its complete and the options are sent over it then
children will be created and work will proceed.
-r receive_address
This specifies the address that messages will be sent
from. If -s is not specified then rds-stress waits
for a connection on this address before proceeding.
If this option is not given, rds-stress will choose
an appropriate address. The passive process will
accept connections on all local interfaces, and
obtain the address once the control connection is
established. The active process will choose a local
address based on the interface through which it con-
nects to the destination address.
-a ack_bytes
This specifies the size of the ack messages, in
bytes. There is a minimum size which depends on the
format of the ack messages, which may change over
time. See section "Message Sizes" below.
-q request_bytes
This specifies the size of the request messages, in
bytes. It also has a minimum size which may change
over time. See section "Message Sizes" below.
-D rdma_bytes
SunOS 5.11 Last change: May 15, 2007 2
User Commands RDS-STRESS(1)
RDSv3 is capable of transmitting part of a message
via RDMA directly from application buffer to applica-
tion buffer. This option enables RDMA support in rds-
stress: request packets include parameters for an
RDMA READ or WRITE operation, which the receiving
process executes at the time the ACK packet is sent.
See section "Message Sizes" below.
-d queue_depth
Each child will try to maintain this many sent mes-
sages outstanding to each of its peers on the remote
address.
-t nr_tasks
Each parent will create this many children tasks.
-T seconds
Specify the duration of the test run. After the spec-
ified number of seconds, all processes on both ends
of the connection will terminate, and the active
instance will print a summary. By default, rds-stress
will keep on sending and receiving messages.
-z This flag can be used in conjunction with -T. It sup-
presses the ongoing display of statistics, and prints
a summary only.
-c This causes rds-stress to create child tasks which
just consume CPU cycles. One task is created for
each CPU in the system. First each child observes
the maximum rate at which it can consume cycles.
This means that this option should only be given on
an idle system. rds-stress can then calculate the
CPU use of the system by observing the lesser rate at
which the children consume cycles. This option is
*not* shared between the active and passive
instances. It must be specified on each rds-stress
command line.
-R This tells the rds-stress parent process to run with
SCHED_RR priority, giving it precedence over the
child processes. This is useful when running with
lots of tasks, where there is a risk of the child
processes starving the parent, and skewing the
results.
-v With this option enabled, packets are filled with a
pattern that is verified by the receiver. This check
can help detect data corruption occuring under high
load.
Options which set a message size (such as -a) specify a
SunOS 5.11 Last change: May 15, 2007 3
User Commands RDS-STRESS(1)
number of bytes by default. By appending K, M, or G, you can
specify the size in kilobytes, megabytes or gigabytes,
respectively. For instance, the following will run rds-
stress with a message and ACK size of 1024 bytes, and an
RDMA message size of 1048576 bytes:
rds-stress ... -q 1K -a 1K -D 1M
OUTPUT
Each parent outputs columns of statistics at a regular
interval:
tsks The number of child tasks which are running.
tx/s The number of sendmsg() calls that all children are
executing, per second.
rx/s The number of recvmsg() calls that all children are
executing, per second.
tx+rx K/s
The total number of bytes that are flowing through
sendmsg() and recvmsg() for all children. This
includes both request and ack messages.
mbi K/s The total number of bytes that are being received
via RDMA READs and WRITEs for all children.
mbi K/s The total number of bytes that are being transmited
via RDMA READs and WRITEs for all children.
tx us/c The average number of microseconds spent in
sendmsg() calls.
rtt us The average round trip time for a request and ack
message pair. This measures the total time between
when a task sends a request and when it finally
receives the ack for that message. Because it
includes the time it takes for the receiver to wake
up, receive the message, and send an ack, it can
grow to be quite large under load.
cpu % This is the percentage of available CPU resources on
this machine that are being consumed since rds-
stress started running. It will show -1.00 if -c is
not given. It is calculated based on the amount of
CPU resources that CPU soaking tasks are able to
consume. This lets it measure CPU use by the sys-
tem, say in interrupt handlers, that task-based CPU
accounting does not include. For this to work rds-
stress must be started with -c on an idle system.
SunOS 5.11 Last change: May 15, 2007 4
User Commands RDS-STRESS(1)
ATTRIBUTES
See attributes(5) for descriptions of the following
attributes:
+---------------+----------------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+----------------------+
|Availability | network/open-fabrics |
+---------------+----------------------+
|Stability | Volatile |
+---------------+----------------------+
NOTES
This software was built from source available at
https://java.net/projects/solaris-userland. The original
community source was downloaded from ['http://www.openfab-
rics.org/downloads/ibutils/ibutils-1.5.7.tar.gz',
'http://www.openfabrics.org/downloads/libibverbs/libib-
verbs-1.1.4-1.22.g7257cd3.tar.gz', 'http://www.openfab-
rics.org/down-
loads/libmlx4/libmlx4-1.0.1-1.18.gb810a27.tar.gz',
'http://www.openfabrics.org/downloads/libsdp/lib-
sdp-1.1.108-0.15.gd7fdb72.tar.gz', 'http://www.openfab-
rics.org/downloads/management/infiniband-
diags-1.5.8.tar.gz', 'http://www.openfabrics.org/down-
loads/management/libibmad-1.3.7.tar.gz', 'http://www.open-
fabrics.org/downloads/management/libibumad-1.3.7.tar.gz',
'http://www.openfabrics.org/downloads/manage-
ment/opensm-3.3.9.tar.gz', 'http://www.openfabrics.org/down-
loads/perftest/perftest-1.3.0-0.42.gf350d3d.tar.gz',
'http://www.openfabrics.org/down-
loads/qperf/qperf-0.4.6-0.1.gb81434e.tar.gz',
'http://www.openfabrics.org/downloads/rdmacm/librd-
macm-1.0.14.1.tar.gz', 'http://www.openfabrics.org/down-
loads/rds-tools/rds-tools-2.0.4.tar.gz']
Further information about this software can be found on the
open source community website at http://www.openfab-
rics.org/.
SunOS 5.11 Last change: May 15, 2007 5