1sockperf(3)                        sockperf                        sockperf(3)
2
3
4

NAME

6       sockperfSockPerf is a tool for network performance measurement written
7       in C++.
8

1. SUMMARY

10       SockPerf is a network testing tool oriented to measure network latency
11       and also spikes of network latency. Tool can create UDP/TCP data
12       streams and measure the throughput and latency of a network that is
13       carrying them. SockPerf allows the user to define different parameters
14       that can be used for testing a network, or alternately for optimizing
15       or tuning a network. Tool provides a client and server functionality,
16       and can measure the throughput and latency between the two endpoints,
17       either unidirectonally or bi-directionally. This utility can be used in
18       Linux systems.
19

2. INTRODUCTION

21       People are often concerned about measuring the maximum data throughput
22       rate of a communications link or network access. A typical method of
23       performing a measurement is to transfer a 'large' file and measure the
24       time taken to do so. The throughput is then calculated by dividing the
25       file size by the time to get the throughput in megabits, kilobits, or
26       bits per second. Unfortunately, the results of such an exercise will
27       result in the goodput which is less than the maximum throughput,
28       leading to people believing that their communications link is not
29       operating correctly. In fact, there are many overheads accounted for in
30       good case in addition to transmission overheads, including latency, TCP
31       Receive Window size and machine limitations, which means the calculated
32       goodput does not reflect the maximum achievable throughput.
33
34       Another important thing of tool capacity is latency measurement.
35       Latency - is the time it takes packet to go from user space program on
36       one machine to user space program on another machine. Being able to
37       quantify latency in terms other than millisecond response time is
38       important when determining the quality of a network. One of available
39       tool that can help administrators do just that is sockperf.
40
41       SockPerf works as an on-demand client and server test. How this works
42       is that one system runs the sockperf server over a specified port and
43       another system functions as a client running the sockperf client. The
44       binaries are the same, and there is an option to have the role of
45       client or server, so the roles can easily be reversed if necessary.
46

3. OVERVIEW

