sockperf (3) - Linux Manuals
sockperf: SockPerf is a tool for network performance measurement written in C++.
NAME
sockperf - SockPerf is a tool for network performance measurement written in C++.
1. SUMMARY
SockPerf is a network testing tool oriented to measure network latency and also spikes of network latency. Tool can create UDP/TCP data streams and measure the throughput and latency of a network that is carrying them. SockPerf allows the user to define different parameters that can be used for testing a network, or alternately for optimizing or tuning a network. Tool provides a client and server functionality, and can measure the throughput and latency between the two endpoints, either unidirectonally or bi-directionally. This utility can be used in Linux systems.
2. INTRODUCTION
People are often concerned about measuring the maximum data throughput rate of a communications link or network access. A typical method of performing a measurement is to transfer a 'large' file and measure the time taken to do so. The throughput is then calculated by dividing the file size by the time to get the throughput in megabits, kilobits, or bits per second. Unfortunately, the results of such an exercise will result in the goodput which is less than the maximum throughput, leading to people believing that their communications link is not operating correctly. In fact, there are many overheads accounted for in good case in addition to transmission overheads, including latency, TCP Receive Window size and machine limitations, which means the calculated goodput does not reflect the maximum achievable throughput.
Another important thing of tool capacity is latency measurement. Latency - is the time it takes packet to go from user space program on one machine to user space program on another machine. Being able to quantify latency in terms other than millisecond response time is important when determining the quality of a network. One of available tool that can help administrators do just that is sockperf.
SockPerf works as an on-demand client and server test. How this works is that one system runs the sockperf server over a specified port and another system functions as a client running the sockperf client. The binaries are the same, and there is an option to have the role of client or server, so the roles can easily be reversed if necessary.
3. OVERVIEW
sockperf tests UDP/TCP network connection and maintance following functionality:
- •
- Measure latency;
- •
- Measure TX/RX bandwidth;
- •
- Measure packet loss;
- •
- Multicast;
- •
- Multi-threaded;
features:
- •
- Measure the RTT of packets in descrete way;
- •
- Provide full log of packet times;
- •
- Provide few modes to monitor multiple file descriptors as recv/select/epoll/poll;
- •
- Improved CPU utilization;
Initially the tool was developed to demonstrate advantages of VMA (Voltaire Messaging Accelerator). VMA is is a multicast-offload, dynamically linked, user space Linux library which serves to transparently enhance the performance of multicast networking heavy applications over the InfiniBand and 10 Gb Ethernet network. More interested user can read detail information at http://www.mellanox.com. Actually sockperf can be used natively, or with VMA accelartion and see the benefit of VMA.
SockPerf operates by sending packets from the client to the server, which then sends the packets back to the client. This measured roundtrip time is the route trip time (RTT) between the two machines on a specific network path. The average RTT is calculated by dividing the total number of packets that perform this round trip by some fixed period of time. The average latency for a given one-way path between the two machines is the average RTT divided by two.
SockPerf can work as server or execute under-load, ping-pong, playback and throughput tests and be a server or a client.
SockPerf can be launched in single point manner that is name as the first mode and using special formatted feed file named as the second mode.
Mode One:
$bin/sockperf server -i 224.18.7.81 -p 5001 sockperf: == version #1.0.0 == sockperf: No VMA version info sockperf: [SERVER] listen on: IP = 224.18.7.81 PORT = 5001 sockperf: Warmup stage (sending a few dummy packets)... sockperf: [tid 14325] using recvfrom() to block on socket(s)
Mode Two:
$bin/sockperf server -f conf.file -F s sockperf: == version #2.5.1831 == sockperf: No VMA version info sockperf: [SERVER] listen on: [ 0] IP = 192.168.161.129 PORT = 7001 # TCP [ 1] IP = 192.168.161.129 PORT = 7002 # TCP [ 2] IP = 192.168.161.129 PORT = 7003 # TCP [ 3] IP = 192.168.161.129 PORT = 7004 # TCP sockperf: Warmup stage (sending a few dummy packets)... sockperf: [tid 4857] using select() to block on socket(s)
Every line in feed file should have following format as where
- •
- [U|T] - UDP or TCP protocol;
- •
- address - Internet Protocol (IP) address;
- •
- port - Port number;
3.1 Available options
The following table describes sockperf options, and their possible values:
-h,-? --help,--usage Show the help message and exit. -d --debug Print extra debug information. -i --ip Listen on/send to ip <ip>. -p --port Listen on/connect to port <port> (default 11111). -m --msg-size Use messages of size <size> bytes (minimum default 14). -f --file Tread multiple ip+port combinations from file <file> (server uses select). -F --io-hanlder-type Type of multiple file descriptors handle [s|select|p|poll|e|epoll](default select). -a --activity Measure activity by printing a '.' for the last <N> packets processed. -A --Activity Measure activity by printing the duration for last <N> packets processed. --rx-mc-if <ip> address of interface on which to receive mulitcast packets (can be other then route table). --tx-mc-if <ip> address of interface on which to transmit mulitcast packets (can be other then route table). --timeout Set select/poll/epoll timeout to <msec>, -1 for infinite (default is 10 msec). --mc-loopback-enable Enables mc loopback (default disabled). --udp-buffer-size Set udp buffer size to <size> bytes. --vmazcopyread If possible use VMA's zero copy reads API (See VMA's readme). --daemonize Run as daemon. --nonblocked Open non-blocked sockets. --dontwarmup Don't send warm up packets on start. --pre-warmup-wait Time to wait before sending warm up packets (seconds). --no-rdtsc Don't use register when taking time; instead use monotonic clock. --load-vma Load VMA dynamically even when LD_PRELOAD was not used. --tcp Use TCP protocol (default UDP). --avoid-tcp-nodelay Delivering TCP Messages Immediately (default ON). --mc-ttl Limit the lifetime of the packet (default 2).
3.2 Server
Server options are:
--threads-num Run <N> threads on server side (requires '-f' option). --vmarxfiltercb If possible use VMA's receive path packet filter callback API (See VMA's readme). --force-unicast-rep Force server to reply via unicast. -g --gap-detection Enable gap-detection.
3.3 Client
sockperf supports different scenarios to run itself as a client. There are under-load, ping-pong, playback and throughput subcommands to select one of the scenarios.
- •
- under-load - run sockperf client for latency under load test;
- •
- ping-pong - run sockperf client for latency test in ping pong mode;
- •
- playback - run sockperf client for latency test using playback of predefined traffic, based on timeline and message size;
- •
- throughput - run sockperf client for one way throughput test;
General client options are:
-t --time Run for <sec> seconds (default 1, max = 36000000). -b --burst Control the client's number of a packets sent in every burst. -r --range comes with -m <size>, randomly change the messages size in range: <size> +- <N>. --data-integrity Perform data integrity test. --srv_num Set num of servers the client works with to N. --pps Set number of packets-per-second (default = 10000 - for under-load mode, or max - for ping-pong and throughput modes; for maximum use --pps=max). --sender-affinity Set sender thread affinity to the given core id (see: cat /proc/cpuinfo). --receiver-affinity Set receiver thread affinity to the given core id (see: cat /proc/cpuinfo). --full-log Dump full log of all packets send/receive time to the given file in CSV format.
3.4 Tools
SockPerf package contains few scripts that allow to generate special formatted file to launch tool in different configurations.- •
- filter.awk - can be used for filtering lines from the full log file based on given latency range;
- •
- gen1.awk - this awk script generates playback files (it is for stable PPS playback file);
- •
- gen2.awk - this awk script generates playback files using the input for this script is file with lines of the format: startTime; duration; startPPS; endPPS; msgSize (it is for linear increased and decreased PPS playback file);
create playback file using gen1.awk > pfile generated file: # ==== playback file for sockperf - generated by gen1.awk ==== #baseTime=1.000000; PPS=200000; runtime=1.000000; interval=0.000005; NUM_RECORDS=200000 # file contains 200000 records 1.000005000, 12 1.000010000, 12 1.000015000, 12 1.000020000, 12 1.000025000, 12 1.000030000, 12 1.000035000, 12 1.000040000, 12 ... 1.999950000, 12 1.999955000, 12 1.999960000, 12 1.999965000, 12 1.999970000, 12 1.999975000, 12 1.999980000, 12 1.999985000, 12 1.999990000, 12 1.999995000, 12 2.000000000, 12 #200000 records were written successfuly start server on ipX start client using: ./sockperf ping-pong -i <ip-address> -p <port> --playback=pfile
3.5 Usage
3.5.1 Running over IPoIB
- •
- Configure the routing table to map multicast addresses to the IPoIB interface on both client and server machines, as follows:
route add -net 224.0.0.0 netmask 240.0.0.0 dev ib0
Read 'copying' file in the root place.
Uncompress *.tar.gz file in Unix systems in the same folder with the file by runing the following command in the shell:
The sockperf package uses the GNU autotools compilation and installation framework.
These are generic installation instructions.
The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, a file `config.cache' that saves the results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure').
If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If at some point `config.cache' contains results you don't want to keep, you may remove or edit it.
The file `configure.in' is used to create `configure' by a program called `autoconf'. You only need `configure.in' if you want to change it or regenerate `configure' using a newer version of `autoconf'.
The simplest way to compile this package is:
Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for.
There are several options to ./config (or ./Configure) to customize the build:
To enable test scripts
To enable the documentation
To enable the special scripts
To compile with debug symbols and information:
This will define the _DEBUG variable at compile time.
Type './configure --help' for a list of all the configure options. Some of the options are generic autoconf options, while the SockPerf specific options are prefixed with 'SOCKPERF:' in the help text.
$sockperf server -i 224.18.7.81 -p 5001
sockperf: == version #1.0.0 ==
sockperf: No VMA version info
sockperf: [SERVER] listen on: IP = 224.18.7.81 PORT = 5001
sockperf: Warmup stage (sending a few dummy packets)...
sockperf: [tid 14325] using recvfrom() to block on socket(s)
$sockperf ping-pong -i 224.18.7.81 -p 5001 -m 16384 -t 10 --pps=max
sockperf: == version #1.0.0 ==
sockperf: No VMA version info
sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
IP = 224.18.7.81 PORT = 5001
sockperf: Warmup stage (sending a few dummy packets)...
sockperf: Starting test...
sockperf: Test end (interrupted by timer)
sockperf: Test ended
sockperf: ========= Printing statistics for Server No: 0
sockperf: [including warmup] RunTime=10.101 sec; SentMessages=128328; ReceivedMessages=128327
sockperf: ====> avg-lat= 39.273 (std-dev=2.468)
sockperf: # dropped packets = 0; # duplicated packets = 0; # out-of-order packets = 0
sockperf: Summary: Latency is 39.273 usec
sockperf: Total 127245 observations; each percentile contains 1272.45 observations
sockperf: ---> <MAX> observation = 94.539
sockperf: ---> percentile 99.99 = 76.736
sockperf: ---> percentile 99.90 = 58.677
sockperf: ---> percentile 99.50 = 56.926
sockperf: ---> percentile 99.00 = 55.974
sockperf: ---> percentile 95.00 = 40.823
sockperf: ---> percentile 90.00 = 40.517
sockperf: ---> percentile 75.00 = 39.736
sockperf: ---> percentile 50.00 = 38.919
sockperf: ---> percentile 25.00 = 38.303
sockperf: ---> <MIN> observation = 36.438
3.5.2 Running over 1 Gb Ethernet
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth2
$sockperf server -i 224.18.7.81 -p 5001
sockperf: == version #1.0.0 ==
sockperf: No VMA version info
sockperf: [SERVER] listen on: IP = 224.18.7.81 PORT = 5001
sockperf: Warmup stage (sending a few dummy packets)...
sockperf: [tid 14325] using recvfrom() to block on socket(s)
$sockperf ping-pong -i 224.18.7.81 -p 5001 -m 16384 -t 10 --pps=max
sockperf: == version #1.0.0 ==
sockperf: No VMA version info
sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
IP = 224.18.7.81 PORT = 5001
sockperf: Warmup stage (sending a few dummy packets)...
sockperf: Starting test...
sockperf: Test end (interrupted by timer)
sockperf: Test ended
sockperf: ========= Printing statistics for Server No: 0
sockperf: [including warmup] RunTime=10.101 sec; SentMessages=128328; ReceivedMessages=128327
sockperf: ====> avg-lat= 39.273 (std-dev=2.468)
sockperf: # dropped packets = 0; # duplicated packets = 0; # out-of-order packets = 0
sockperf: Summary: Latency is 39.273 usec
sockperf: Total 127245 observations; each percentile contains 1272.45 observations
sockperf: ---> <MAX> observation = 94.539
sockperf: ---> percentile 99.99 = 76.736
sockperf: ---> percentile 99.90 = 58.677
sockperf: ---> percentile 99.50 = 56.926
sockperf: ---> percentile 99.00 = 55.974
sockperf: ---> percentile 95.00 = 40.823
sockperf: ---> percentile 90.00 = 40.517
sockperf: ---> percentile 75.00 = 39.736
sockperf: ---> percentile 50.00 = 38.919
sockperf: ---> percentile 25.00 = 38.303
sockperf: ---> <MIN> observation = 36.438
3.5.3 Running over VMA InfiniBand
route add -net 224.0.0.0 netmask 240.0.0.0 dev ib0
$LD_PRELOAD=libvma.so sockperf server -i 224.18.7.81 -p 5001 --dontwarmup --mc-loopback-enable
VMA INFO : -------------------------------------------------
VMA INFO : Version: 4.0.3.0
VMA INFO : Revision: 2087
VMA INFO : Build Date: 2010-03-10-13:32:26
VMA INFO : Current Time: Fri Feb 25 15:50:29 2011
VMA INFO : Cmd Line: sockperf server -i 224.18.7.81 -p 5001 --dontwarmup --mc-loopback-enable
VMA INFO : Pid: 29483
VMA INFO : System: 2.6.18-164.el5
VMA INFO : Architecture: x86_64
VMA INFO : Node: mir1
VMA INFO : ---------------------------------------------------------
VMA INFO : Log Level 3 [VMA_TRACELEVEL]
VMA INFO : Log Details 0 [VMA_LOG_DETAILS]
VMA INFO : Log File [VMA_LOG_FILE]
VMA INFO : Log Colors Enabled [VMA_LOG_COLORS]
VMA INFO : SigIntr Ctrl-C Handle Disabled [VMA_HANDLE_SIGINTR]
VMA INFO : Tx Offload Enabled [VMA_TX_OFFLOAD]
VMA INFO : Tx Mem Bufs 1024 [VMA_TX_BUFS]
VMA INFO : Tx WR SGE 2 [VMA_TX_SGE]
VMA INFO : Tx Block Mode 0 [VMA_TX_BLOCK_MODE]
VMA INFO : Tx IP Checksum Enabled [VMA_TX_IP_CHECKSUM]
VMA INFO : Tx MC Loopback Enabled [VMA_TX_MC_LOOPBACK]
VMA INFO : Tx non-blocked eagains Disabled [VMA_TX_NONBLOCKED_EAGAINS]
VMA INFO : Tx Prefetch Bytes 256 [VMA_TX_PREFETCH_BYTES]
VMA INFO : Rx Offload Enabled [VMA_RX_OFFLOAD]
VMA INFO : Rx Mem Bufs 200000 [VMA_RX_BUFS]
VMA INFO : Rx QP WRE 16000 [VMA_RX_WRE]
VMA INFO : Rx Byte Min Limit 2000000 [VMA_RX_BYTES_MIN]
VMA INFO : Rx Poll Loops 1000 [VMA_RX_POLL]
VMA INFO : Rx Poll Init Loops 0 [VMA_RX_POLL_INIT]
VMA INFO : Rx Poll OS Ratio 10 [VMA_RX_POLL_OS_RATIO]
VMA INFO : Rx Poll Yield Disabled [VMA_RX_POLL_YIELD]
VMA INFO : Rx Skip OS 100 [VMA_RX_SKIP_OS]
VMA INFO : Rx Prefetch Bytes 256 [VMA_RX_PREFETCH_BYTES]
VMA INFO : Rx CQ Drain Rate Disabled [VMA_RX_CQ_DRAIN_RATE_NSEC]
VMA INFO : Select Poll (usec) 100 [VMA_SELECT_POLL]
VMA INFO : Select Poll OS Force Disabled [VMA_SELECT_POLL_OS_FORCE]
VMA INFO : Select Poll OS Ratio 10 [VMA_SELECT_POLL_OS_RATIO]
VMA INFO : Select Poll Yield Disabled [VMA_SELECT_POLL_YIELD]
VMA INFO : Select Skip OS 4 [VMA_SELECT_SKIP_OS]
VMA INFO : Select CQ Interrupts Enabled [VMA_SELECT_CQ_IRQ]
VMA INFO : CQ size (max) 65000 [VMA_CQ_SIZE_MAX]
VMA INFO : CQ Poll Batch (max) 16 [VMA_CQ_POLL_BATCH_MAX]
VMA INFO : CQ Drain Interval (msec) 10 [VMA_CQ_DRAIN_INTERVAL]
VMA INFO : CQ Drain WCE (max) 10000 [VMA_CQ_DRAIN_WCE_MAX]
VMA INFO : CQ Keeps QP Full Enabled [VMA_CQ_KEEP_QP_FULL]
VMA INFO : QP Compensation Level 256 [VMA_QP_COMPENSATION_LEVEL]
VMA INFO : QP MC Attach Disabled [VMA_QP_FORCE_MC_ATTACH]
VMA INFO : Timer Resolution (msec) 10 [VMA_TIMER_RESOLUTION_MSEC]
VMA INFO : Delay after join (msec) 0 [VMA_WAIT_AFTER_JOIN_MSEC]
VMA INFO : Delay after rereg (msec) 500 [VMA_WAIT_AFTER_REREG_MSEC]
VMA INFO : SL PBITS Override Disabled [VMA_SL_PBITS_OVERRIDE]
VMA INFO : Block UDP Port 53 [VMA_BLOCK_UDP_PORT]
VMA INFO : UC Offload Disabled [VMA_UC_OFFLOAD]
VMA INFO : Thread Mode Multi [VMA_THREAD_MODE]
VMA INFO : Huge Pages Enabled [VMA_HUGETBL]
VMA INFO : IGMP support Disabled [VMA_IGMP]
VMA INFO : fork() support Disabled [VMA_FORK]
VMA INFO : MTU 1500 [VMA_MTU]
VMA INFO : ---------------------------------------------------------
VMA WARNING: ***************************************************************
VMA WARNING: * NO IMMEDIATE ACTION NEEDED! *
VMA WARNING: * Not enough hugepage resources for VMA memory allocation. *
VMA WARNING: * VMA will continue working with regular memory allocation. *
VMA INFO : * Optional: 1. Disable VMA's hugepage support (VMA_HUGETBL=0) *
VMA INFO : * 2. Restart process after increasing the number of *
VMA INFO : * hugepages resources in the system: *
VMA INFO : * "cat /proc/meminfo | grep -i HugePage" *
VMA INFO : * "echo 1000000000 > /proc/sys/kernel/shmmax" *
VMA INFO : * "echo 400 > /proc/sys/vm/nr_hugepages" *
VMA WARNING: * Read more about the Huge Pages in the VMA's User Manual *
VMA WARNING: ***************************************************************
sockperf: [2;35m == version #2.3.1831 == [0m
sockperf: No VMA version info
sockperf: [SERVER] listen on:
[ 0] IP = 224.18.7.81 PORT = 5001 # UDP
sockperf: [tid 29483] using recvfrom() to block on socket(s)
$$LD_PRELOAD=libvma.so sockperf ping-pong -i 224.18.7.81 -p 5001 -t 10 -m 14 --pps=max --dontwarmup --mc-loopback-enable
VMA INFO : -------------------------------------------------
VMA INFO : Version: 4.0.3.0
VMA INFO : Revision: 2087
VMA INFO : Build Date: 2010-03-10-13:32:26
VMA INFO : Current Time: Fri Feb 25 15:50:51 2011
VMA INFO : Cmd Line: sockperf ping-pong -i 224.18.7.81 -p 5001 -t 10 -m 14 --pps=max --dontwarmup --mc-loopback-enable
VMA INFO : Pid: 3690
VMA INFO : System: 2.6.18-164.el5
VMA INFO : Architecture: x86_64
VMA INFO : Node: mir3
VMA INFO : ---------------------------------------------------------
VMA INFO : Log Level 3 [VMA_TRACELEVEL]
VMA INFO : Log Details 0 [VMA_LOG_DETAILS]
VMA INFO : Log File [VMA_LOG_FILE]
VMA INFO : Log Colors Enabled [VMA_LOG_COLORS]
VMA INFO : SigIntr Ctrl-C Handle Disabled [VMA_HANDLE_SIGINTR]
VMA INFO : Tx Offload Enabled [VMA_TX_OFFLOAD]
VMA INFO : Tx Mem Bufs 1024 [VMA_TX_BUFS]
VMA INFO : Tx WR SGE 2 [VMA_TX_SGE]
VMA INFO : Tx Block Mode 0 [VMA_TX_BLOCK_MODE]
VMA INFO : Tx IP Checksum Enabled [VMA_TX_IP_CHECKSUM]
VMA INFO : Tx MC Loopback Enabled [VMA_TX_MC_LOOPBACK]
VMA INFO : Tx non-blocked eagains Disabled [VMA_TX_NONBLOCKED_EAGAINS]
VMA INFO : Tx Prefetch Bytes 256 [VMA_TX_PREFETCH_BYTES]
VMA INFO : Rx Offload Enabled [VMA_RX_OFFLOAD]
VMA INFO : Rx Mem Bufs 200000 [VMA_RX_BUFS]
VMA INFO : Rx QP WRE 16000 [VMA_RX_WRE]
VMA INFO : Rx Byte Min Limit 2000000 [VMA_RX_BYTES_MIN]
VMA INFO : Rx Poll Loops 1000 [VMA_RX_POLL]
VMA INFO : Rx Poll Init Loops 0 [VMA_RX_POLL_INIT]
VMA INFO : Rx Poll OS Ratio 10 [VMA_RX_POLL_OS_RATIO]
VMA INFO : Rx Poll Yield Disabled [VMA_RX_POLL_YIELD]
VMA INFO : Rx Skip OS 100 [VMA_RX_SKIP_OS]
VMA INFO : Rx Prefetch Bytes 256 [VMA_RX_PREFETCH_BYTES]
VMA INFO : Rx CQ Drain Rate Disabled [VMA_RX_CQ_DRAIN_RATE_NSEC]
VMA INFO : Select Poll (usec) 100 [VMA_SELECT_POLL]
VMA INFO : Select Poll OS Force Disabled [VMA_SELECT_POLL_OS_FORCE]
VMA INFO : Select Poll OS Ratio 10 [VMA_SELECT_POLL_OS_RATIO]
VMA INFO : Select Poll Yield Disabled [VMA_SELECT_POLL_YIELD]
VMA INFO : Select Skip OS 4 [VMA_SELECT_SKIP_OS]
VMA INFO : Select CQ Interrupts Enabled [VMA_SELECT_CQ_IRQ]
VMA INFO : CQ size (max) 65000 [VMA_CQ_SIZE_MAX]
VMA INFO : CQ Poll Batch (max) 16 [VMA_CQ_POLL_BATCH_MAX]
VMA INFO : CQ Drain Interval (msec) 10 [VMA_CQ_DRAIN_INTERVAL]
VMA INFO : CQ Drain WCE (max) 10000 [VMA_CQ_DRAIN_WCE_MAX]
VMA INFO : CQ Keeps QP Full Enabled [VMA_CQ_KEEP_QP_FULL]
VMA INFO : QP Compensation Level 256 [VMA_QP_COMPENSATION_LEVEL]
VMA INFO : QP MC Attach Disabled [VMA_QP_FORCE_MC_ATTACH]
VMA INFO : Timer Resolution (msec) 10 [VMA_TIMER_RESOLUTION_MSEC]
VMA INFO : Delay after join (msec) 0 [VMA_WAIT_AFTER_JOIN_MSEC]
VMA INFO : Delay after rereg (msec) 500 [VMA_WAIT_AFTER_REREG_MSEC]
VMA INFO : SL PBITS Override Disabled [VMA_SL_PBITS_OVERRIDE]
VMA INFO : Block UDP Port 53 [VMA_BLOCK_UDP_PORT]
VMA INFO : UC Offload Disabled [VMA_UC_OFFLOAD]
VMA INFO : Thread Mode Multi [VMA_THREAD_MODE]
VMA INFO : Huge Pages Enabled [VMA_HUGETBL]
VMA INFO : IGMP support Disabled [VMA_IGMP]
VMA INFO : fork() support Disabled [VMA_FORK]
VMA INFO : MTU 1500 [VMA_MTU]
VMA INFO : ---------------------------------------------------------
VMA WARNING: ***************************************************************
VMA WARNING: * NO IMMEDIATE ACTION NEEDED! *
VMA WARNING: * Not enough hugepage resources for VMA memory allocation. *
VMA WARNING: * VMA will continue working with regular memory allocation. *
VMA INFO : * Optional: 1. Disable VMA's hugepage support (VMA_HUGETBL=0) *
VMA INFO : * 2. Restart process after increasing the number of *
VMA INFO : * hugepages resources in the system: *
VMA INFO : * "cat /proc/meminfo | grep -i HugePage" *
VMA INFO : * "echo 1000000000 > /proc/sys/kernel/shmmax" *
VMA INFO : * "echo 400 > /proc/sys/vm/nr_hugepages" *
VMA WARNING: * Read more about the Huge Pages in the VMA's User Manual *
VMA WARNING: ***************************************************************
sockperf: [2;35m == version #2.3.1831 == [0m
sockperf: No VMA version info
sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
[ 0] IP = 224.18.7.81 PORT = 5001 # UDP
sockperf: Starting test...
sockperf: Test end (interrupted by timer)
sockperf: Test ended
sockperf: ========= Printing statistics for Server No: 0
sockperf: [including warmup] RunTime=10.101 sec; SentMessages=1055837; ReceivedMessages=1055836
sockperf: [2;35m====> avg-lat= 4.763 (std-dev=16.094)[0m
sockperf: # dropped packets = 0; # duplicated packets = 0; # out-of-order packets = 0
sockperf: Summary: Latency is 4.763 usec
sockperf: [2;35mTotal 1045405 observations[0m; each percentile contains 10454.05 observations
sockperf: ---> <MAX> observation = 16314.458
sockperf: ---> percentile 99.99 = 41.409
sockperf: ---> percentile 99.90 = 6.868
sockperf: ---> percentile 99.50 = 6.627
sockperf: ---> percentile 99.00 = 6.464
sockperf: ---> percentile 95.00 = 5.033
sockperf: ---> percentile 90.00 = 4.799
sockperf: ---> percentile 75.00 = 4.734
sockperf: ---> percentile 50.00 = 4.679
sockperf: ---> percentile 25.00 = 4.632
sockperf: ---> <MIN> observation = 3.529
4. LICENSING
5. INSTALLATION
5.1 Requirements
What you will need to compile sockperf on Unix systems
5.2 Options to compile
5.3 How to install
Download sockperf-<version>.tar.gz.
tar -zxvf sockperf-<version>.tar.gz
gzip -d ./sockperf-<version>.tar.gz
tar -xf ./sockperf-<version>.tar
$ ./configure --prefix=<path to install>
$ ./configure --prefix=<path to install> --enable-test
$ ./configure --prefix=<path to install> --enable-doc
$ ./configure --prefix=<path to install> --enable-tool
$ ./configure --prefix=<path to install> --enable-debug
$ make
$ make install