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

NAME

6       sockperf - SockPerf is a tool for network performance measurement
7       written 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 end-points,
17       either unidirectionally or bidirectionally. 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 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       or
123
124       where
125
126       • [U|T] - UDP or TCP protocol;
127
128       • address - Internet Protocol (IP) address or host name (IPv6 addresses
129         must be enclosed in square brackets);
130
131       • port - Port number;
132
133       • mc_src_addr - Optional multicast source IP address or host name.
134
135   3.1 Available options
136       The following table describes Sockperf options, and their possible
137       values:
138
139       -h,-?   --help,--usage         -Show the help message and exit.
140               --tcp                  -Use TCP protocol (default UDP).
141       -i      --ip                   -Listen on/send to ip <ip>.
142       -p      --port                 -Listen on/connect to port <port> (default 11111).
143       -f      --file                 -Read list of connections from file (used in pair with -F option).
144       -F      --iomux-type           -Type of multiple file descriptors handle [s|select|p|poll|e|epoll|r|recvfrom|x|socketxtreme](default epoll).
145               --timeout              -Set select/poll/epoll timeout to <msec>, -1 for infinite (default is 10 msec).
146       -a      --activity             -Measure activity by printing a '.' for the last <N> messages processed.
147       -A      --Activity             -Measure activity by printing the duration for last <N>  messages processed.
148               --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.
149               --tcp-skip-blocking-send
150                                      -Enables non-blocking send operation (default OFF).
151               --tos                  -Allows setting tos
152               --mc-rx-if             -Set address <ip> of interface on which to receive multicast messages (can be other then route table).
153               --mc-tx-if             -Set address <ip> of interface on which to transmit multicast messages (can be other then route table).
154               --mc-loopback-enable   -Enables mc loopback (default disabled).
155               --mc-ttl               -Limit the lifetime of the message (default 2).
156               --mc-source-filter     -Set address <ip, hostname> of multicast messages source which is allowed to receive from.
157               --uc-reuseaddr         -Enables unicast reuse address (default disabled).
158               --lls                  -Turn on LLS via socket option (value = usec to poll).
159               --buffer-size          -Set total socket receive/send buffer <size> in bytes (system defined by default).
160               --nonblocked           -Open non-blocked sockets.
161               --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).
162               --dontwarmup           -Don't send warm up messages on start.
163               --pre-warmup-wait      -Time to wait before sending warm up messages (seconds).
164               --vmazcopyread         -Use VMA's zero copy reads API (See VMA's readme).
165               --daemonize            -Run as daemon.
166               --no-rdtsc             -Don't use register when taking time; instead use monotonic clock.
167               --load-vma             -Load VMA dynamically even when LD_PRELOAD was not used.
168               --rate-limit           -use rate limit (packet-pacing), with VMA must be run with VMA_RING_ALLOCATION_LOGIC_TX mode.
169               --set-sock-accl        -Set socket acceleration before run (available for some of Mellanox systems)
170       -d      --debug                -Print extra debug information.
171
172
173   3.2 Server
174       Server options are:
175
176               --threads-num          -Run <N> threads on server side (requires '-f' option).
177               --cpu-affinity         -Set threads affinity to the given core ids in list format (see: cat /proc/cpuinfo).
178               --vmarxfiltercb        -Use VMA's receive path message filter callback API (See VMA's readme).
179               --force-unicast-reply  -Force server to reply via unicast.
180               --dont-reply           -Server won't reply to the client messages.
181       -m      --msg-size             -Set maximum message size that the server can receive <size> bytes (default 65507).
182       -g      --gap-detection        -Enable gap-detection.
183
184
185   3.3 Client
186       Sockperf supports different scenarios to run itself as a client. There
187       are under-load, ping-pong, playback and throughput subcommands to
188       select one of the scenarios.
189
190       • under-load - run sockperf client for latency under load test;
191
192       • ping-pong - run sockperf client for latency test in ping pong mode;
193
194       • playback - run sockperf client for latency test using playback of
195         predefined traffic, based on timeline and message size;
196
197       • throughput - run sockperf client for one way throughput test;
198
199       General client options are:
200
201               --sender-affinity      -Set sender thread affinity to the given core ids in list format (see: cat /proc/cpuinfo).
202               --receiver-affinity    -Set receiver thread affinity to the given core ids in list format (see: cat /proc/cpuinfo).
203               --full-log             -Dump full log of all messages send/receive time to the given file in CSV format.
204               --giga-size            -Print sizes in GigaByte.
205               --increase_output_precision
206                                      -Increase number of digits after decimal point of the throughput output (from 3 to 9).
207               --dummy-send           -Use VMA's dummy send API instead of busy wait, must be higher than regular msg rate.
208                                       optional: set dummy-send rate per second (default 10,000), usage: --dummy-send [<rate>|max]
209       -t      --time                 -Run for <sec> seconds (default 1, max = 36000000).
210               --client_port          -Force the client side to bind to a specific port (default = 0).
211               --client_ip            -Force the client side to bind to a specific ip address (default = 0).
212       -b      --burst                -Control the client's number of a messages sent in every burst.
213               --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;
214                                       support --pps for old compatibility).
215       -m      --msg-size             -Use messages of size <size> bytes (minimum default 14).
216       -r      --range                -comes with -m <size>, randomly change the messages size in range: <size> +- <N>.
217               --data-integrity       -Perform data integrity test
218
219
220   3.4 Tools
221       SockPerf package contains few scripts that allow to generate special
222       formatted file to launch tool in different configurations.
223
224       • filter.awk - can be used for filtering lines from the full log file
225         based on given latency range;
226
227       • gen1.awk - this awk script generates playback files (it is for stable
228         PPS playback file);
229
230       • gen2.awk - this awk script generates playback files using the input
231         for this script is file with lines of the format: startTime;
232         duration; startPPS; endPPS; msgSize (it is for linear increased and
233         decreased PPS playback file);
234
235          create playback file using gen1.awk > pfile
236          generated file:
237       # ==== playback file for sockperf - generated by gen1.awk ====
238       #baseTime=1.000000; PPS=200000; runtime=1.000000; interval=0.000005; NUM_RECORDS=200000
239       # file contains 200000 records
240       1.000005000, 12
241       1.000010000, 12
242       1.000015000, 12
243       1.000020000, 12
244       1.000025000, 12
245       1.000030000, 12
246       1.000035000, 12
247       1.000040000, 12
248       ...
249       1.999950000, 12
250       1.999955000, 12
251       1.999960000, 12
252       1.999965000, 12
253       1.999970000, 12
254       1.999975000, 12
255       1.999980000, 12
256       1.999985000, 12
257       1.999990000, 12
258       1.999995000, 12
259       2.000000000, 12
260       #200000 records were written successfully
261          start server on ipX
262          start client using: ./sockperf ping-pong -i <ip-address> -p <port> --playback=pfile
263
264   3.5 Usage
265   3.5.1 Running Multicast over IPoIB
266       • Configure the routing table to map multicast addresses to the IPoIB
267         interface on both client and server machines, as follows:
268
269       route add -net 224.0.0.0 netmask 240.0.0.0 dev ib0
270
271
272        In this case, ib0 is the IPoIB interface.
273
274       • Run the server as follows:
275
276       $sockperf server -i 224.18.7.81 -p 5001
277       sockperf: == version #3.5-no.git ==
278       sockperf: [SERVER] listen on:
279       [ 0] IP = 224.18.7.81     PORT =  5001 # UDP
280       sockperf: Warmup stage (sending a few dummy messages)...
281       sockperf: [tid 30399] using recvfrom() to block on socket(s)
282
283
284       • Run the client as follows:
285
286       $sockperf ping-pong -i 224.18.7.81 -p 5001 -m 16384 -t 10 --mps=max
287       sockperf: == version #3.5-no.git ==
288       sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
289
290       [ 0] IP = 224.18.7.81     PORT =  5001 # UDP
291       sockperf: Warmup stage (sending a few dummy messages)...
292       sockperf: Starting test...
293       sockperf: Test end (interrupted by timer)
294       sockperf: Test ended
295       sockperf: [Total Run] RunTime=10.000 sec; Warm up time=400 msec; SentMessages=240464; ReceivedMessages=240463
296       sockperf: ========= Printing statistics for Server No: 0
297       sockperf: [Valid Duration] RunTime=9.550 sec; SentMessages=229630; ReceivedMessages=229630
298       sockperf: ====> avg-lat= 20.771 (std-dev=5.266)
299       sockperf: # dropped messages = 0; # duplicated messages = 0; # out-of-order messages = 0
300       sockperf: Summary: Latency is 20.771 usec
301       sockperf: Total 229630 observations; each percentile contains 2296.30 observations
302       sockperf: ---> <MAX> observation =  120.108
303       sockperf: ---> percentile 99.999 =  106.349
304       sockperf: ---> percentile 99.990 =   63.772
305       sockperf: ---> percentile 99.900 =   55.940
306       sockperf: ---> percentile 99.000 =   48.619
307       sockperf: ---> percentile 90.000 =   24.295
308       sockperf: ---> percentile 75.000 =   20.358
309       sockperf: ---> percentile 50.000 =   19.279
310       sockperf: ---> percentile 25.000 =   18.641
311       sockperf: ---> <MIN> observation =   16.748
312
313
314   3.5.2 Running TCP over Ethernet
315       • Run the server as follows:
316
317       $sockperf server -i 22.0.0.3 -p 5001 --tcp
318       sockperf: == version #3.5-no.git ==
319       sockperf: [SERVER] listen on:
320       [ 0] IP = 22.0.0.3        PORT =  5001 # TCP
321       sockperf: Warmup stage (sending a few dummy messages)...
322       sockperf: [tid 1567] using recvfrom() to block on socket(s)
323
324
325       • Run the client as follows:
326
327       $sockperf ping-pong -i 22.0.0.3 -p 5001 --tcp -m 64 -t 10 --mps=max
328       sockperf: == version #3.5-no.git ==
329       sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
330
331       [ 0] IP = 22.0.0.3        PORT =  5001 # TCP
332       sockperf: Warmup stage (sending a few dummy messages)...
333       sockperf: Starting test...
334       sockperf: Test end (interrupted by timer)
335       sockperf: Test ended
336       sockperf: [Total Run] RunTime=10.000 sec; Warm up time=400 msec; SentMessages=553625; ReceivedMessages=553624
337       sockperf: ========= Printing statistics for Server No: 0
338       sockperf: [Valid Duration] RunTime=9.550 sec; SentMessages=528579; ReceivedMessages=528579
339       sockperf: ====> avg-lat=  9.017 (std-dev=4.171)
340       sockperf: # dropped messages = 0; # duplicated messages = 0; # out-of-order messages = 0
341       sockperf: Summary: Latency is 9.017 usec
342       sockperf: Total 528579 observations; each percentile contains 5285.79 observations
343       sockperf: ---> <MAX> observation =   98.777
344       sockperf: ---> percentile 99.999 =   72.628
345       sockperf: ---> percentile 99.990 =   17.980
346       sockperf: ---> percentile 99.900 =   16.824
347       sockperf: ---> percentile 99.000 =   16.193
348       sockperf: ---> percentile 90.000 =   14.731
349       sockperf: ---> percentile 75.000 =   14.301
350       sockperf: ---> percentile 50.000 =    6.222
351       sockperf: ---> percentile 25.000 =    5.759
352       sockperf: ---> <MIN> observation =    4.629
353
354
355   3.5.3 Running UDP over Ethernet using VMA
356       • More interested user can read detail information about VMA at
357         http://www.mellanox.com.
358
359       • VMA_SPEC=latency is a predefined specification profile for latency.
360
361       • Run the server as follows:
362
363       $VMA_SPEC=latency LD_PRELOAD=libvma.so sockperf server -i 22.0.0.3 -p 5001
364        VMA INFO: ---------------------------------------------------------------------------
365        VMA INFO: VMA_VERSION: 8.6.10-0 Development Snapshot built on Jun 27 2018 16:06:47
366        VMA INFO: Cmd Line: sockperf server -i 22.0.0.3 -p 5001
367        VMA INFO: Current Time: Tue Sep 18 08:49:23 2018
368        VMA INFO: Pid:  2201
369        VMA INFO: OFED Version: MLNX_OFED_LINUX-4.4-1.0.0.0:
370        VMA INFO: Architecture: x86_64
371        VMA INFO: Node: r-aa-apollo03.mtr.labs.mlnx
372        VMA INFO: ---------------------------------------------------------------------------
373        VMA INFO: VMA Spec                       Latency                    [VMA_SPEC]
374        VMA INFO: Log Level                      INFO                       [VMA_TRACELEVEL]
375        VMA INFO: Ring On Device Memory TX       16384                      [VMA_RING_DEV_MEM_TX]
376        VMA INFO: Tx QP WRE                      256                        [VMA_TX_WRE]
377        VMA INFO: Tx QP WRE Batching             4                          [VMA_TX_WRE_BATCHING]
378        VMA INFO: Rx QP WRE                      256                        [VMA_RX_WRE]
379        VMA INFO: Rx QP WRE Batching             4                          [VMA_RX_WRE_BATCHING]
380        VMA INFO: Rx Poll Loops                  -1                         [VMA_RX_POLL]
381        VMA INFO: Rx Prefetch Bytes Before Poll  256                        [VMA_RX_PREFETCH_BYTES_BEFORE_POLL]
382        VMA INFO: GRO max streams                0                          [VMA_GRO_STREAMS_MAX]
383        VMA INFO: Select Poll (usec)             -1                         [VMA_SELECT_POLL]
384        VMA INFO: Select Poll OS Force           Enabled                    [VMA_SELECT_POLL_OS_FORCE]
385        VMA INFO: Select Poll OS Ratio           1                          [VMA_SELECT_POLL_OS_RATIO]
386        VMA INFO: Select Skip OS                 1                          [VMA_SELECT_SKIP_OS]
387        VMA INFO: CQ Drain Interval (msec)       100                        [VMA_PROGRESS_ENGINE_INTERVAL]
388        VMA INFO: CQ Interrupts Moderation       Disabled                   [VMA_CQ_MODERATION_ENABLE]
389        VMA INFO: CQ AIM Max Count               128                        [VMA_CQ_AIM_MAX_COUNT]
390        VMA INFO: CQ Adaptive Moderation         Disabled                   [VMA_CQ_AIM_INTERVAL_MSEC]
391        VMA INFO: CQ Keeps QP Full               Disabled                   [VMA_CQ_KEEP_QP_FULL]
392        VMA INFO: TCP nodelay                    1                          [VMA_TCP_NODELAY]
393        VMA INFO: Avoid sys-calls on tcp fd      Enabled                    [VMA_AVOID_SYS_CALLS_ON_TCP_FD]
394        VMA INFO: Internal Thread Affinity       0                          [VMA_INTERNAL_THREAD_AFFINITY]
395        VMA INFO: Thread mode                    Single                     [VMA_THREAD_MODE]
396        VMA INFO: Mem Allocate type              2 (Huge Pages)             [VMA_MEM_ALLOC_TYPE]
397        VMA INFO: ---------------------------------------------------------------------------
398       sockperf: == version #3.5-no.git ==
399       sockperf: [SERVER] listen on:
400       [ 0] IP = 22.0.0.3        PORT =  5001 # UDP
401       sockperf: Warmup stage (sending a few dummy messages)...
402       sockperf: [tid 2201] using recvfrom() to block on socket(s)
403
404
405       • Run the client as follows:
406
407       $VMA_SPEC=latency LD_PRELOAD=libvma.so sockperf ping-pong -i 22.0.0.3 -p 5001 -m 64 -t 10 --mps=max
408        VMA INFO: ---------------------------------------------------------------------------
409        VMA INFO: VMA_VERSION: 8.6.10-0 Development Snapshot built on Jun 27 2018 16:06:47
410        VMA INFO: Cmd Line: sockperf ping-pong -i 22.0.0.3 -p 5001 -m 64 -t 10 --mps=max
411        VMA INFO: Current Time: Tue Sep 18 08:47:50 2018
412        VMA INFO: Pid: 20134
413        VMA INFO: OFED Version: MLNX_OFED_LINUX-4.4-1.0.0.0:
414        VMA INFO: Architecture: x86_64
415        VMA INFO: Node: r-aa-apollo04.mtr.labs.mlnx
416        VMA INFO: ---------------------------------------------------------------------------
417        VMA INFO: VMA Spec                       Latency                    [VMA_SPEC]
418        VMA INFO: Log Level                      INFO                       [VMA_TRACELEVEL]
419        VMA INFO: Ring On Device Memory TX       16384                      [VMA_RING_DEV_MEM_TX]
420        VMA INFO: Tx QP WRE                      256                        [VMA_TX_WRE]
421        VMA INFO: Tx QP WRE Batching             4                          [VMA_TX_WRE_BATCHING]
422        VMA INFO: Rx QP WRE                      256                        [VMA_RX_WRE]
423        VMA INFO: Rx QP WRE Batching             4                          [VMA_RX_WRE_BATCHING]
424        VMA INFO: Rx Poll Loops                  -1                         [VMA_RX_POLL]
425        VMA INFO: Rx Prefetch Bytes Before Poll  256                        [VMA_RX_PREFETCH_BYTES_BEFORE_POLL]
426        VMA INFO: GRO max streams                0                          [VMA_GRO_STREAMS_MAX]
427        VMA INFO: Select Poll (usec)             -1                         [VMA_SELECT_POLL]
428        VMA INFO: Select Poll OS Force           Enabled                    [VMA_SELECT_POLL_OS_FORCE]
429        VMA INFO: Select Poll OS Ratio           1                          [VMA_SELECT_POLL_OS_RATIO]
430        VMA INFO: Select Skip OS                 1                          [VMA_SELECT_SKIP_OS]
431        VMA INFO: CQ Drain Interval (msec)       100                        [VMA_PROGRESS_ENGINE_INTERVAL]
432        VMA INFO: CQ Interrupts Moderation       Disabled                   [VMA_CQ_MODERATION_ENABLE]
433        VMA INFO: CQ AIM Max Count               128                        [VMA_CQ_AIM_MAX_COUNT]
434        VMA INFO: CQ Adaptive Moderation         Disabled                   [VMA_CQ_AIM_INTERVAL_MSEC]
435        VMA INFO: CQ Keeps QP Full               Disabled                   [VMA_CQ_KEEP_QP_FULL]
436        VMA INFO: TCP nodelay                    1                          [VMA_TCP_NODELAY]
437        VMA INFO: Avoid sys-calls on tcp fd      Enabled                    [VMA_AVOID_SYS_CALLS_ON_TCP_FD]
438        VMA INFO: Internal Thread Affinity       0                          [VMA_INTERNAL_THREAD_AFFINITY]
439        VMA INFO: Thread mode                    Single                     [VMA_THREAD_MODE]
440        VMA INFO: Mem Allocate type              2 (Huge Pages)             [VMA_MEM_ALLOC_TYPE]
441        VMA INFO: ---------------------------------------------------------------------------
442       sockperf: == version #3.5-no.git ==
443       sockperf[CLIENT] send on:sockperf: using recvfrom() to block on socket(s)
444
445       [ 0] IP = 22.0.0.3        PORT =  5001 # UDP
446       sockperf: Warmup stage (sending a few dummy messages)...
447       sockperf: Starting test...
448       sockperf: Test end (interrupted by timer)
449       sockperf: Test ended
450       sockperf: [Total Run] RunTime=10.000 sec; Warm up time=400 msec; SentMessages=5166035; ReceivedMessages=5166034
451       sockperf: ========= Printing statistics for Server No: 0
452       sockperf: [Valid Duration] RunTime=9.550 sec; SentMessages=4951987; ReceivedMessages=4951987
453       sockperf: ====> avg-lat=  0.951 (std-dev=0.034)
454       sockperf: # dropped messages = 0; # duplicated messages = 0; # out-of-order messages = 0
455       sockperf: Summary: Latency is 0.951 usec
456       sockperf: Total 4951987 observations; each percentile contains 49519.87 observations
457       sockperf: ---> <MAX> observation =    4.476
458       sockperf: ---> percentile 99.999 =    1.318
459       sockperf: ---> percentile 99.990 =    1.270
460       sockperf: ---> percentile 99.900 =    1.179
461       sockperf: ---> percentile 99.000 =    1.110
462       sockperf: ---> percentile 90.000 =    0.967
463       sockperf: ---> percentile 75.000 =    0.952
464       sockperf: ---> percentile 50.000 =    0.943
465       sockperf: ---> percentile 25.000 =    0.936
466       sockperf: ---> <MIN> observation =    0.895
467
468

