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
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
543 Read 'copying' file in the root place.
544
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)