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
- •
- Run the server as follows:
$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)
- •
- Run the client as follows:
$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
- •
- Configure the routing table to map multicast addresses to the Ethernet interface on both client and server machines, as follows:
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth2
- •
- Run the server as follows:
$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)
- •
- Run the client as follows:
$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
- •
- 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
- •
- Run the server as follows:
$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)
- •
- Run the client as follows:
$$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
Read 'copying' file in the root place.
5. INSTALLATION
5.1 Requirements
What you will need to compile sockperf on Unix systems
- •
- perl 5.8+ (used by the automake tools)
- •
- GNU make tools: automake 1.7+, autoconf 2.57+, m4 1.4+ and libtool 1.4+
- •
- A Compiler, among those tested are:
- •
- gcc4 (Ubuntu 9)
- •
- gcc4 (Red Hat 4.x)
5.2 Options to compile
5.3 How to install
Download sockperf-<version>.tar.gz.Uncompress *.tar.gz file in Unix systems in the same folder with the file by runing the following command in the shell:
tar -zxvf sockperf-<version>.tar.gz
gzip -d ./sockperf-<version>.tar.gz tar -xf ./sockperf-<version>.tar
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:
- 1.
- `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself.
Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for.
$ ./configure --prefix=<path to install>
There are several options to ./config (or ./Configure) to customize the build:
To enable test scripts
$ ./configure --prefix=<path to install> --enable-test
To enable the documentation
$ ./configure --prefix=<path to install> --enable-doc
To enable the special scripts
$ ./configure --prefix=<path to install> --enable-tool
To compile with debug symbols and information:
$ ./configure --prefix=<path to install> --enable-debug
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.
- 2.
- Type `make' to compile the package.
$ make
- 3.
- Optionally, type `make check' to run any self-tests that come with the package.
- 4.
- Type `make install' to install the programs and any data files and documentation.
$ make install
- 5.
- You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution.