# cmtime

## NAME



           cmtime - RDMA CM connection steps timing test.
    


## SYNOPSIS



           _cmtime_ [-s server_address] [-b bind_address]
                          [-c connections] [-p port_number]
                          [-q base_qpn]
                          [-r retries] [-t timeout_ms]
    


## DESCRIPTION



           Determines min, max, and average times for various "steps" in RDMA
           CM connection setup and teardown between a client and server
           application.
    
           "Steps" that are timed are: create ID, bind address, resolve
           address, resolve route, create QP, modify QP to INIT, modify QP to
           RTR, modify QP to RTS, CM connect, client establish, disconnect,
           destroy QP, and destroy ID.
    
           Many operations are asynchronous, allowing progress on multiple
           connections simultanesously.  The 'sum' output adds the time that
           all connections took for a given step.  The average 'us/conn' is
           the sum divided by the number of connections.  This is useful to
           identify steps which take a significant amount of time.  The min
           and max values are the smallest and largest times that any single
           connection took to complete a given step.
    
           The 'total' and 'avg/iter' times measure the time to complete a
           given step for all connections.  These two values take into
           account asynchronous operations.  For steps which are serial, the
           total and sum values will be roughly the same.  For asynchronous
           steps, the total may be significantly lower than the sum, as
           multiple connections will be in progress simultanesously.  The
           avg/iter is the total time divided by the number of connections.
    
           In many cases, times may not be available or only available on the
           client.  Is such situations, the output will show 0.
    


## OPTIONS



           -s server_address
                  The network name or IP address of the server system
                  listening for connections.  The used name or address must
                  route over an RDMA device.  This option must be specified
                  by the client.
    
           -b bind_address
                  The local network address to bind to.
    
           -c connections
                  The number of connections to establish between the client
                  and server.  (default 100)
    
           -p port_number
                  The server's port number.
    
           -q base_qpn
                  The first QP number to use when creating connections
                  without allocating hardware QPs.  The test will use the
                  values between base_qpn and base_qpn plus connections when
                  connecting.  (default 1000)
    
           -n num_threads
                  Sets the number of threads to spawn used to process
                  connection events and hardware operations.  (default 1)
    
           -m mimic_qp_delay_us
                  "Simulates" QP creation and modify calls by replacing them
                  with a simple sleep function instead.  This allows testing
                  the CM at larger scale than would be practical, or even
                  possible given system configuration settings, if HW
                  resources needed to be allocated.
    
           -r retries
                  Number of retries when resolving address or route.
                  (default 2)
    
           -S     Run connection rate test using sockets.  This provides a
                  baseline comparison of RDMA connections versus TCP
                  connections.  Sockets are set to blocking mode.
    
           -t timeout_ms
                  Timeout in millseconds (ms) when resolving address or
                  route.  (default 2000 - 2 seconds)
    


## NOTES



           Basic usage is to start cmtime on a server system, then run cmtime
           -s server_name on a client system.
    
           Because this test maps RDMA resources to userspace, users must
           ensure that they have available system resources and permissions.
           See the libibverbs README file for additional details.
    


* * *