4. LICENSING

470       Read 'copying' file in the root place.
471

5. INSTALLATION

473   5.1 Requirements
474       What you will need to compile sockperf on Unix systems
475
476       • perl 5.8+ (used by the automake tools)
477
478       • GNU make tools: automake 1.7+, autoconf 2.57+, m4 1.4+ and libtool
479         1.4+
480
481       • A Compiler, among those tested are:
482
483         • gcc4+ (Ubuntu)
484
485         • gcc4+ (Red Hat)
486
487   5.2 Options to compile
488   5.3 How to install
489       Download sockperf-<version>.tar.gz.
490
491       Uncompress *.tar.gz file in Unix systems in the same folder with the
492       file by runing the following command in the shell:
493
494       tar -zxvf sockperf-<version>.tar.gz
495
496
497        or 2 command:
498
499       gzip -d ./sockperf-<version>.tar.gz
500       tar -xf ./sockperf-<version>.tar
501
502
503       The sockperf package uses the GNU autotools compilation and
504       installation framework.
505
506       These are generic installation instructions.
507
508       The `configure' shell script attempts to guess correct values for
509       various system-dependent variables used during compilation. It uses
510       those values to create a `Makefile' in each directory of the package.
511       It may also create one or more `.h' files containing system-dependent
512       definitions. Finally, it creates a shell script `config.status' that
513       you can run in the future to recreate the current configuration, a file
514       `config.cache' that saves the results of its tests to speed up
515       reconfiguring, and a file `config.log' containing compiler output
516       (useful mainly for debugging `configure').
517
518       If you need to do unusual things to compile the package, please try to
519       figure out how `configure' could check whether to do them, and mail
520       diffs or instructions to the address given in the `README' so they can
521       be considered for the next release. If at some point `config.cache'
522       contains results you don't want to keep, you may remove or edit it.
523
524       The file `configure.in' is used to create `configure' by a program
525       called `autoconf'. You only need `configure.in' if you want to change
526       it or regenerate `configure' using a newer version of `autoconf'.
527
528       The simplest way to compile this package is:
529
530       1.  `cd' to the directory containing the package's source code and type
531           `./configure' to configure the package for your system. If you're
532           using `csh' on an old version of System V, you might need to type
533           `sh ./configure' instead to prevent `csh' from trying to execute
534           `configure' itself.
535
536       Running `configure' takes awhile. While running, it prints some
537       messages telling which features it is checking for.
538
539       $ ./configure --prefix=<path to install>
540
541
542       There are several options to ./config (or ./Configure) to customize the
543       build:
544
545       To enable test scripts
546
547       $ ./configure --prefix=<path to install> --enable-test
548
549
550       To enable the documentation
551
552       $ ./configure --prefix=<path to install> --enable-doc
553
554
555       To enable the special scripts
556
557       $ ./configure --prefix=<path to install> --enable-tool
558
559
560       To compile with debug symbols and information:
561
562       $ ./configure --prefix=<path to install> --enable-debug
563
564
565       This will define the _DEBUG variable at compile time.
566
567       Type './configure --help' for a list of all the configure options. Some
568       of the options are generic autoconf options, while the SockPerf
569       specific options are prefixed with 'SOCKPERF:' in the help text.
570
571       2.  Type `make' to compile the package.
572
573       $ make
574
575
576       3.  Optionally, type `make check' to run any self-tests that come with
577           the package.
578
579       4.  Type `make install' to install the programs and any data files and
580           documentation.
581
582       $ make install
583
584
585       5.  You can remove the program binaries and object files from the
586           source code directory by typing `make clean'. To also remove the
587           files that `configure' created (so you can compile the package for
588           a different kind of computer), type `make distclean'. There is also
589           a `make maintainer-clean' target, but that is intended mainly for
590           the package's developers. If you use it, you may have to get all
591           sorts of other programs in order to regenerate files that came with
592           the distribution.
593
594Version 3.8-no.git              Sat Jan 21 2023                    sockperf(3)
Impressum