Focus On Oracle

Installing, Backup & Recovery, Performance Tuning,
Troubleshooting, Upgrading, Patching

Oracle Engineered System


当前位置: 首页 » 技术文章 » 开源之美

qperf & iperf

qperf和iperf都是网络测试工具,可以测试带宽、延时情况。qperf默认在exadata上安装了,支持多种协议的测试,包括RDMA、SDP等。这个也是和iperf的主要区别。

qperf帮助信息

[root@dm06dbadm01 ~]# qperf  --help

Synopsis
    qperf
    qperf SERVERNODE [OPTIONS] TESTS

Description
    qperf measures bandwidth and latency between two nodes.  It can work
    over TCP/IP as well as the RDMA transports.  On one of the nodes, qperf
    is typically run with no arguments designating it the server node.  One
    may then run qperf on a client node to obtain measurements such as
    bandwidth, latency and cpu utilization.

    In its most basic form, qperf is run on one node in server mode by
    invoking it with no arguments.  On the other node, it is run with two
    arguments: the name of the server node followed by the name of the
    test.  A list of tests can be found in the section, TESTS.  A variety
    of options may also be specified.

    One can get more detailed information on qperf by using the --help
    option.  Below are examples of using the --help option:

        qperf --help examples       Some examples of using qperf
        qperf --help opts           Summary of options
        qperf --help options        Description of options
        qperf --help tests          Short summary and description of tests
        qperf --help TESTNAME       More information on test TESTNAME
qperf选项
[root@dm06dbadm01 ~]# qperf  --help options
--access_recv OnOff (-ar)
      If OnOff is non-zero, data is accessed once received.  Otherwise,
      data is ignored.  By default, OnOff is 0.  This can help to mimic
      some applications.
  -ar1
      Cause received data to be accessed.
--alt_port Port (-ap)
      Set alternate path port. This enables automatic path failover.
  --loc_alt_port Port (-lap)
      Set local alternate path port. This enables automatic path failover.
  --rem_alt_port Port (-rap)
      Set remote alternate path port. This enables automatic path failover.
--cpu_affinity PN (-ca)
      Set cpu affinity to PN.  CPUs are numbered sequentially from 0.  If
      PN is "any", any cpu is allowed otherwise the cpu is limited to the
      one specified.
  --loc_cpu_affinity PN (-lca)
      Set local processor affinity to PN.
  --rem_cpu_affinity PN (-rca)
      Set remote processor affinity to PN.
--flip OnOff (-f)
      If non-zero, cause sender and receiver to play opposite roles.
  -f1
      Cause sender and receiver to play opposite roles.
--help Topic (-h)
      Print out information about Topic.  To see the list of topics, type
          qperf --help
--host Host (-H)
      Run test between the current node and the qperf running on node Host.
      This can also be specified as the first non-option argument.
--id Device:Port (-i)
      Use RDMA Device and Port.
  --loc_id Device:Port (-li)
      Use local RDMA Device and Port.
  --rem_id Device:Port (-ri)
      Use remote RDMA Device and Port.
--listen_port Port (-lp)
      Set the port we listen on to ListenPort.  This must be set to the
      same port on both the server and client machines.  The default value
      is 19765.
--loop Var:Init:Last:Incr (-oo)
    Run a test multiple times sequencing through a series of values.  Var
    is the loop variable; Init is the initial value; Last is the value it
    must not exceed and Incr is the increment.  It is useful to set the
    --verbose_used (-vu) option in conjunction with this option.
--msg_size Size (-m)
      Set the message size to Size.  The default value varies by test.  It
      is assumed that the value is specified in bytes however, a trailing
      kib or K, mib or M, or gib or G indicates that the size is being
      specified in kibibytes, mebibytes or gibibytes respectively while a
      trailing kb or k, mb or m, or gb or g indicates kilobytes, megabytes
      or gigabytes respectively.
--mtu_size Size (-mt)
      Set the MTU size.  Only relevant to the RDMA UC/RC tests.  Units are
      specified in the same manner as the --msg_size option.
--no_msgs N (-n)
    Set test duration by number of messages sent instead of time.
--cq_poll OnOff (-cp)
      Turn polling mode on or off.  This is only relevant to the RDMA tests
      and determines whether they poll or wait on the completion queues.
      If OnOff is 0, they wait; otherwise they poll.
  --loc_cq_poll OnOff (-lcp)
      Locally turn polling mode on or off.
  --rem_cq_poll OnOff (-rcp)
      Remotely turn polling mode on or off.
  -cp1
      Turn polling mode on.
  -lcp1
      Turn local polling mode on.
  -rcp1
      Turn remote polling mode on.
--ip_port Port (-ip)
      Use Port to run the socket tests.  This is different from
      --listen_port which is used for synchronization.  This is only
      relevant for the socket tests and refers to the TCP/UDP/SDP/RDS/SCTP
      port that the test is run on.
--precision Digits (-e)
      Set the number of significant digits that are used to report results.
