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 end-points,
17 either unidirectionally or bidirectionally. 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 maintenance 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 recvfrom/select/poll/epoll;
69
70 · Improved CPU utilization;
71
72 Initially the tool was developed to demonstrate advantages of
73 Mellanox's Messaging Accelerator (VMA). VMA is a socket API based,
74 dynamically linked, user space Linux library which serves to
75 transparently enhance the performance of Multicast/UDP/TCP networking
76 heavy applications over the InfiniBand and 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 acceleration and
79 see 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 round
83 trip time is the route trip time (RTT) between the two machines on a
84 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 $sockperf server -i 224.18.7.81 -p 5001
99 sockperf: == version #3.5-no.git ==
100 sockperf: [SERVER] listen on:
101 [ 0] IP = 224.18.7.81 PORT = 5001 # UDP
102 sockperf: Warmup stage (sending a few dummy messages)...
103 sockperf: [tid 4701] using recvfrom() to block on socket(s
104
105
106 Mode Two:
107
108 $sockperf server -f conf.file -F e
109 sockperf: == version #3.5-no.git ==
110 sockperf: [SERVER] listen on:
111 [ 0] IP = 5.2.1.3 PORT = 6671 # TCP
112 [ 1] IP = 5.2.1.3 PORT = 6672 # TCP
113 [ 2] IP = 5.2.1.3 PORT = 6673 # TCP
114 [ 3] IP = 5.2.1.3 PORT = 6674 # TCP
115 [ 4] IP = 5.2.1.3 PORT = 6675 # TCP
116 sockperf: Warmup stage (sending a few dummy messages)...
117 sockperf: [tid 4805] using epoll() 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 --tcp -Use TCP protocol (default UDP).
136 -i --ip -Listen on/send to ip <ip>.
137 -p --port -Listen on/connect to port <port> (default 11111).
138 -f --file -Read list of connections from file (used in pair with -F option).
139 -F --iomux-type -Type of multiple file descriptors handle [s|select|p|poll|e|epoll|r|recvfrom|x|socketxtreme](default epoll).
140 --timeout -Set select/poll/epoll timeout to <msec>, -1 for infinite (default is 10 msec).
141 -a --activity -Measure activity by printing a '.' for the last <N> messages processed.
142 -A --Activity -Measure activity by printing the duration for last <N> messages processed.
143 --tcp-avoid-nodelay -Stop/Start delivering TCP Messages Immediately (Enable/Disable Nagel). Default is Nagel Disabled except in Throughput where the default is Nagel enabled.
144 --tcp-skip-blocking-send
145 -Enables non-blocking send operation (default OFF).
146 --tos -Allows setting tos
147 --mc-rx-if -Set address <ip> of interface on which to receive multicast messages (can be other then route table).
148 --mc-tx-if -Set address <ip> of interface on which to transmit multicast messages (can be other then route table).
149 --mc-loopback-enable -Enables mc loopback (default disabled).
150 --mc-ttl -Limit the lifetime of the message (default 2).
151 --mc-source-filter -Set address <ip, hostname> of multicast messages source which is allowed to receive from.
152 --uc-reuseaddr -Enables unicast reuse address (default disabled).
153 --lls -Turn on LLS via socket option (value = usec to poll).
154 --buffer-size -Set total socket receive/send buffer <size> in bytes (system defined by default).
155 --nonblocked -Open non-blocked sockets.
156 --recv_looping_num -Set Sockperf to loop over recvfrom() until EAGAIN or <N> good received packets, -1 for infinite, must be used with --nonblocked (default 1).
157 --dontwarmup -Don't send warm up messages on start.
158 --pre-warmup-wait -Time to wait before sending warm up messages (seconds).
159 --vmazcopyread -Use VMA's zero copy reads API (See VMA's readme).
160 --daemonize -Run as daemon.
161 --no-rdtsc -Don't use register when taking time; instead use monotonic clock.
162 --load-vma -Load VMA dynamically even when LD_PRELOAD was not used.
163 --rate-limit -use rate limit (packet-pacing), with VMA must be run with VMA_RING_ALLOCATION_LOGIC_TX mode.
164 --set-sock-accl -Set socket acceleration before run (available for some of Mellanox systems)
165 -d --debug -Print extra debug information.
166
167
168 3.2 Server
169 Server options are:
170
171 --threads-num -Run <N> threads on server side (requires '-f' option).
172 --cpu-affinity -Set threads affinity to the given core ids in list format (see: cat /proc/cpuinfo).
173 --vmarxfiltercb -Use VMA's receive path message filter callback API (See VMA's readme).
174 --force-unicast-reply -Force server to reply via unicast.
175 --dont-reply -Server won't reply to the client messages.
176 -m --msg-size -Set maximum message size that the server can receive <size> bytes (default 65507).
177 -g --gap-detection -Enable gap-detection.
178
179
180 3.3 Client
181 Sockperf supports different scenarios to run itself as a client. There
182 are under-load, ping-pong, playback and throughput subcommands to
183 select one of the scenarios.
184
185 · under-load - run sockperf client for latency under load test;
186
187 · ping-pong - run sockperf client for latency test in ping pong mode;
188
189 · playback - run sockperf client for latency test using playback of
190 predefined traffic, based on timeline and message size;
191
192 · throughput - run sockperf client for one way throughput test;
193
194 General client options are:
195
196 --srv-num -Set num of servers the client works with to N.
197 --sender-affinity -Set sender thread affinity to the given core ids in list format (see: cat /proc/cpuinfo).
198 --receiver-affinity -Set receiver thread affinity to the given core ids in list format (see: cat /proc/cpuinfo).
199 --full-log -Dump full log of all messages send/receive time to the given file in CSV format.
200 --giga-size -Print sizes in GigaByte.
201 --increase_output_precision
202 -Increase number of digits after decimal point of the throughput output (from 3 to 9).
203 --dummy-send -Use VMA's dummy send API instead of busy wait, must be higher than regular msg rate.
204 optional: set dummy-send rate per second (default 10,000), usage: --dummy-send [<rate>|max]
205 -t --time -Run for <sec> seconds (default 1, max = 36000000).
206 --client_port -Force the client side to bind to a specific port (default = 0).
207 --client_ip -Force the client side to bind to a specific ip address (default = 0).
208 -b --burst -Control the client's number of a messages sent in every burst.
209 --mps -Set number of messages-per-second (default = 10000 - for under-load mode, or max - for ping-pong and throughput modes; for maximum use --mps=max;
210 support --pps for old compatibility).
211 -m --msg-size -Use messages of size <size> bytes (minimum default 14).
212 -r --range -comes with -m <size>, randomly change the messages size in range: <size> +- <N>.
213 --data-integrity -Perform data integrity test
214
215
216 3.4 Tools
217 SockPerf package contains few scripts that allow to generate special
218 formatted file to launch tool in different configurations.
219
220 · filter.awk - can be used for filtering lines from the full log file
221 based on given latency range;
222
223 · gen1.awk - this awk script generates playback files (it is for stable
224 PPS playback file);
225
226 · gen2.awk - this awk script generates playback files using the input
227 for this script is file with lines of the format: startTime;
228 duration; startPPS; endPPS; msgSize (it is for linear increased and
229 decreased PPS playback file);
230
231 create playback file using gen1.awk > pfile
232 generated file:
233 # ==== playback file for sockperf - generated by gen1.awk ====
234 #baseTime=1.000000; PPS=200000; runtime=1.000000; interval=0.000005; NUM_RECORDS=200000
235 # file contains 200000 records
236 1.000005000, 12
237 1.000010000, 12
238 1.000015000, 12
239 1.000020000, 12
240 1.000025000, 12
241 1.000030000, 12
242 1.000035000, 12
243 1.000040000, 12
244 ...
245 1.999950000, 12
246 1.999955000, 12
247 1.999960000, 12
248 1.999965000, 12
249 1.999970000, 12
250 1.999975000, 12
251 1.999980000, 12
252 1.999985000, 12
253 1.999990000, 12
254 1.999995000, 12
255 2.000000000, 12
256 #200000 records were written successfully
257 start server on ipX
258 start client using: ./sockperf ping-pong -i <ip-address> -p <port> --playback=pfile
259
260 3.5 Usage
261 3.5.1 Running Multicast over IPoIB
262 · Configure the routing table to map multicast addresses to the IPoIB
263 interface on both client and server machines, as follows:
264
265 route add -net 224.0.0.0 netmask 240.0.0.0 dev ib0
266
267
268 In this case, ib0 is the IPoIB interface.
269
270 · Run the server as follows:
271
272 $sockperf server -i 224.18.7.81 -p 5001
273 sockperf: == version #3.5-no.git ==
274 sockperf: [SERVER] listen on:
275 [ 0] IP = 224.18.7.81 PORT = 5001 # UDP
276 sockperf: Warmup stage (sending a few dummy messages)...
277 sockperf: [tid 30399] using recvfrom() to block on socket(s)
278
279
280 · Run the client as follows:
281
282 $sockperf ping-pong -i 224.18.7.81 -p 5001 -m 16384 -t 10 --mps=max
283 sockperf: == version #3.5-no.git ==
284 sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
285
286 [ 0] IP = 224.18.7.81 PORT = 5001 # UDP
287 sockperf: Warmup stage (sending a few dummy messages)...
288 sockperf: Starting test...
289 sockperf: Test end (interrupted by timer)
290 sockperf: Test ended
291 sockperf: [Total Run] RunTime=10.000 sec; Warm up time=400 msec; SentMessages=240464; ReceivedMessages=240463
292 sockperf: ========= Printing statistics for Server No: 0
293 sockperf: [Valid Duration] RunTime=9.550 sec; SentMessages=229630; ReceivedMessages=229630
294 sockperf: ====> avg-lat= 20.771 (std-dev=5.266)
295 sockperf: # dropped messages = 0; # duplicated messages = 0; # out-of-order messages = 0
296 sockperf: Summary: Latency is 20.771 usec
297 sockperf: Total 229630 observations; each percentile contains 2296.30 observations
298 sockperf: ---> <MAX> observation = 120.108
299 sockperf: ---> percentile 99.999 = 106.349
300 sockperf: ---> percentile 99.990 = 63.772
301 sockperf: ---> percentile 99.900 = 55.940
302 sockperf: ---> percentile 99.000 = 48.619
303 sockperf: ---> percentile 90.000 = 24.295
304 sockperf: ---> percentile 75.000 = 20.358
305 sockperf: ---> percentile 50.000 = 19.279
306 sockperf: ---> percentile 25.000 = 18.641
307 sockperf: ---> <MIN> observation = 16.748
308
309
310 3.5.2 Running TCP over Ethernet
311 · Run the server as follows:
312
313 $sockperf server -i 22.0.0.3 -p 5001 --tcp
314 sockperf: == version #3.5-no.git ==
315 sockperf: [SERVER] listen on:
316 [ 0] IP = 22.0.0.3 PORT = 5001 # TCP
317 sockperf: Warmup stage (sending a few dummy messages)...
318 sockperf: [tid 1567] using recvfrom() to block on socket(s)
319
320
321 · Run the client as follows:
322
323 $sockperf ping-pong -i 22.0.0.3 -p 5001 --tcp -m 64 -t 10 --mps=max
324 sockperf: == version #3.5-no.git ==
325 sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
326
327 [ 0] IP = 22.0.0.3 PORT = 5001 # TCP
328 sockperf: Warmup stage (sending a few dummy messages)...
329 sockperf: Starting test...
330 sockperf: Test end (interrupted by timer)
331 sockperf: Test ended
332 sockperf: [Total Run] RunTime=10.000 sec; Warm up time=400 msec; SentMessages=553625; ReceivedMessages=553624
333 sockperf: ========= Printing statistics for Server No: 0
334 sockperf: [Valid Duration] RunTime=9.550 sec; SentMessages=528579; ReceivedMessages=528579
335 sockperf: ====> avg-lat= 9.017 (std-dev=4.171)
336 sockperf: # dropped messages = 0; # duplicated messages = 0; # out-of-order messages = 0
337 sockperf: Summary: Latency is 9.017 usec
338 sockperf: Total 528579 observations; each percentile contains 5285.79 observations
339 sockperf: ---> <MAX> observation = 98.777
340 sockperf: ---> percentile 99.999 = 72.628
341 sockperf: ---> percentile 99.990 = 17.980
342 sockperf: ---> percentile 99.900 = 16.824
343 sockperf: ---> percentile 99.000 = 16.193
344 sockperf: ---> percentile 90.000 = 14.731
345 sockperf: ---> percentile 75.000 = 14.301
346 sockperf: ---> percentile 50.000 = 6.222
347 sockperf: ---> percentile 25.000 = 5.759
348 sockperf: ---> <MIN> observation = 4.629
349
350
351 3.5.3 Running UDP over Ethernet using VMA
352 · More interested user can read detail information about VMA at
353 http://www.mellanox.com.
354
355 · VMA_SPEC=latency is a predefined specification profile for latency.
356
357 · Run the server as follows:
358
359 $VMA_SPEC=latency LD_PRELOAD=libvma.so sockperf server -i 22.0.0.3 -p 5001
360 VMA INFO: ---------------------------------------------------------------------------
361 VMA INFO: VMA_VERSION: 8.6.10-0 Development Snapshot built on Jun 27 2018 16:06:47
362 VMA INFO: Cmd Line: sockperf server -i 22.0.0.3 -p 5001
363 VMA INFO: Current Time: Tue Sep 18 08:49:23 2018
364 VMA INFO: Pid: 2201
365 VMA INFO: OFED Version: MLNX_OFED_LINUX-4.4-1.0.0.0:
366 VMA INFO: Architecture: x86_64
367 VMA INFO: Node: r-aa-apollo03.mtr.labs.mlnx
368 VMA INFO: ---------------------------------------------------------------------------
369 VMA INFO: VMA Spec Latency [VMA_SPEC]
370 VMA INFO: Log Level INFO [VMA_TRACELEVEL]
371 VMA INFO: Ring On Device Memory TX 16384 [VMA_RING_DEV_MEM_TX]
372 VMA INFO: Tx QP WRE 256 [VMA_TX_WRE]
373 VMA INFO: Tx QP WRE Batching 4 [VMA_TX_WRE_BATCHING]
374 VMA INFO: Rx QP WRE 256 [VMA_RX_WRE]
375 VMA INFO: Rx QP WRE Batching 4 [VMA_RX_WRE_BATCHING]
376 VMA INFO: Rx Poll Loops -1 [VMA_RX_POLL]
377 VMA INFO: Rx Prefetch Bytes Before Poll 256 [VMA_RX_PREFETCH_BYTES_BEFORE_POLL]
378 VMA INFO: GRO max streams 0 [VMA_GRO_STREAMS_MAX]
379 VMA INFO: Select Poll (usec) -1 [VMA_SELECT_POLL]
380 VMA INFO: Select Poll OS Force Enabled [VMA_SELECT_POLL_OS_FORCE]
381 VMA INFO: Select Poll OS Ratio 1 [VMA_SELECT_POLL_OS_RATIO]
382 VMA INFO: Select Skip OS 1 [VMA_SELECT_SKIP_OS]
383 VMA INFO: CQ Drain Interval (msec) 100 [VMA_PROGRESS_ENGINE_INTERVAL]
384 VMA INFO: CQ Interrupts Moderation Disabled [VMA_CQ_MODERATION_ENABLE]
385 VMA INFO: CQ AIM Max Count 128 [VMA_CQ_AIM_MAX_COUNT]
386 VMA INFO: CQ Adaptive Moderation Disabled [VMA_CQ_AIM_INTERVAL_MSEC]
387 VMA INFO: CQ Keeps QP Full Disabled [VMA_CQ_KEEP_QP_FULL]
388 VMA INFO: TCP nodelay 1 [VMA_TCP_NODELAY]
389 VMA INFO: Avoid sys-calls on tcp fd Enabled [VMA_AVOID_SYS_CALLS_ON_TCP_FD]
390 VMA INFO: Internal Thread Affinity 0 [VMA_INTERNAL_THREAD_AFFINITY]
391 VMA INFO: Thread mode Single [VMA_THREAD_MODE]
392 VMA INFO: Mem Allocate type 2 (Huge Pages) [VMA_MEM_ALLOC_TYPE]
393 VMA INFO: ---------------------------------------------------------------------------
394 sockperf: == version #3.5-no.git ==
395 sockperf: [SERVER] listen on:
396 [ 0] IP = 22.0.0.3 PORT = 5001 # UDP
397 sockperf: Warmup stage (sending a few dummy messages)...
398 sockperf: [tid 2201] using recvfrom() to block on socket(s)
399
400
401 · Run the client as follows:
402
403 $VMA_SPEC=latency LD_PRELOAD=libvma.so sockperf ping-pong -i 22.0.0.3 -p 5001 -m 64 -t 10 --mps=max
404 VMA INFO: ---------------------------------------------------------------------------
405 VMA INFO: VMA_VERSION: 8.6.10-0 Development Snapshot built on Jun 27 2018 16:06:47
406 VMA INFO: Cmd Line: sockperf ping-pong -i 22.0.0.3 -p 5001 -m 64 -t 10 --mps=max
407 VMA INFO: Current Time: Tue Sep 18 08:47:50 2018
408 VMA INFO: Pid: 20134
409 VMA INFO: OFED Version: MLNX_OFED_LINUX-4.4-1.0.0.0:
410 VMA INFO: Architecture: x86_64
411 VMA INFO: Node: r-aa-apollo04.mtr.labs.mlnx
412 VMA INFO: ---------------------------------------------------------------------------
413 VMA INFO: VMA Spec Latency [VMA_SPEC]
414 VMA INFO: Log Level INFO [VMA_TRACELEVEL]
415 VMA INFO: Ring On Device Memory TX 16384 [VMA_RING_DEV_MEM_TX]
416 VMA INFO: Tx QP WRE 256 [VMA_TX_WRE]
417 VMA INFO: Tx QP WRE Batching 4 [VMA_TX_WRE_BATCHING]
418 VMA INFO: Rx QP WRE 256 [VMA_RX_WRE]
419 VMA INFO: Rx QP WRE Batching 4 [VMA_RX_WRE_BATCHING]
420 VMA INFO: Rx Poll Loops -1 [VMA_RX_POLL]
421 VMA INFO: Rx Prefetch Bytes Before Poll 256 [VMA_RX_PREFETCH_BYTES_BEFORE_POLL]
422 VMA INFO: GRO max streams 0 [VMA_GRO_STREAMS_MAX]
423 VMA INFO: Select Poll (usec) -1 [VMA_SELECT_POLL]
424 VMA INFO: Select Poll OS Force Enabled [VMA_SELECT_POLL_OS_FORCE]
425 VMA INFO: Select Poll OS Ratio 1 [VMA_SELECT_POLL_OS_RATIO]
426 VMA INFO: Select Skip OS 1 [VMA_SELECT_SKIP_OS]
427 VMA INFO: CQ Drain Interval (msec) 100 [VMA_PROGRESS_ENGINE_INTERVAL]
428 VMA INFO: CQ Interrupts Moderation Disabled [VMA_CQ_MODERATION_ENABLE]
429 VMA INFO: CQ AIM Max Count 128 [VMA_CQ_AIM_MAX_COUNT]
430 VMA INFO: CQ Adaptive Moderation Disabled [VMA_CQ_AIM_INTERVAL_MSEC]
431 VMA INFO: CQ Keeps QP Full Disabled [VMA_CQ_KEEP_QP_FULL]
432 VMA INFO: TCP nodelay 1 [VMA_TCP_NODELAY]
433 VMA INFO: Avoid sys-calls on tcp fd Enabled [VMA_AVOID_SYS_CALLS_ON_TCP_FD]
434 VMA INFO: Internal Thread Affinity 0 [VMA_INTERNAL_THREAD_AFFINITY]
435 VMA INFO: Thread mode Single [VMA_THREAD_MODE]
436 VMA INFO: Mem Allocate type 2 (Huge Pages) [VMA_MEM_ALLOC_TYPE]
437 VMA INFO: ---------------------------------------------------------------------------
438 sockperf: == version #3.5-no.git ==
439 sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
440
441 [ 0] IP = 22.0.0.3 PORT = 5001 # UDP
442 sockperf: Warmup stage (sending a few dummy messages)...
443 sockperf: Starting test...
444 sockperf: Test end (interrupted by timer)
445 sockperf: Test ended
446 sockperf: [Total Run] RunTime=10.000 sec; Warm up time=400 msec; SentMessages=5166035; ReceivedMessages=5166034
447 sockperf: ========= Printing statistics for Server No: 0
448 sockperf: [Valid Duration] RunTime=9.550 sec; SentMessages=4951987; ReceivedMessages=4951987
449 sockperf: ====> avg-lat= 0.951 (std-dev=0.034)
450 sockperf: # dropped messages = 0; # duplicated messages = 0; # out-of-order messages = 0
451 sockperf: Summary: Latency is 0.951 usec
452 sockperf: Total 4951987 observations; each percentile contains 49519.87 observations
453 sockperf: ---> <MAX> observation = 4.476
454 sockperf: ---> percentile 99.999 = 1.318
455 sockperf: ---> percentile 99.990 = 1.270
456 sockperf: ---> percentile 99.900 = 1.179
457 sockperf: ---> percentile 99.000 = 1.110
458 sockperf: ---> percentile 90.000 = 0.967
459 sockperf: ---> percentile 75.000 = 0.952
460 sockperf: ---> percentile 50.000 = 0.943
461 sockperf: ---> percentile 25.000 = 0.936
462 sockperf: ---> <MIN> observation = 0.895
463
464
466 Read 'copying' file in the root place.
467
469 5.1 Requirements
470 What you will need to compile sockperf on Unix systems
471
472 · perl 5.8+ (used by the automake tools)
473
474 · GNU make tools: automake 1.7+, autoconf 2.57+, m4 1.4+ and libtool
475 1.4+
476
477 · A Compiler, among those tested are:
478
479 · gcc4+ (Ubuntu)
480
481 · gcc4+ (Red Hat)
482
483 5.2 Options to compile
484 5.3 How to install
485 Download sockperf-<version>.tar.gz.
486
487 Uncompress *.tar.gz file in Unix systems in the same folder with the
488 file by runing the following command in the shell:
489
490 tar -zxvf sockperf-<version>.tar.gz
491
492
493 or 2 command:
494
495 gzip -d ./sockperf-<version>.tar.gz
496 tar -xf ./sockperf-<version>.tar
497
498
499 The sockperf package uses the GNU autotools compilation and
500 installation framework.
501
502 These are generic installation instructions.
503
504 The `configure' shell script attempts to guess correct values for
505 various system-dependent variables used during compilation. It uses
506 those values to create a `Makefile' in each directory of the package.
507 It may also create one or more `.h' files containing system-dependent
508 definitions. Finally, it creates a shell script `config.status' that
509 you can run in the future to recreate the current configuration, a file
510 `config.cache' that saves the results of its tests to speed up
511 reconfiguring, and a file `config.log' containing compiler output
512 (useful mainly for debugging `configure').
513
514 If you need to do unusual things to compile the package, please try to
515 figure out how `configure' could check whether to do them, and mail
516 diffs or instructions to the address given in the `README' so they can
517 be considered for the next release. If at some point `config.cache'
518 contains results you don't want to keep, you may remove or edit it.
519
520 The file `configure.in' is used to create `configure' by a program
521 called `autoconf'. You only need `configure.in' if you want to change
522 it or regenerate `configure' using a newer version of `autoconf'.
523
524 The simplest way to compile this package is:
525
526 1. `cd' to the directory containing the package's source code and type
527 `./configure' to configure the package for your system. If you're
528 using `csh' on an old version of System V, you might need to type
529 `sh ./configure' instead to prevent `csh' from trying to execute
530 `configure' itself.
531
532 Running `configure' takes awhile. While running, it prints some
533 messages telling which features it is checking for.
534
535 $ ./configure --prefix=<path to install>
536
537
538 There are several options to ./config (or ./Configure) to customize the
539 build:
540
541 To enable test scripts
542
543 $ ./configure --prefix=<path to install> --enable-test
544
545
546 To enable the documentation
547
548 $ ./configure --prefix=<path to install> --enable-doc
549
550
551 To enable the special scripts
552
553 $ ./configure --prefix=<path to install> --enable-tool
554
555
556 To compile with debug symbols and information:
557
558 $ ./configure --prefix=<path to install> --enable-debug
559
560
561 This will define the _DEBUG variable at compile time.
562
563 Type './configure --help' for a list of all the configure options. Some
564 of the options are generic autoconf options, while the SockPerf
565 specific options are prefixed with 'SOCKPERF:' in the help text.
566
567 2. Type `make' to compile the package.
568
569 $ make
570
571
572 3. Optionally, type `make check' to run any self-tests that come with
573 the package.
574
575 4. Type `make install' to install the programs and any data files and
576 documentation.
577
578 $ make install
579
580
581 5. You can remove the program binaries and object files from the
582 source code directory by typing `make clean'. To also remove the
583 files that `configure' created (so you can compile the package for
584 a different kind of computer), type `make distclean'. There is also
585 a `make maintainer-clean' target, but that is intended mainly for
586 the package's developers. If you use it, you may have to get all
587 sorts of other programs in order to regenerate files that came with
588 the distribution.
589
590Version 3.6-no.git Thu Jan 30 2020 sockperf(3)