1sockperf(3) sockperf sockperf(3)
2
3
4
6 sockperfSockPerf is a tool for network performance measurement written
7 in C++.
8
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
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
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 - [U|T] - UDP or TCP protocol;
124
125 · address - Internet Protocol (IP) address;
126
127 · port - Port number;
128
129 3.1 Available options
130 The following table describes sockperf options, and their possible
131 values:
132
133 -h,-? --help,--usage Show the help message and exit.
134 -d --debug Print extra debug information.
135 -i --ip Listen on/send to ip <ip>.
136 -p --port Listen on/connect to port <port> (default 11111).
137 -m --msg-size Use messages of size <size> bytes (minimum default 14).
138 -f --file Read multiple ip+port combinations from file <file>
139 (will use IO muxer '-F' such as epoll, poll or select)
140 -F --io-hanlder-type Type of multiple file descriptors handle
141 [s|select|p|poll|e|epoll](default epoll).
142 -a --activity Measure activity by printing a '.' for the last
143 <N> packets processed.
144 -A --Activity Measure activity by printing the duration for last
145 <N> packets processed.
146 --rx-mc-if <ip> address of interface on which to receive mulitcast
147 packets (can be other then route table).
148 --tx-mc-if <ip> address of interface on which to transmit mulitcast
149 packets (can be other then route table).
150 --timeout Set select/poll/epoll timeout to <msec>, -1 for infinite
151 (default is 10 msec).
152 --mc-loopback-enable Enables mc loopback (default disabled).
153 --udp-buffer-size Set udp buffer size to <size> bytes.
154 --vmazcopyread If possible use VMA's zero copy reads API (See VMA's readme).
155 --daemonize Run as daemon.
156 --nonblocked Open non-blocked sockets.
157 --dontwarmup Don't send warm up packets on start.
158 --pre-warmup-wait Time to wait before sending warm up packets (seconds).
159 --no-rdtsc Don't use register when taking time; instead use monotonic clock.
160 --load-vma Load VMA dynamically even when LD_PRELOAD was not used.
161
162 --tcp Use TCP protocol (default UDP).
163 --avoid-tcp-nodelay Delivering TCP Messages Immediately (default ON).
164 --mc-ttl Limit the lifetime of the packet (default 2).
165
166
167 3.2 Server
168 Server options are:
169
170 --threads-num Run <N> threads on server side (requires '-f' option).
171 --vmarxfiltercb If possible use VMA's receive path packet filter
172 callback API (See VMA's readme).
173 --force-unicast-rep Force server to reply via unicast.
174 -g --gap-detection Enable gap-detection.
175
176
177 3.3 Client
178 sockperf supports different scenarios to run itself as a client. There
179 are under-load, ping-pong, playback and throughput subcommands to
180 select one of the scenarios.
181
182 · under-load - run sockperf client for latency under load test;
183
184 · ping-pong - run sockperf client for latency test in ping pong mode;
185
186 · playback - run sockperf client for latency test using playback of
187 predefined traffic, based on timeline and message size;
188
189 · throughput - run sockperf client for one way throughput test;
190
191 General client options are:
192
193 -t --time Run for <sec> seconds (default 1, max = 36000000).
194 -b --burst Control the client's number of a packets sent in every burst.
195 -r --range comes with -m <size>, randomly change the messages size in range: <size> +- <N>.
196 --data-integrity Perform data integrity test.
197 --srv_num Set num of servers the client works with to N.
198 --pps Set number of packets-per-second (default = 10000 - for under-load mode, or max -
199 for ping-pong and throughput modes; for maximum use --pps=max).
200 --sender-affinity Set sender thread affinity to the given core id (see: cat /proc/cpuinfo).
201 --receiver-affinity Set receiver thread affinity to the given core id (see: cat /proc/cpuinfo).
202 --full-log Dump full log of all packets send/receive time to the given file in CSV format.
203
204
205 3.4 Tools
206 SockPerf package contains few scripts that allow to generate special
207 formatted file to launch tool in different configurations.
208
209 · filter.awk - can be used for filtering lines from the full log file
210 based on given latency range;
211
212 · gen1.awk - this awk script generates playback files (it is for stable
213 PPS playback file);
214
215 · gen2.awk - this awk script generates playback files using the input
216 for this script is file with lines of the format: startTime;
217 duration; startPPS; endPPS; msgSize (it is for linear increased and
218 decreased PPS playback file);
219
220 create playback file using gen1.awk > pfile
221 generated file:
222 # ==== playback file for sockperf - generated by gen1.awk ====
223 #baseTime=1.000000; PPS=200000; runtime=1.000000; interval=0.000005; NUM_RECORDS=200000
224 # file contains 200000 records
225 1.000005000, 12
226 1.000010000, 12
227 1.000015000, 12
228 1.000020000, 12
229 1.000025000, 12
230 1.000030000, 12
231 1.000035000, 12
232 1.000040000, 12
233 ...
234 1.999950000, 12
235 1.999955000, 12
236 1.999960000, 12
237 1.999965000, 12
238 1.999970000, 12
239 1.999975000, 12
240 1.999980000, 12
241 1.999985000, 12
242 1.999990000, 12
243 1.999995000, 12
244 2.000000000, 12
245 #200000 records were written successfuly
246 start server on ipX
247 start client using: ./sockperf ping-pong -i <ip-address> -p <port> --playback=pfile
248
249 3.5 Usage
250 3.5.1 Running over IPoIB
251 · Configure the routing table to map multicast addresses to the IPoIB
252 interface on both client and server machines, as follows:
253
254 route add -net 224.0.0.0 netmask 240.0.0.0 dev ib0
255
256
257 In this case, ib0 is the IPoIB interface.
258
259 · Run the server as follows:
260
261 $sockperf server -i 224.18.7.81 -p 5001
262 sockperf: == version #1.0.0 ==
263 sockperf: No VMA version info
264 sockperf: [SERVER] listen on: IP = 224.18.7.81 PORT = 5001
265 sockperf: Warmup stage (sending a few dummy packets)...
266 sockperf: [tid 14325] using recvfrom() to block on socket(s)
267
268
269 · Run the client as follows:
270
271 $sockperf ping-pong -i 224.18.7.81 -p 5001 -m 16384 -t 10 --pps=max
272 sockperf: == version #1.0.0 ==
273 sockperf: No VMA version info
274 sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
275 IP = 224.18.7.81 PORT = 5001
276 sockperf: Warmup stage (sending a few dummy packets)...
277 sockperf: Starting test...
278 sockperf: Test end (interrupted by timer)
279 sockperf: Test ended
280 sockperf: ========= Printing statistics for Server No: 0
281 sockperf: [including warmup] RunTime=10.101 sec; SentMessages=128328; ReceivedMessages=128327
282 sockperf: ====> avg-lat= 39.273 (std-dev=2.468)
283 sockperf: # dropped packets = 0; # duplicated packets = 0; # out-of-order packets = 0
284 sockperf: Summary: Latency is 39.273 usec
285 sockperf: Total 127245 observations; each percentile contains 1272.45 observations
286 sockperf: ---> <MAX> observation = 94.539
287 sockperf: ---> percentile 99.99 = 76.736
288 sockperf: ---> percentile 99.90 = 58.677
289 sockperf: ---> percentile 99.50 = 56.926
290 sockperf: ---> percentile 99.00 = 55.974
291 sockperf: ---> percentile 95.00 = 40.823
292 sockperf: ---> percentile 90.00 = 40.517
293 sockperf: ---> percentile 75.00 = 39.736
294 sockperf: ---> percentile 50.00 = 38.919
295 sockperf: ---> percentile 25.00 = 38.303
296 sockperf: ---> <MIN> observation = 36.438
297
298
299 3.5.2 Running over 1 Gb Ethernet
300 · Configure the routing table to map multicast addresses to the
301 Ethernet interface on both client and server machines, as follows:
302
303 route add -net 224.0.0.0 netmask 240.0.0.0 dev eth2
304
305
306 In this case, eth2 is the Ethernet interface.
307
308 · Run the server as follows:
309
310 $sockperf server -i 224.18.7.81 -p 5001
311 sockperf: == version #1.0.0 ==
312 sockperf: No VMA version info
313 sockperf: [SERVER] listen on: IP = 224.18.7.81 PORT = 5001
314 sockperf: Warmup stage (sending a few dummy packets)...
315 sockperf: [tid 14325] using recvfrom() to block on socket(s)
316
317
318 · Run the client as follows:
319
320 $sockperf ping-pong -i 224.18.7.81 -p 5001 -m 16384 -t 10 --pps=max
321 sockperf: == version #1.0.0 ==
322 sockperf: No VMA version info
323 sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
324 IP = 224.18.7.81 PORT = 5001
325 sockperf: Warmup stage (sending a few dummy packets)...
326 sockperf: Starting test...
327 sockperf: Test end (interrupted by timer)
328 sockperf: Test ended
329 sockperf: ========= Printing statistics for Server No: 0
330 sockperf: [including warmup] RunTime=10.101 sec; SentMessages=128328; ReceivedMessages=128327
331 sockperf: ====> avg-lat= 39.273 (std-dev=2.468)
332 sockperf: # dropped packets = 0; # duplicated packets = 0; # out-of-order packets = 0
333 sockperf: Summary: Latency is 39.273 usec
334 sockperf: Total 127245 observations; each percentile contains 1272.45 observations
335 sockperf: ---> <MAX> observation = 94.539
336 sockperf: ---> percentile 99.99 = 76.736
337 sockperf: ---> percentile 99.90 = 58.677
338 sockperf: ---> percentile 99.50 = 56.926
339 sockperf: ---> percentile 99.00 = 55.974
340 sockperf: ---> percentile 95.00 = 40.823
341 sockperf: ---> percentile 90.00 = 40.517
342 sockperf: ---> percentile 75.00 = 39.736
343 sockperf: ---> percentile 50.00 = 38.919
344 sockperf: ---> percentile 25.00 = 38.303
345 sockperf: ---> <MIN> observation = 36.438
346
347
348 3.5.3 Running over VMA InfiniBand
349 · Configure the routing table to map multicast addresses to the IPoIB
350 interface on both client and server machines, as follows:
351
352 route add -net 224.0.0.0 netmask 240.0.0.0 dev ib0
353
354
355 In this case, ib0 is the IPoIB interface.
356
357 · Run the server as follows:
358
359 $LD_PRELOAD=libvma.so sockperf server -i 224.18.7.81 -p 5001 --dontwarmup --mc-loopback-enable
360 VMA INFO : -------------------------------------------------
361 VMA INFO : Version: 4.0.3.0
362 VMA INFO : Revision: 2087
363 VMA INFO : Build Date: 2010-03-10-13:32:26
364 VMA INFO : Current Time: Fri Feb 25 15:50:29 2011
365 VMA INFO : Cmd Line: sockperf server -i 224.18.7.81 -p 5001 --dontwarmup --mc-loopback-enable
366 VMA INFO : Pid: 29483
367 VMA INFO : System: 2.6.18-164.el5
368 VMA INFO : Architecture: x86_64
369 VMA INFO : Node: mir1
370 VMA INFO : ---------------------------------------------------------
371 VMA INFO : Log Level 3 [VMA_TRACELEVEL]
372 VMA INFO : Log Details 0 [VMA_LOG_DETAILS]
373 VMA INFO : Log File [VMA_LOG_FILE]
374 VMA INFO : Log Colors Enabled [VMA_LOG_COLORS]
375 VMA INFO : SigIntr Ctrl-C Handle Disabled [VMA_HANDLE_SIGINTR]
376 VMA INFO : Tx Offload Enabled [VMA_TX_OFFLOAD]
377 VMA INFO : Tx Mem Bufs 1024 [VMA_TX_BUFS]
378 VMA INFO : Tx WR SGE 2 [VMA_TX_SGE]
379 VMA INFO : Tx Block Mode 0 [VMA_TX_BLOCK_MODE]
380 VMA INFO : Tx IP Checksum Enabled [VMA_TX_IP_CHECKSUM]
381 VMA INFO : Tx MC Loopback Enabled [VMA_TX_MC_LOOPBACK]
382 VMA INFO : Tx non-blocked eagains Disabled [VMA_TX_NONBLOCKED_EAGAINS]
383 VMA INFO : Tx Prefetch Bytes 256 [VMA_TX_PREFETCH_BYTES]
384 VMA INFO : Rx Offload Enabled [VMA_RX_OFFLOAD]
385 VMA INFO : Rx Mem Bufs 200000 [VMA_RX_BUFS]
386 VMA INFO : Rx QP WRE 16000 [VMA_RX_WRE]
387 VMA INFO : Rx Byte Min Limit 2000000 [VMA_RX_BYTES_MIN]
388 VMA INFO : Rx Poll Loops 1000 [VMA_RX_POLL]
389 VMA INFO : Rx Poll Init Loops 0 [VMA_RX_POLL_INIT]
390 VMA INFO : Rx Poll OS Ratio 10 [VMA_RX_POLL_OS_RATIO]
391 VMA INFO : Rx Poll Yield Disabled [VMA_RX_POLL_YIELD]
392 VMA INFO : Rx Skip OS 100 [VMA_RX_SKIP_OS]
393 VMA INFO : Rx Prefetch Bytes 256 [VMA_RX_PREFETCH_BYTES]
394 VMA INFO : Rx CQ Drain Rate Disabled [VMA_RX_CQ_DRAIN_RATE_NSEC]
395 VMA INFO : Select Poll (usec) 100 [VMA_SELECT_POLL]
396 VMA INFO : Select Poll OS Force Disabled [VMA_SELECT_POLL_OS_FORCE]
397 VMA INFO : Select Poll OS Ratio 10 [VMA_SELECT_POLL_OS_RATIO]
398 VMA INFO : Select Poll Yield Disabled [VMA_SELECT_POLL_YIELD]
399 VMA INFO : Select Skip OS 4 [VMA_SELECT_SKIP_OS]
400 VMA INFO : Select CQ Interrupts Enabled [VMA_SELECT_CQ_IRQ]
401 VMA INFO : CQ size (max) 65000 [VMA_CQ_SIZE_MAX]
402 VMA INFO : CQ Poll Batch (max) 16 [VMA_CQ_POLL_BATCH_MAX]
403 VMA INFO : CQ Drain Interval (msec) 10 [VMA_CQ_DRAIN_INTERVAL]
404 VMA INFO : CQ Drain WCE (max) 10000 [VMA_CQ_DRAIN_WCE_MAX]
405 VMA INFO : CQ Keeps QP Full Enabled [VMA_CQ_KEEP_QP_FULL]
406 VMA INFO : QP Compensation Level 256 [VMA_QP_COMPENSATION_LEVEL]
407 VMA INFO : QP MC Attach Disabled [VMA_QP_FORCE_MC_ATTACH]
408 VMA INFO : Timer Resolution (msec) 10 [VMA_TIMER_RESOLUTION_MSEC]
409 VMA INFO : Delay after join (msec) 0 [VMA_WAIT_AFTER_JOIN_MSEC]
410 VMA INFO : Delay after rereg (msec) 500 [VMA_WAIT_AFTER_REREG_MSEC]
411 VMA INFO : SL PBITS Override Disabled [VMA_SL_PBITS_OVERRIDE]
412 VMA INFO : Block UDP Port 53 [VMA_BLOCK_UDP_PORT]
413 VMA INFO : UC Offload Disabled [VMA_UC_OFFLOAD]
414 VMA INFO : Thread Mode Multi [VMA_THREAD_MODE]
415 VMA INFO : Huge Pages Enabled [VMA_HUGETBL]
416 VMA INFO : IGMP support Disabled [VMA_IGMP]
417 VMA INFO : fork() support Disabled [VMA_FORK]
418 VMA INFO : MTU 1500 [VMA_MTU]
419 VMA INFO : ---------------------------------------------------------
420 VMA WARNING: ***************************************************************
421 VMA WARNING: * NO IMMEDIATE ACTION NEEDED! *
422 VMA WARNING: * Not enough hugepage resources for VMA memory allocation. *
423 VMA WARNING: * VMA will continue working with regular memory allocation. *
424 VMA INFO : * Optional: 1. Disable VMA's hugepage support (VMA_HUGETBL=0) *
425 VMA INFO : * 2. Restart process after increasing the number of *
426 VMA INFO : * hugepages resources in the system: *
427 VMA INFO : * "cat /proc/meminfo | grep -i HugePage" *
428 VMA INFO : * "echo 1000000000 > /proc/sys/kernel/shmmax" *
429 VMA INFO : * "echo 400 > /proc/sys/vm/nr_hugepages" *
430 VMA WARNING: * Read more about the Huge Pages in the VMA's User Manual *
431 VMA WARNING: ***************************************************************
432 sockperf: [2;35m == version #2.3.1831 == [0m
433 sockperf: No VMA version info
434 sockperf: [SERVER] listen on:
435 [ 0] IP = 224.18.7.81 PORT = 5001 # UDP
436 sockperf: [tid 29483] using recvfrom() to block on socket(s)
437
438
439 · Run the client as follows:
440
441 $$LD_PRELOAD=libvma.so sockperf ping-pong -i 224.18.7.81 -p 5001 -t 10 -m 14 --pps=max --dontwarmup --mc-loopback-enable
442 VMA INFO : -------------------------------------------------
443 VMA INFO : Version: 4.0.3.0
444 VMA INFO : Revision: 2087
445 VMA INFO : Build Date: 2010-03-10-13:32:26
446 VMA INFO : Current Time: Fri Feb 25 15:50:51 2011
447 VMA INFO : Cmd Line: sockperf ping-pong -i 224.18.7.81 -p 5001 -t 10 -m 14 --pps=max --dontwarmup --mc-loopback-enable
448 VMA INFO : Pid: 3690
449 VMA INFO : System: 2.6.18-164.el5
450 VMA INFO : Architecture: x86_64
451 VMA INFO : Node: mir3
452 VMA INFO : ---------------------------------------------------------
453 VMA INFO : Log Level 3 [VMA_TRACELEVEL]
454 VMA INFO : Log Details 0 [VMA_LOG_DETAILS]
455 VMA INFO : Log File [VMA_LOG_FILE]
456 VMA INFO : Log Colors Enabled [VMA_LOG_COLORS]
457 VMA INFO : SigIntr Ctrl-C Handle Disabled [VMA_HANDLE_SIGINTR]
458 VMA INFO : Tx Offload Enabled [VMA_TX_OFFLOAD]
459 VMA INFO : Tx Mem Bufs 1024 [VMA_TX_BUFS]
460 VMA INFO : Tx WR SGE 2 [VMA_TX_SGE]
461 VMA INFO : Tx Block Mode 0 [VMA_TX_BLOCK_MODE]
462 VMA INFO : Tx IP Checksum Enabled [VMA_TX_IP_CHECKSUM]
463 VMA INFO : Tx MC Loopback Enabled [VMA_TX_MC_LOOPBACK]
464 VMA INFO : Tx non-blocked eagains Disabled [VMA_TX_NONBLOCKED_EAGAINS]
465 VMA INFO : Tx Prefetch Bytes 256 [VMA_TX_PREFETCH_BYTES]
466 VMA INFO : Rx Offload Enabled [VMA_RX_OFFLOAD]
467 VMA INFO : Rx Mem Bufs 200000 [VMA_RX_BUFS]
468 VMA INFO : Rx QP WRE 16000 [VMA_RX_WRE]
469 VMA INFO : Rx Byte Min Limit 2000000 [VMA_RX_BYTES_MIN]
470 VMA INFO : Rx Poll Loops 1000 [VMA_RX_POLL]
471 VMA INFO : Rx Poll Init Loops 0 [VMA_RX_POLL_INIT]
472 VMA INFO : Rx Poll OS Ratio 10 [VMA_RX_POLL_OS_RATIO]
473 VMA INFO : Rx Poll Yield Disabled [VMA_RX_POLL_YIELD]
474 VMA INFO : Rx Skip OS 100 [VMA_RX_SKIP_OS]
475 VMA INFO : Rx Prefetch Bytes 256 [VMA_RX_PREFETCH_BYTES]
476 VMA INFO : Rx CQ Drain Rate Disabled [VMA_RX_CQ_DRAIN_RATE_NSEC]
477 VMA INFO : Select Poll (usec) 100 [VMA_SELECT_POLL]
478 VMA INFO : Select Poll OS Force Disabled [VMA_SELECT_POLL_OS_FORCE]
479 VMA INFO : Select Poll OS Ratio 10 [VMA_SELECT_POLL_OS_RATIO]
480 VMA INFO : Select Poll Yield Disabled [VMA_SELECT_POLL_YIELD]
481 VMA INFO : Select Skip OS 4 [VMA_SELECT_SKIP_OS]
482 VMA INFO : Select CQ Interrupts Enabled [VMA_SELECT_CQ_IRQ]
483 VMA INFO : CQ size (max) 65000 [VMA_CQ_SIZE_MAX]
484 VMA INFO : CQ Poll Batch (max) 16 [VMA_CQ_POLL_BATCH_MAX]
485 VMA INFO : CQ Drain Interval (msec) 10 [VMA_CQ_DRAIN_INTERVAL]
486 VMA INFO : CQ Drain WCE (max) 10000 [VMA_CQ_DRAIN_WCE_MAX]
487 VMA INFO : CQ Keeps QP Full Enabled [VMA_CQ_KEEP_QP_FULL]
488 VMA INFO : QP Compensation Level 256 [VMA_QP_COMPENSATION_LEVEL]
489 VMA INFO : QP MC Attach Disabled [VMA_QP_FORCE_MC_ATTACH]
490 VMA INFO : Timer Resolution (msec) 10 [VMA_TIMER_RESOLUTION_MSEC]
491 VMA INFO : Delay after join (msec) 0 [VMA_WAIT_AFTER_JOIN_MSEC]
492 VMA INFO : Delay after rereg (msec) 500 [VMA_WAIT_AFTER_REREG_MSEC]
493 VMA INFO : SL PBITS Override Disabled [VMA_SL_PBITS_OVERRIDE]
494 VMA INFO : Block UDP Port 53 [VMA_BLOCK_UDP_PORT]
495 VMA INFO : UC Offload Disabled [VMA_UC_OFFLOAD]
496 VMA INFO : Thread Mode Multi [VMA_THREAD_MODE]
497 VMA INFO : Huge Pages Enabled [VMA_HUGETBL]
498 VMA INFO : IGMP support Disabled [VMA_IGMP]
499 VMA INFO : fork() support Disabled [VMA_FORK]
500 VMA INFO : MTU 1500 [VMA_MTU]
501 VMA INFO : ---------------------------------------------------------
502 VMA WARNING: ***************************************************************
503 VMA WARNING: * NO IMMEDIATE ACTION NEEDED! *
504 VMA WARNING: * Not enough hugepage resources for VMA memory allocation. *
505 VMA WARNING: * VMA will continue working with regular memory allocation. *
506 VMA INFO : * Optional: 1. Disable VMA's hugepage support (VMA_HUGETBL=0) *
507 VMA INFO : * 2. Restart process after increasing the number of *
508 VMA INFO : * hugepages resources in the system: *
509 VMA INFO : * "cat /proc/meminfo | grep -i HugePage" *
510 VMA INFO : * "echo 1000000000 > /proc/sys/kernel/shmmax" *
511 VMA INFO : * "echo 400 > /proc/sys/vm/nr_hugepages" *
512 VMA WARNING: * Read more about the Huge Pages in the VMA's User Manual *
513 VMA WARNING: ***************************************************************
514 sockperf: [2;35m == version #2.3.1831 == [0m
515 sockperf: No VMA version info
516 sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
517
518 [ 0] IP = 224.18.7.81 PORT = 5001 # UDP
519 sockperf: Starting test...
520 sockperf: Test end (interrupted by timer)
521 sockperf: Test ended
522 sockperf: ========= Printing statistics for Server No: 0
523 sockperf: [including warmup] RunTime=10.101 sec; SentMessages=1055837; ReceivedMessages=1055836
524 sockperf: [2;35m====> avg-lat= 4.763 (std-dev=16.094)[0m
525 sockperf: # dropped packets = 0; # duplicated packets = 0; # out-of-order packets = 0
526 sockperf: Summary: Latency is 4.763 usec
527 sockperf: [2;35mTotal 1045405 observations[0m; each percentile contains 10454.05 observations
528 sockperf: ---> <MAX> observation = 16314.458
529 sockperf: ---> percentile 99.99 = 41.409
530 sockperf: ---> percentile 99.90 = 6.868
531 sockperf: ---> percentile 99.50 = 6.627
532 sockperf: ---> percentile 99.00 = 6.464
533 sockperf: ---> percentile 95.00 = 5.033
534 sockperf: ---> percentile 90.00 = 4.799
535 sockperf: ---> percentile 75.00 = 4.734
536 sockperf: ---> percentile 50.00 = 4.679
537 sockperf: ---> percentile 25.00 = 4.632
538 sockperf: ---> <MIN> observation = 3.529
539
540
542 Read 'copying' file in the root place.
543
545 5.1 Requirements
546 What you will need to compile sockperf on Unix systems
547
548 · perl 5.8+ (used by the automake tools)
549
550 · GNU make tools: automake 1.7+, autoconf 2.57+, m4 1.4+ and libtool
551 1.4+
552
553 · A Compiler, among those tested are:
554
555 · gcc4 (Ubuntu 9)
556
557 · gcc4 (Red Hat 4.x)
558
559 5.2 Options to compile
560 5.3 How to install
561 Download sockperf-<version>.tar.gz.
562
563 Uncompress *.tar.gz file in Unix systems in the same folder with the
564 file by runing the following command in the shell:
565
566 tar -zxvf sockperf-<version>.tar.gz
567
568
569 or 2 command:
570
571 gzip -d ./sockperf-<version>.tar.gz
572 tar -xf ./sockperf-<version>.tar
573
574
575 The sockperf package uses the GNU autotools compilation and
576 installation framework.
577
578 These are generic installation instructions.
579
580 The `configure' shell script attempts to guess correct values for
581 various system-dependent variables used during compilation. It uses
582 those values to create a `Makefile' in each directory of the package.
583 It may also create one or more `.h' files containing system-dependent
584 definitions. Finally, it creates a shell script `config.status' that
585 you can run in the future to recreate the current configuration, a file
586 `config.cache' that saves the results of its tests to speed up
587 reconfiguring, and a file `config.log' containing compiler output
588 (useful mainly for debugging `configure').
589
590 If you need to do unusual things to compile the package, please try to
591 figure out how `configure' could check whether to do them, and mail
592 diffs or instructions to the address given in the `README' so they can
593 be considered for the next release. If at some point `config.cache'
594 contains results you don't want to keep, you may remove or edit it.
595
596 The file `configure.in' is used to create `configure' by a program
597 called `autoconf'. You only need `configure.in' if you want to change
598 it or regenerate `configure' using a newer version of `autoconf'.
599
600 The simplest way to compile this package is:
601
602 1. `cd' to the directory containing the package's source code and type
603 `./configure' to configure the package for your system. If you're
604 using `csh' on an old version of System V, you might need to type
605 `sh ./configure' instead to prevent `csh' from trying to execute
606 `configure' itself.
607
608 Running `configure' takes awhile. While running, it prints some
609 messages telling which features it is checking for.
610
611 $ ./configure --prefix=<path to install>
612
613
614 There are several options to ./config (or ./Configure) to customize the
615 build:
616
617 To enable test scripts
618
619 $ ./configure --prefix=<path to install> --enable-test
620
621
622 To enable the documentation
623
624 $ ./configure --prefix=<path to install> --enable-doc
625
626
627 To enable the special scripts
628
629 $ ./configure --prefix=<path to install> --enable-tool
630
631
632 To compile with debug symbols and information:
633
634 $ ./configure --prefix=<path to install> --enable-debug
635
636
637 This will define the _DEBUG variable at compile time.
638
639 Type './configure --help' for a list of all the configure options. Some
640 of the options are generic autoconf options, while the SockPerf
641 specific options are prefixed with 'SOCKPERF:' in the help text.
642
643 2. Type `make' to compile the package.
644
645 $ make
646
647
648 3. Optionally, type `make check' to run any self-tests that come with
649 the package.
650
651 4. Type `make install' to install the programs and any data files and
652 documentation.
653
654 $ make install
655
656
657 5. You can remove the program binaries and object files from the
658 source code directory by typing `make clean'. To also remove the
659 files that `configure' created (so you can compile the package for
660 a different kind of computer), type `make distclean'. There is also
661 a `make maintainer-clean' target, but that is intended mainly for
662 the package's developers. If you use it, you may have to get all
663 sorts of other programs in order to regenerate files that came with
664 the distribution.
665
666Version 3.5-no.git Wed Aug 1 2018 sockperf(3)