--rd_atomic Max (-nr)
      Set the number of in-flight operations that can be handled for a RDMA
      read or atomic operation to Max.  This is only relevant to the RDMA
      Read and Atomic tests.
  --loc_rd_atomic Max (-lnr)
      Set local read/atomic count.
  --rem_rd_atomic Max (-rnr)
      Set remote read/atomic count.
--service_level SL (-sl)
      Set RDMA service level to SL.  This is only used by the RDMA tests.
      The service level must be between 0 and 15.  The default service
      level is 0.
  --loc_service_level SL (-lsl)
      Set local service level.
  --rem_service_level SL (-rsl)
      Set remote service level.
--sock_buf_size Size (-sb)
      Set the socket buffer size.  This is only relevant to the socket
      tests.
  --loc_sock_buf_size Size (-lsb)
      Set local socket buffer size.
  --rem_sock_buf_size Size (-rsb)
      Set remote socket buffer size.
--src_path_bits N (-sp)
      Set source path bits. If the LMC is not zero, this will cause the
      connection to use a LID with the low order LMC bits set to N.
  --loc_src_path_bits N (-lsp)
      Set local source path bits.
  --rem_src_path_bits N (-rsp)
      Set remote source path bits.
--static_rate Rate (-sr)
      Force InfiniBand static rate.  Rate can be one of: 2.5, 5, 10, 20,
      30, 40, 60, 80, 120, 1xSDR (2.5 Gbps), 1xDDR (5 Gbps), 1xQDR (10
      Gbps), 4xSDR (2.5 Gbps), 4xDDR (5 Gbps), 4xQDR (10 Gbps), 8xSDR (2.5
      Gbps), 8xDDR (5 Gbps), 8xQDR (10 Gbps).
  --loc_static_rate (-lsr)
      Force local InfiniBand static rate
  --rem_static_rate (-rsr)
      Force remote InfiniBand static rate
--time Time (-t)
      Set test duration to Time.  Specified in seconds however a trailing
      m, h or d indicates that the time is specified in minutes, hours or
      days respectively.
--timeout Time (-to)
      Set timeout to Time.  This is the timeout used for various things
      such as exchanging messages.  The default is 5 seconds.
  --loc_timeout Time (-lto)
      Set local timeout to Time.  This may be used on the server to set
      the timeout when initially exchanging data with each client.
      However, as soon as we receive the client's parameters, the client's
      remote timeout will override this parameter.
  --rem_timeout Time (-rto)
      Set remote timeout to Time.
--unify_nodes (-un)
      Unify the nodes.  Describe them in terms of local and remote rather
      than send and receive.
--unify_units (-uu)
      Unify the units that results are shown in.  Uses the lowest common
      denominator.  Helpful for scripts.
--use_bits_per_sec (-ub)
      Use bits/sec rather than bytes/sec when displaying networking speed.
--use_cm OnOff (-cm)
      Use the RDMA Connection Manager (CM) if OnOff is non-zero.  It is
      necessary to use the CM for iWARP devices.  The default is to
      establish the connection without using the CM.  This only works for
      the tests that use the RC transport.
  -cm1
      Use RDMA Connection Manager.
--verbose (-v)
      Provide more detailed output.  Turns on -vc, -vs, -vt and -vu.
  --verbose_conf (-vc)
      Provide information on configuration.
  --verbose_stat (-vs)
      Provide information on statistics.
  --verbose_time (-vt)
      Provide information on timing.
  --verbose_used (-vu)
      Provide information on parameters used.
  --verbose_more (-vv)
      Provide even more detailed output.  Turns on -vvc, -vvs, -vvt and
      -vvu.
  --verbose_more_conf (-vvc)
      Provide more information on configuration.
  --verbose_more_stat (-vvs)
      Provide more information on statistics.
  --verbose_more_time (-vvt)
      Provide more information on timing.
  --verbose_more_used (-vvu)
      Provide more information on parameters used.
--version (-V)
      The current version of qperf is printed.
--wait_server Time (-ws)
      If the server is not ready, continue to try connecting for Time
      seconds before giving up.  The default is 5 seconds.
qperf测试选项
[root@dm06dbadm01 ~]# qperf  --help tests
Miscellaneous
    conf                    Show configuration
    quit                    Cause the server to quit
Socket Based
    rds_bw                  RDS streaming one way bandwidth
    rds_lat                 RDS one way latency
    sctp_bw                 SCTP streaming one way bandwidth
    sctp_lat                SCTP one way latency
    sdp_bw                  SDP streaming one way bandwidth
    sdp_lat                 SDP one way latency
    tcp_bw                  TCP streaming one way bandwidth
    tcp_lat                 TCP one way latency
    udp_bw                  UDP streaming one way bandwidth
    udp_lat                 UDP one way latency
RDMA Send/Receive
    rc_bi_bw                RC streaming two way bandwidth
    rc_bw                   RC streaming one way bandwidth
    rc_lat                  RC one way latency
    uc_bi_bw                UC streaming two way bandwidth
    uc_bw                   UC streaming one way bandwidth
    uc_lat                  UC one way latency
    ud_bi_bw                UD streaming two way bandwidth
    ud_bw                   UD streaming one way bandwidth
    ud_lat                  UD one way latency
    xrc_bi_bw               XRC streaming two way bandwidth
    xrc_bw                  XRC streaming one way bandwidth
    xrc_lat                 XRC one way latency