48       sockperf tests UDP/TCP network connection and maintance following
49       functionality:
50
51       · Measure latency;
52
53       · Measure TX/RX bandwidth;
54
55       · Measure packet loss;
56
57       · Multicast;
58
59       · Multi-threaded;
60
61       features:
62
63       · Measure the RTT of packets in descrete way;
64
65       · Provide full log of packet times;
66
67       · Provide few modes to monitor multiple file descriptors as
68         recv/select/epoll/poll;
69
70       · Improved CPU utilization;
71
72       Initially the tool was developed to demonstrate advantages of VMA
73       (Voltaire Messaging Accelerator). VMA is is a multicast-offload,
74       dynamically linked, user space Linux library which serves to
75       transparently enhance the performance of multicast networking heavy
76       applications over the InfiniBand and 10 Gb Ethernet network. More
77       interested user can read detail information at http://www.mellanox.com.
78       Actually sockperf can be used natively, or with VMA accelartion and see
79       the benefit of VMA.
80
81       SockPerf operates by sending packets from the client to the server,
82       which then sends the packets back to the client. This measured
83       roundtrip time is the route trip time (RTT) between the two machines on
84       a specific network path. The average RTT is calculated by dividing the
85       total number of packets that perform this round trip by some fixed
86       period of time. The average latency for a given one-way path between
87       the two machines is the average RTT divided by two.
88
89       SockPerf can work as server or execute under-load, ping-pong, playback
90       and throughput tests and be a server or a client.
91
92       SockPerf can be launched in single point manner that is name as the
93       first mode and using special formatted feed file named as the second
94       mode.
95
96       Mode One:
97
98       $bin/sockperf server -i 224.18.7.81 -p 5001
99       sockperf:  == version #1.0.0 ==
100       sockperf: No VMA version info
101       sockperf: [SERVER] listen on: IP = 224.18.7.81 PORT = 5001
102       sockperf: Warmup stage (sending a few dummy packets)...
103       sockperf: [tid 14325] using recvfrom() to block on socket(s)
104
105
106       Mode Two:
107
108       $bin/sockperf server -f conf.file -F s
109       sockperf:  == version #2.5.1831 ==
110       sockperf: No VMA version info
111       sockperf: [SERVER] listen on:
112       [ 0] IP = 192.168.161.129 PORT =  7001 # TCP
113       [ 1] IP = 192.168.161.129 PORT =  7002 # TCP
114       [ 2] IP = 192.168.161.129 PORT =  7003 # TCP
115       [ 3] IP = 192.168.161.129 PORT =  7004 # TCP
116       sockperf: Warmup stage (sending a few dummy packets)...
117       sockperf: [tid 4857] using select() to block on socket(s)
118
119
120       Every line in feed file should have following format as
121
122       where
123
124       · [U|T] - UDP or TCP protocol;
125
126       · address - Internet Protocol (IP) address;
127
128       · port - Port number;
129
130   3.1 Available options
131       The following table describes sockperf options, and their possible
132       values:
133
134       -h,-?   --help,--usage         Show the help message and exit.
135       -d      --debug                Print extra debug information.
136       -i      --ip                   Listen on/send to ip <ip>.
137       -p      --port                 Listen on/connect to port <port> (default 11111).
138       -m      --msg-size             Use messages of size <size> bytes (minimum default 14).
139       -f      --file                 Read multiple ip+port combinations from file <file>
140                                      (will use IO muxer '-F' such as epoll, poll or select)
141       -F      --io-hanlder-type      Type of multiple file descriptors handle
142                                      [s|select|p|poll|e|epoll](default epoll).
143       -a      --activity             Measure activity by printing a '.' for the last
144                                      <N> packets processed.
145       -A      --Activity             Measure activity by printing the duration for last
146                                      <N> packets processed.
147               --rx-mc-if             <ip> address of interface on which to receive mulitcast
148                                      packets (can be other then route table).
149               --tx-mc-if             <ip> address of interface on which to transmit mulitcast
150                                      packets (can be other then route table).
151               --timeout              Set select/poll/epoll timeout to <msec>, -1 for infinite
152                                      (default is 10 msec).
153               --mc-loopback-enable   Enables mc loopback (default disabled).
154               --udp-buffer-size      Set udp buffer size to <size> bytes.
155               --vmazcopyread         If possible use VMA's zero copy reads API (See VMA's readme).
156               --daemonize            Run as daemon.
157               --nonblocked           Open non-blocked sockets.
158               --dontwarmup           Don't send warm up packets on start.
159               --pre-warmup-wait      Time to wait before sending warm up packets (seconds).
160               --no-rdtsc             Don't use register when taking time; instead use monotonic clock.
161               --load-vma             Load VMA dynamically even when LD_PRELOAD was not used.
162
163               --tcp                  Use TCP protocol (default UDP).
164               --avoid-tcp-nodelay    Delivering TCP Messages Immediately (default ON).
165               --mc-ttl               Limit the lifetime of the packet (default 2).
166
167
168   3.2 Server
169       Server options are:
170
171               --threads-num          Run <N> threads on server side (requires '-f' option).
172               --vmarxfiltercb        If possible use VMA's receive path packet filter
173                                      callback API (See VMA's readme).
174               --force-unicast-rep    Force server to reply via unicast.
175       -g      --gap-detection        Enable gap-detection.
176
177
178   3.3 Client
179       sockperf supports different scenarios to run itself as a client. There
180       are under-load, ping-pong, playback and throughput subcommands to
181       select one of the scenarios.
182
183       · under-load - run sockperf client for latency under load test;
184
185       · ping-pong - run sockperf client for latency test in ping pong mode;
186
187       · playback - run sockperf client for latency test using playback of
188         predefined traffic, based on timeline and message size;
189
190       · throughput - run sockperf client for one way throughput test;
191
192       General client options are:
193
194       -t      --time                 Run for <sec> seconds (default 1, max = 36000000).
195       -b      --burst                Control the client's number of a packets sent in every burst.
196       -r      --range                comes with -m <size>, randomly change the messages size in range: <size> +- <N>.
197               --data-integrity       Perform data integrity test.
198               --srv_num              Set num of servers the client works with to N.
199               --pps                  Set number of packets-per-second (default = 10000 - for under-load mode, or max -
200                                      for ping-pong and throughput modes; for maximum use --pps=max).
201               --sender-affinity      Set sender thread affinity to the given core id (see: cat /proc/cpuinfo).
202               --receiver-affinity    Set receiver thread affinity to the given core id (see: cat /proc/cpuinfo).
203               --full-log             Dump full log of all packets send/receive time to the given file in CSV format.
204
205
206   3.4 Tools
207       SockPerf package contains few scripts that allow to generate special
208       formatted file to launch tool in different configurations.
209
210       · filter.awk - can be used for filtering lines from the full log file
211         based on given latency range;
212
213       · gen1.awk - this awk script generates playback files (it is for stable
214         PPS playback file);
215
216       · gen2.awk - this awk script generates playback files using the input
217         for this script is file with lines of the format: startTime;
218         duration; startPPS; endPPS; msgSize (it is for linear increased and
219         decreased PPS playback file);
220
221          create playback file using gen1.awk > pfile
222          generated file:
223       # ==== playback file for sockperf - generated by gen1.awk ====
224       #baseTime=1.000000; PPS=200000; runtime=1.000000; interval=0.000005; NUM_RECORDS=200000
225       # file contains 200000 records
226       1.000005000, 12
227       1.000010000, 12
228       1.000015000, 12
229       1.000020000, 12
230       1.000025000, 12
231       1.000030000, 12
232       1.000035000, 12
233       1.000040000, 12
234       ...
235       1.999950000, 12
236       1.999955000, 12
237       1.999960000, 12
238       1.999965000, 12
239       1.999970000, 12
240       1.999975000, 12
241       1.999980000, 12
242       1.999985000, 12
243       1.999990000, 12
244       1.999995000, 12
245       2.000000000, 12
246       #200000 records were written successfuly
247          start server on ipX
248          start client using: ./sockperf ping-pong -i <ip-address> -p <port> --playback=pfile
249
250   3.5 Usage
251   3.5.1 Running over IPoIB
252       · Configure the routing table to map multicast addresses to the IPoIB
253         interface on both client and server machines, as follows:
254
255       route add -net 224.0.0.0 netmask 240.0.0.0 dev ib0
256
257
258        In this case, ib0 is the IPoIB interface.
259
260       · Run the server as follows:
261
262       $sockperf server -i 224.18.7.81 -p 5001
263       sockperf:  == version #1.0.0 ==
264       sockperf: No VMA version info
265       sockperf: [SERVER] listen on: IP = 224.18.7.81 PORT = 5001
266       sockperf: Warmup stage (sending a few dummy packets)...
267       sockperf: [tid 14325] using recvfrom() to block on socket(s)
268
269
270       · Run the client as follows:
271
272       $sockperf ping-pong -i 224.18.7.81 -p 5001 -m 16384 -t 10 --pps=max
273       sockperf:  == version #1.0.0 ==
274       sockperf: No VMA version info
275       sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
276        IP = 224.18.7.81 PORT = 5001
277       sockperf: Warmup stage (sending a few dummy packets)...
278       sockperf: Starting test...
279       sockperf: Test end (interrupted by timer)
280       sockperf: Test ended
281       sockperf: ========= Printing statistics for Server No: 0
282       sockperf: [including warmup] RunTime=10.101 sec; SentMessages=128328; ReceivedMessages=128327
283       sockperf: ====> avg-lat= 39.273 (std-dev=2.468)
284       sockperf: # dropped packets = 0; # duplicated packets = 0; # out-of-order packets = 0
285       sockperf: Summary: Latency is 39.273 usec
286       sockperf: Total 127245 observations; each percentile contains 1272.45 observations
287       sockperf: ---> <MAX> observation =   94.539
288       sockperf: ---> percentile  99.99 =   76.736
289       sockperf: ---> percentile  99.90 =   58.677
290       sockperf: ---> percentile  99.50 =   56.926
291       sockperf: ---> percentile  99.00 =   55.974
292       sockperf: ---> percentile  95.00 =   40.823
293       sockperf: ---> percentile  90.00 =   40.517
294       sockperf: ---> percentile  75.00 =   39.736
295       sockperf: ---> percentile  50.00 =   38.919
296       sockperf: ---> percentile  25.00 =   38.303
297       sockperf: ---> <MIN> observation =   36.438
298
299
300   3.5.2 Running over 1 Gb Ethernet
301       · Configure the routing table to map multicast addresses to the
302         Ethernet interface on both client and server machines, as follows:
303
304       route add -net 224.0.0.0 netmask 240.0.0.0 dev eth2
305
306
307        In this case, eth2 is the Ethernet interface.
308
309       · Run the server as follows:
310
311       $sockperf server -i 224.18.7.81 -p 5001
312       sockperf:  == version #1.0.0 ==
313       sockperf: No VMA version info
314       sockperf: [SERVER] listen on: IP = 224.18.7.81 PORT = 5001
315       sockperf: Warmup stage (sending a few dummy packets)...
316       sockperf: [tid 14325] using recvfrom() to block on socket(s)
317
318
319       · Run the client as follows:
320
321       $sockperf ping-pong -i 224.18.7.81 -p 5001 -m 16384 -t 10 --pps=max
322       sockperf:  == version #1.0.0 ==
323       sockperf: No VMA version info
324       sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
325        IP = 224.18.7.81 PORT = 5001
326       sockperf: Warmup stage (sending a few dummy packets)...
327       sockperf: Starting test...
328       sockperf: Test end (interrupted by timer)
329       sockperf: Test ended
330       sockperf: ========= Printing statistics for Server No: 0
331       sockperf: [including warmup] RunTime=10.101 sec; SentMessages=128328; ReceivedMessages=128327
332       sockperf: ====> avg-lat= 39.273 (std-dev=2.468)
333       sockperf: # dropped packets = 0; # duplicated packets = 0; # out-of-order packets = 0
334       sockperf: Summary: Latency is 39.273 usec
335       sockperf: Total 127245 observations; each percentile contains 1272.45 observations
336       sockperf: ---> <MAX> observation =   94.539
337       sockperf: ---> percentile  99.99 =   76.736
338       sockperf: ---> percentile  99.90 =   58.677
339       sockperf: ---> percentile  99.50 =   56.926
340       sockperf: ---> percentile  99.00 =   55.974
341       sockperf: ---> percentile  95.00 =   40.823
342       sockperf: ---> percentile  90.00 =   40.517
343       sockperf: ---> percentile  75.00 =   39.736
344       sockperf: ---> percentile  50.00 =   38.919
345       sockperf: ---> percentile  25.00 =   38.303
346       sockperf: ---> <MIN> observation =   36.438
347
348
349   3.5.3 Running over VMA InfiniBand
350       · Configure the routing table to map multicast addresses to the IPoIB
351         interface on both client and server machines, as follows:
352
353       route add -net 224.0.0.0 netmask 240.0.0.0 dev ib0
354
355
356        In this case, ib0 is the IPoIB interface.
357
358       · Run the server as follows:
359
360       $LD_PRELOAD=libvma.so sockperf server -i 224.18.7.81 -p 5001 --dontwarmup --mc-loopback-enable
361        VMA INFO   : -------------------------------------------------
362        VMA INFO   : Version: 4.0.3.0
363        VMA INFO   : Revision: 2087
364        VMA INFO   : Build Date: 2010-03-10-13:32:26
365        VMA INFO   : Current Time: Fri Feb 25 15:50:29 2011
366        VMA INFO   : Cmd Line: sockperf server -i 224.18.7.81 -p 5001 --dontwarmup --mc-loopback-enable
367        VMA INFO   : Pid: 29483
368        VMA INFO   : System: 2.6.18-164.el5
369        VMA INFO   : Architecture: x86_64
370        VMA INFO   : Node: mir1
371        VMA INFO   : ---------------------------------------------------------
372        VMA INFO   :  Log Level                3                [VMA_TRACELEVEL]
373        VMA INFO   :  Log Details              0                [VMA_LOG_DETAILS]
374        VMA INFO   :  Log File                                  [VMA_LOG_FILE]
375        VMA INFO   :  Log Colors               Enabled          [VMA_LOG_COLORS]
376        VMA INFO   :  SigIntr Ctrl-C Handle    Disabled         [VMA_HANDLE_SIGINTR]
377        VMA INFO   :  Tx Offload               Enabled          [VMA_TX_OFFLOAD]
378        VMA INFO   :  Tx Mem Bufs              1024             [VMA_TX_BUFS]
379        VMA INFO   :  Tx WR SGE                2                [VMA_TX_SGE]
380        VMA INFO   :  Tx Block Mode            0                [VMA_TX_BLOCK_MODE]
381        VMA INFO   :  Tx IP Checksum           Enabled          [VMA_TX_IP_CHECKSUM]
382        VMA INFO   :  Tx MC Loopback           Enabled          [VMA_TX_MC_LOOPBACK]
383        VMA INFO   :  Tx non-blocked eagains   Disabled         [VMA_TX_NONBLOCKED_EAGAINS]
384        VMA INFO   :  Tx Prefetch Bytes        256              [VMA_TX_PREFETCH_BYTES]
385        VMA INFO   :  Rx Offload               Enabled          [VMA_RX_OFFLOAD]
386        VMA INFO   :  Rx Mem Bufs              200000           [VMA_RX_BUFS]
387        VMA INFO   :  Rx QP WRE                16000            [VMA_RX_WRE]
388        VMA INFO   :  Rx Byte Min Limit        2000000          [VMA_RX_BYTES_MIN]
389        VMA INFO   :  Rx Poll Loops            1000             [VMA_RX_POLL]
390        VMA INFO   :  Rx Poll Init Loops       0                [VMA_RX_POLL_INIT]
391        VMA INFO   :  Rx Poll OS Ratio         10               [VMA_RX_POLL_OS_RATIO]
392        VMA INFO   :  Rx Poll Yield            Disabled         [VMA_RX_POLL_YIELD]
393        VMA INFO   :  Rx Skip OS               100              [VMA_RX_SKIP_OS]
394        VMA INFO   :  Rx Prefetch Bytes        256              [VMA_RX_PREFETCH_BYTES]
395        VMA INFO   :  Rx CQ Drain Rate         Disabled         [VMA_RX_CQ_DRAIN_RATE_NSEC]
396        VMA INFO   :  Select Poll (usec)       100              [VMA_SELECT_POLL]
397        VMA INFO   :  Select Poll OS Force     Disabled         [VMA_SELECT_POLL_OS_FORCE]
398        VMA INFO   :  Select Poll OS Ratio     10               [VMA_SELECT_POLL_OS_RATIO]
399        VMA INFO   :  Select Poll Yield        Disabled         [VMA_SELECT_POLL_YIELD]
400        VMA INFO   :  Select Skip OS           4                [VMA_SELECT_SKIP_OS]
401        VMA INFO   :  Select CQ Interrupts     Enabled          [VMA_SELECT_CQ_IRQ]
402        VMA INFO   :  CQ size (max)            65000            [VMA_CQ_SIZE_MAX]
403        VMA INFO   :  CQ Poll Batch (max)      16               [VMA_CQ_POLL_BATCH_MAX]
404        VMA INFO   :  CQ Drain Interval (msec) 10               [VMA_CQ_DRAIN_INTERVAL]
405        VMA INFO   :  CQ Drain WCE (max)       10000            [VMA_CQ_DRAIN_WCE_MAX]
406        VMA INFO   :  CQ Keeps QP Full         Enabled          [VMA_CQ_KEEP_QP_FULL]
407        VMA INFO   :  QP Compensation Level    256              [VMA_QP_COMPENSATION_LEVEL]
408        VMA INFO   :  QP MC Attach             Disabled         [VMA_QP_FORCE_MC_ATTACH]
409        VMA INFO   :  Timer Resolution (msec)  10               [VMA_TIMER_RESOLUTION_MSEC]
410        VMA INFO   :  Delay after join (msec)  0                [VMA_WAIT_AFTER_JOIN_MSEC]
411        VMA INFO   :  Delay after rereg (msec) 500              [VMA_WAIT_AFTER_REREG_MSEC]
412        VMA INFO   :  SL PBITS Override        Disabled         [VMA_SL_PBITS_OVERRIDE]
413        VMA INFO   :  Block UDP Port           53               [VMA_BLOCK_UDP_PORT]
414        VMA INFO   :  UC Offload               Disabled         [VMA_UC_OFFLOAD]
415        VMA INFO   :  Thread Mode              Multi            [VMA_THREAD_MODE]
416        VMA INFO   :  Huge Pages               Enabled          [VMA_HUGETBL]
417        VMA INFO   :  IGMP support             Disabled         [VMA_IGMP]
418        VMA INFO   :  fork() support           Disabled         [VMA_FORK]
419        VMA INFO   :  MTU                      1500             [VMA_MTU]
420        VMA INFO   : ---------------------------------------------------------
421        VMA WARNING: ***************************************************************
422        VMA WARNING: * NO IMMEDIATE ACTION NEEDED!                                 *
423        VMA WARNING: * Not enough hugepage resources for VMA memory allocation.    *
424        VMA WARNING: * VMA will continue working with regular memory allocation.   *
425        VMA INFO   : * Optional: 1. Disable VMA's hugepage support (VMA_HUGETBL=0) *
426        VMA INFO   : *           2. Restart process after increasing the number of *
427        VMA INFO   : *              hugepages resources in the system:             *
428        VMA INFO   : * "cat /proc/meminfo |  grep -i HugePage"                     *
429        VMA INFO   : * "echo 1000000000 > /proc/sys/kernel/shmmax"                 *
430        VMA INFO   : * "echo 400 > /proc/sys/vm/nr_hugepages"                      *
431        VMA WARNING: * Read more about the Huge Pages in the VMA's User Manual     *
432        VMA WARNING: ***************************************************************
433       sockperf: [2;35m == version #2.3.1831 == [0m
434       sockperf: No VMA version info
435       sockperf: [SERVER] listen on:
436       [ 0] IP = 224.18.7.81     PORT =  5001 # UDP
437       sockperf: [tid 29483] using recvfrom() to block on socket(s)
438
439
440       · Run the client as follows:
441
442       $$LD_PRELOAD=libvma.so sockperf ping-pong -i 224.18.7.81 -p 5001 -t 10 -m 14 --pps=max --dontwarmup --mc-loopback-enable
443        VMA INFO   : -------------------------------------------------
444        VMA INFO   : Version: 4.0.3.0
445        VMA INFO   : Revision: 2087
446        VMA INFO   : Build Date: 2010-03-10-13:32:26
447        VMA INFO   : Current Time: Fri Feb 25 15:50:51 2011
448        VMA INFO   : Cmd Line: sockperf ping-pong -i 224.18.7.81 -p 5001 -t 10 -m 14 --pps=max --dontwarmup --mc-loopback-enable
449        VMA INFO   : Pid:  3690
450        VMA INFO   : System: 2.6.18-164.el5
451        VMA INFO   : Architecture: x86_64
452        VMA INFO   : Node: mir3
453        VMA INFO   : ---------------------------------------------------------
454        VMA INFO   :  Log Level                3                [VMA_TRACELEVEL]
455        VMA INFO   :  Log Details              0                [VMA_LOG_DETAILS]
456        VMA INFO   :  Log File                                  [VMA_LOG_FILE]
457        VMA INFO   :  Log Colors               Enabled          [VMA_LOG_COLORS]
458        VMA INFO   :  SigIntr Ctrl-C Handle    Disabled         [VMA_HANDLE_SIGINTR]
459        VMA INFO   :  Tx Offload               Enabled          [VMA_TX_OFFLOAD]
460        VMA INFO   :  Tx Mem Bufs              1024             [VMA_TX_BUFS]
461        VMA INFO   :  Tx WR SGE                2                [VMA_TX_SGE]
462        VMA INFO   :  Tx Block Mode            0                [VMA_TX_BLOCK_MODE]
463        VMA INFO   :  Tx IP Checksum           Enabled          [VMA_TX_IP_CHECKSUM]
464        VMA INFO   :  Tx MC Loopback           Enabled          [VMA_TX_MC_LOOPBACK]
465        VMA INFO   :  Tx non-blocked eagains   Disabled         [VMA_TX_NONBLOCKED_EAGAINS]
466        VMA INFO   :  Tx Prefetch Bytes        256              [VMA_TX_PREFETCH_BYTES]
467        VMA INFO   :  Rx Offload               Enabled          [VMA_RX_OFFLOAD]
468        VMA INFO   :  Rx Mem Bufs              200000           [VMA_RX_BUFS]
469        VMA INFO   :  Rx QP WRE                16000            [VMA_RX_WRE]
470        VMA INFO   :  Rx Byte Min Limit        2000000          [VMA_RX_BYTES_MIN]
471        VMA INFO   :  Rx Poll Loops            1000             [VMA_RX_POLL]
472        VMA INFO   :  Rx Poll Init Loops       0                [VMA_RX_POLL_INIT]
473        VMA INFO   :  Rx Poll OS Ratio         10               [VMA_RX_POLL_OS_RATIO]
474        VMA INFO   :  Rx Poll Yield            Disabled         [VMA_RX_POLL_YIELD]
475        VMA INFO   :  Rx Skip OS               100              [VMA_RX_SKIP_OS]
476        VMA INFO   :  Rx Prefetch Bytes        256              [VMA_RX_PREFETCH_BYTES]
477        VMA INFO   :  Rx CQ Drain Rate         Disabled         [VMA_RX_CQ_DRAIN_RATE_NSEC]
478        VMA INFO   :  Select Poll (usec)       100              [VMA_SELECT_POLL]
479        VMA INFO   :  Select Poll OS Force     Disabled         [VMA_SELECT_POLL_OS_FORCE]
480        VMA INFO   :  Select Poll OS Ratio     10               [VMA_SELECT_POLL_OS_RATIO]
481        VMA INFO   :  Select Poll Yield        Disabled         [VMA_SELECT_POLL_YIELD]
482        VMA INFO   :  Select Skip OS           4                [VMA_SELECT_SKIP_OS]
483        VMA INFO   :  Select CQ Interrupts     Enabled          [VMA_SELECT_CQ_IRQ]
484        VMA INFO   :  CQ size (max)            65000            [VMA_CQ_SIZE_MAX]
485        VMA INFO   :  CQ Poll Batch (max)      16               [VMA_CQ_POLL_BATCH_MAX]
486        VMA INFO   :  CQ Drain Interval (msec) 10               [VMA_CQ_DRAIN_INTERVAL]
487        VMA INFO   :  CQ Drain WCE (max)       10000            [VMA_CQ_DRAIN_WCE_MAX]
488        VMA INFO   :  CQ Keeps QP Full         Enabled          [VMA_CQ_KEEP_QP_FULL]
489        VMA INFO   :  QP Compensation Level    256              [VMA_QP_COMPENSATION_LEVEL]
490        VMA INFO   :  QP MC Attach             Disabled         [VMA_QP_FORCE_MC_ATTACH]
491        VMA INFO   :  Timer Resolution (msec)  10               [VMA_TIMER_RESOLUTION_MSEC]
492        VMA INFO   :  Delay after join (msec)  0                [VMA_WAIT_AFTER_JOIN_MSEC]
493        VMA INFO   :  Delay after rereg (msec) 500              [VMA_WAIT_AFTER_REREG_MSEC]
494        VMA INFO   :  SL PBITS Override        Disabled         [VMA_SL_PBITS_OVERRIDE]
495        VMA INFO   :  Block UDP Port           53               [VMA_BLOCK_UDP_PORT]
496        VMA INFO   :  UC Offload               Disabled         [VMA_UC_OFFLOAD]
497        VMA INFO   :  Thread Mode              Multi            [VMA_THREAD_MODE]
498        VMA INFO   :  Huge Pages               Enabled          [VMA_HUGETBL]
499        VMA INFO   :  IGMP support             Disabled         [VMA_IGMP]
500        VMA INFO   :  fork() support           Disabled         [VMA_FORK]
501        VMA INFO   :  MTU                      1500             [VMA_MTU]
502        VMA INFO   : ---------------------------------------------------------
503        VMA WARNING: ***************************************************************
504        VMA WARNING: * NO IMMEDIATE ACTION NEEDED!                                 *
505        VMA WARNING: * Not enough hugepage resources for VMA memory allocation.    *
506        VMA WARNING: * VMA will continue working with regular memory allocation.   *
507        VMA INFO   : * Optional: 1. Disable VMA's hugepage support (VMA_HUGETBL=0) *
508        VMA INFO   : *           2. Restart process after increasing the number of *
509        VMA INFO   : *              hugepages resources in the system:             *
510        VMA INFO   : * "cat /proc/meminfo |  grep -i HugePage"                     *
511        VMA INFO   : * "echo 1000000000 > /proc/sys/kernel/shmmax"                 *
512        VMA INFO   : * "echo 400 > /proc/sys/vm/nr_hugepages"                      *
513        VMA WARNING: * Read more about the Huge Pages in the VMA's User Manual     *
514        VMA WARNING: ***************************************************************
515       sockperf: [2;35m == version #2.3.1831 == [0m
516       sockperf: No VMA version info
517       sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
518
519       [ 0] IP = 224.18.7.81     PORT =  5001 # UDP
520       sockperf: Starting test...
521       sockperf: Test end (interrupted by timer)
522       sockperf: Test ended
523       sockperf: ========= Printing statistics for Server No: 0
524       sockperf: [including warmup] RunTime=10.101 sec; SentMessages=1055837; ReceivedMessages=1055836
525       sockperf: [2;35m====> avg-lat=  4.763 (std-dev=16.094)[0m
526       sockperf: # dropped packets = 0; # duplicated packets = 0; # out-of-order packets = 0
527       sockperf: Summary: Latency is 4.763 usec
528       sockperf: [2;35mTotal 1045405 observations[0m; each percentile contains 10454.05 observations
529       sockperf: ---> <MAX> observation = 16314.458
530       sockperf: ---> percentile  99.99 =   41.409
531       sockperf: ---> percentile  99.90 =    6.868
532       sockperf: ---> percentile  99.50 =    6.627
533       sockperf: ---> percentile  99.00 =    6.464
534       sockperf: ---> percentile  95.00 =    5.033
535       sockperf: ---> percentile  90.00 =    4.799
536       sockperf: ---> percentile  75.00 =    4.734
537       sockperf: ---> percentile  50.00 =    4.679
538       sockperf: ---> percentile  25.00 =    4.632
539       sockperf: ---> <MIN> observation =    3.529
540
541

4. LICENSING

543       Read 'copying' file in the root place.
544

5. INSTALLATION

546   5.1 Requirements
547       What you will need to compile sockperf on Unix systems
548
549       · perl 5.8+ (used by the automake tools)
550
551       · GNU make tools: automake 1.7+, autoconf 2.57+, m4 1.4+ and libtool
552         1.4+
553
554       · A Compiler, among those tested are:
555
556         · gcc4 (Ubuntu 9)
557
558         · gcc4 (Red Hat 4.x)
559
560   5.2 Options to compile
561   5.3 How to install
562       Download sockperf-<version>.tar.gz.
563
564       Uncompress *.tar.gz file in Unix systems in the same folder with the
565       file by runing the following command in the shell:
566
567       tar -zxvf sockperf-<version>.tar.gz
568
569
570        or 2 command:
571
572       gzip -d ./sockperf-<version>.tar.gz
573       tar -xf ./sockperf-<version>.tar
574
575
576       The sockperf package uses the GNU autotools compilation and
577       installation framework.
578
579       These are generic installation instructions.
580
581       The `configure' shell script attempts to guess correct values for
582       various system-dependent variables used during compilation. It uses
583       those values to create a `Makefile' in each directory of the package.
584       It may also create one or more `.h' files containing system-dependent
585       definitions. Finally, it creates a shell script `config.status' that
586       you can run in the future to recreate the current configuration, a file
587       `config.cache' that saves the results of its tests to speed up
588       reconfiguring, and a file `config.log' containing compiler output
589       (useful mainly for debugging `configure').
590
591       If you need to do unusual things to compile the package, please try to
592       figure out how `configure' could check whether to do them, and mail
593       diffs or instructions to the address given in the `README' so they can
594       be considered for the next release. If at some point `config.cache'
595       contains results you don't want to keep, you may remove or edit it.
596
597       The file `configure.in' is used to create `configure' by a program
598       called `autoconf'. You only need `configure.in' if you want to change
599       it or regenerate `configure' using a newer version of `autoconf'.
600
601       The simplest way to compile this package is:
602
603       1.  `cd' to the directory containing the package's source code and type
604           `./configure' to configure the package for your system. If you're
605           using `csh' on an old version of System V, you might need to type
606           `sh ./configure' instead to prevent `csh' from trying to execute
607           `configure' itself.
608
609       Running `configure' takes awhile. While running, it prints some
610       messages telling which features it is checking for.
611
612       $ ./configure --prefix=<path to install>
613
614
615       There are several options to ./config (or ./Configure) to customize the
616       build:
617
618       To enable test scripts
619
620       $ ./configure --prefix=<path to install> --enable-test
621
622
623       To enable the documentation
624
625       $ ./configure --prefix=<path to install> --enable-doc
626
627
628       To enable the special scripts
629
630       $ ./configure --prefix=<path to install> --enable-tool
631
632
633       To compile with debug symbols and information:
634
635       $ ./configure --prefix=<path to install> --enable-debug
636
637
638       This will define the _DEBUG variable at compile time.
639
640       Type './configure --help' for a list of all the configure options. Some
641       of the options are generic autoconf options, while the SockPerf
642       specific options are prefixed with 'SOCKPERF:' in the help text.
643
644       2.  Type `make' to compile the package.
645
646       $ make
647
648
649       3.  Optionally, type `make check' to run any self-tests that come with
650           the package.
651
652       4.  Type `make install' to install the programs and any data files and
653           documentation.
654
655       $ make install
656
657
658       5.  You can remove the program binaries and object files from the
659           source code directory by typing `make clean'. To also remove the
660           files that `configure' created (so you can compile the package for
661           a different kind of computer), type `make distclean'. There is also
662           a `make maintainer-clean' target, but that is intended mainly for
663           the package's developers. If you use it, you may have to get all
664           sorts of other programs in order to regenerate files that came with
665           the distribution.
666
667Version 3.5-no.git              Sun Feb 3 2019                     sockperf(3)
Impressum