man pages section 1: User Commands

Exit Print View

Updated: July 2014

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)

     rds-stress  - send messages between processes over RDS sock-

     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]

     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-

     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-

     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-

     The  following  options are available for use on the command

     -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

     -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

     -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

     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

     Each  parent  outputs  columns  of  statistics  at a regular

     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)

     See   attributes(5)   for   descriptions  of  the  following

     |Availability   | network/open-fabrics |
     |Stability      | Volatile             |
     This  software  was   built   from   source   available   at    The  original
     community source was downloaded from   ['http://www.openfab-',
     verbs-1.1.4-1.22.g7257cd3.tar.gz',      'http://www.openfab-
     sdp-1.1.108-0.15.gd7fdb72.tar.gz',      'http://www.openfab-
     diags-1.5.8.tar.gz',       '
     loads/management/libibmad-1.3.7.tar.gz',   '',
     ment/opensm-3.3.9.tar.gz', '
     macm-',     '

     Further  information about this software can be found on the
     open  source  community   website   at   http://www.openfab-

SunOS 5.11          Last change:  May 15, 2007                  5