RDMA
    rc_rdma_read_bw         RC RDMA read streaming one way bandwidth
    rc_rdma_read_lat        RC RDMA read one way latency
    rc_rdma_write_bw        RC RDMA write streaming one way bandwidth
    rc_rdma_write_lat       RC RDMA write one way latency
    rc_rdma_write_poll_lat  RC RDMA write one way polling latency
    uc_rdma_write_bw        UC RDMA write streaming one way bandwidth
    uc_rdma_write_lat       UC RDMA write one way latency
    uc_rdma_write_poll_lat  UC RDMA write one way polling latency
InfiniBand Atomics
    rc_compare_swap_mr      RC compare and swap messaging rate
    rc_fetch_add_mr         RC fetch and add messaging rate
Verification
    ver_rc_compare_swap     Verify RC compare and swap
    ver_rc_fetch_add        Verify RC fetch and add
在第一个节点打开qperf server端
[root@dm06dbadm01 ~]# qperf
在另一节点测试
[root@dm06dbadm02 ~]# qperf -m 1000000 192.168.10.32 rds_bw rds_lat conf
rds_bw:
    bw  =  0 bytes/sec
rds_lat:
    latency  =  0 ns
conf:
    loc_node   =  dm06dbadm02.oracle.com
    loc_cpu    =  88 Cores: Mixed CPUs
    loc_os     =  Linux 4.1.12-61.33.1.el6uek.x86_64
    loc_qperf  =  0.4.9
    rem_node   =  dm06dbadm01.oracle.com
    rem_cpu    =  88 Cores: Mixed CPUs
    rem_os     =  Linux 4.1.12-61.33.1.el6uek.x86_64
    rem_qperf  =  0.4.9
[root@dm06dbadm02 ~]#
[root@dm06dbadm02 ~]#  qperf 192.168.10.32 rc_bi_bw
rc_bi_bw:
    bw  =  7.71 GB/sec
[root@dm06dbadm02 ~]#  qperf 192.168.10.32 rc_bi_bw
rc_bi_bw:
    bw  =  7.7 GB/sec
[root@dm06dbadm02 ~]#  qperf 192.168.10.32 rc_bi_bw
rc_bi_bw:
    bw  =  7.72 GB/sec
[root@dm06dbadm02 ~]#
[root@dm06dbadm02 ~]# qperf 192.168.10.32 rds_bw
rds_bw:
    bw  =  1.96 GB/sec
[root@dm06dbadm02 ~]# qperf 192.168.10.32 rds_bw
rds_bw:
    bw  =  1.64 GB/sec
[root@dm06dbadm02 ~]#
[root@dm06dbadm02 ~]# qperf 192.168.10.32 uc_bi_bw conf
uc_bi_bw:
    send_bw  =  7.76 GB/sec
    recv_bw  =  7.69 GB/sec
conf:
    loc_node   =  dm06dbadm02.oracle.com
    loc_cpu    =  88 Cores: Mixed CPUs
    loc_os     =  Linux 4.1.12-61.33.1.el6uek.x86_64
    loc_qperf  =  0.4.9
    rem_node   =  dm06dbadm01.oracle.com
    rem_cpu    =  88 Cores: Mixed CPUs
    rem_os     =  Linux 4.1.12-61.33.1.el6uek.x86_64
    rem_qperf  =  0.4.9
[root@dm06dbadm02 ~]#
[root@dm06dbadm02 ~]# qperf 192.168.10.32 tcp_bw conf
tcp_bw:
    bw  =  2.17 GB/sec
conf:
    loc_node   =  dm06dbadm02.oracle.com
    loc_cpu    =  88 Cores: Mixed CPUs
    loc_os     =  Linux 4.1.12-61.33.1.el6uek.x86_64
    loc_qperf  =  0.4.9
    rem_node   =  dm06dbadm01.oracle.com
    rem_cpu    =  88 Cores: Mixed CPUs
    rem_os     =  Linux 4.1.12-61.33.1.el6uek.x86_64
    rem_qperf  =  0.4.9
[root@dm06dbadm02 ~]#


Reference

https://iperf.fr/

http://www.mcs.anl.gov/~balaji/pubs/2010/ispass/ispass10.ipoib.pdf

https://www.mellanox.com/related-docs/prod_software/Performance_Tuning_Guide_for_Mellanox_Network_Adapters_Archive.pdf

https://community.mellanox.com/docs/DOC-2489

https://linux.die.net/man/1/qperf



关键词:rdma exadata 

相关文章

Exadata exafusion参数在不同版本的变化
19c新特性之实时统计信息收集
Oracle Exadata x8m-2的更新
Oracle Exadata十年
Oracle Exadata x8-2的更新
终于等到你,Oracle 19c真的来了
useful mos note for exadata
Exadata最权威最完整的学习资料
Exadata上收集Cell节点的日志
Exadata上如何重置Cell节点root密码当你忘记时
Oracle性能加速之Write-Back Flash Cache
Exadata and ASM
Top