1
1

476 Коммитов

Автор SHA1 Сообщение Дата
Bruce A. Mah
0ff7575499 Fix build on Linux distros that don't support TCP_CONGESTION.
Apparently older kernels don't support TCP_CONGESTION, so we can't
just test for defined(linux) to know if we can use this sockopt or not.
This change unbreaks the build on (notably) CentOS 5.
2014-01-16 10:43:08 -08:00
Bruce A. Mah
cf59099b49 Add support for a -d debug flag to enable debugging output.
Mostly intended for developer use.  At the moment there are no public
uses for this flag.
2014-01-15 10:27:33 -08:00
Bruce A. Mah
deefb95fea Add FreeBSD support for -A (set CPU affinity).
Mostly this change consists of adding FreeBSD-specific code to handle
this feature.  The concepts and system calls are very similar to what's
already done for Linux.  One difference is that on FreeBSD, the CPU
affinity mask is saved before -A processing and restored afterwards.
This causes a slight change to the function signatures for
iperf_setaffinity() and iperf_clearaffinity() (these functions
however are not documented as a part of the libiperf3 API).

Slightly improve some of the documentation for the -A command line
option, to hopefully stave off some of the questions about this
feature.

Mostly based on a submitted patch.

Issue:          128 (better error message for CPU affinity failure)
Submitted by:   Susant Sahani <ssahani@redhat.com>
2014-01-13 10:58:47 -08:00
Bruce A. Mah
55a453c2a1 Clean up some memory leaks in iperf_new_stream error handling.
Submitted by:	Susant Sahani <ssahani@redhat.com>
2014-01-13 09:27:42 -08:00
Bruce A. Mah
c04bdcb9d0 Second try at printing statistics when processes are interrupted.
When the client process gets interrupted, both the client and server
dump out accumulated interval statistics, as well as a partial set of
summary statistics (basically each side dumps what it has, but without
the exchange of information that usually happens at the end of a
normal run).

If the server process gets interrupted, the server dumps out its
accumulated interval and summary statistics as above.  The client does
this as well in the -R case, but exits with a "Broken pipe" in the non
-R case (this behavior was present all along; it was not introduced in
this change).  More investigation will be needed to understand the
client behavior.

Bump copyright dates in a few places.

Issue:		132 (signal handler for API calls)
Discussed with:	aaron@internet2.edu
2014-01-07 16:06:27 -08:00
Bruce A. Mah
a898ff8b8e If the client gets interrupted / signaled, dump JSON output.
Issue:		132 (signal handler for API calls)
2014-01-06 12:18:21 -08:00
Bruce A. Mah
c7ddebaa6c Fix memory leaks in iperf_reset_test().
Submitted by:	Susant Sahani <ssahani@redhat.com>
2014-01-03 11:19:26 -08:00
Bruce A. Mah
7da3d76096 Fix another minor memory leak.
Submitted by:	Susant Sahani <ssahani@redhat.com>
2014-01-02 13:26:51 -08:00
Bruce A. Mah
e3faf8e421 Fix minor memory leak.
Submitted by:	Susant Sahani <ssahani@redhat.com>
2014-01-02 13:21:49 -08:00
Bruce A. Mah
39ad947995 For now, suppress printing congestion window stats in the output.
(It remains in the JSON output.)

We have some issues we need to resolve about the formatting and
representation of this (and other future values that we might be
adding).
2013-12-19 14:44:15 -08:00
Bruce A. Mah
dcd7b32b15 Follow-on to 4cfce137e89c based on some feedback and experience.
Rip out the tcpi_sacked support...it doesn't really keep a cumulative
total of SACKs received like we thought it did (it's instantaneous
state).

Convert tcpi_snd_cwnd (originally expressed in segments) to octets before
printing.

Re-work internal APIs for functions to get stuff out of tcp_info...rather
than doing a getsockopt() call per value, grab the values out of a
saved copy of the tcp_info structure (which we were getting in almost
every case anyway).

Issue:		99 (Additional TCP_INFO items)
2013-12-19 13:37:50 -08:00
Bruce A. Mah
310bd92410 Fix minor output glitch where we printed "receiver" when we meant "sender". 2013-12-19 11:44:03 -08:00
Bruce A. Mah
8d1388a3b8 Fix a logic bug in JSON output where default MSS was output as 0. 2013-12-19 11:33:38 -08:00
Jef Poskanzer
f11d3fa332 Added -k / --blockcount. 2013-12-19 10:31:22 -08:00
Jef Poskanzer
6a00b2dfdd Branch merge. 2013-12-18 15:12:43 -08:00
Bruce A. Mah
5cdc6a4ac8 Keep track of SACKs and snd_cwnd from tcp_info (Linux only for now).
Committing this WIP so we can get some experimentation done with it.
2013-12-18 15:09:46 -08:00
Jef Poskanzer
bdf5335c2b Added burst mode. 2013-12-17 16:12:24 -08:00
Jef Poskanzer
62bfa88ceb Added -C / --linux-congestion.
Also a few other bugfixes I ran across.
2013-12-13 19:57:52 -08:00
Jef Poskanzer
adec7fe48b Re-order one line to clarify code. 2013-12-12 12:09:42 -08:00
Bruce A. Mah
d04c7bd0a4 Support setting the IPv6 flow label on Linux systems (only).
This functionality uses some setsockopt(2) calls that unfortunately
don't seem to have an analog on other platforms.

Slightly tweaked version of a patch that was...

Submitted by:	ssahani@redhat.com
Issue:		40 (Option for setting Flow Label field in IPv6
		header)
2013-12-12 09:21:36 -08:00
Jef Poskanzer
c8a0a2229d Added a check for malloc fail.
Eventually we need to add a whole bunch more of these.
2013-12-12 08:15:15 -08:00
Jef Poskanzer
c06bc78c65 Fixed initialization issue.
It was causing the server side to mess up after the first test.
2013-12-05 12:00:46 -08:00
Jef Poskanzer
95360b2046 Show UDP stats in interval reports.
To the extent possible, anyway - on the sender side,
only the packet counts are available.

Also a few minor bug fixes.
2013-12-04 09:16:37 -08:00
Jef Poskanzer
e41823c46b Pushing out merge of inadvertent branch. 2013-12-02 09:55:48 -08:00
Bruce A. Mah
fe4a13ab4d Support daemonizing with -D flag.
Possible related work still under consideration:

o Use syslog in daemon mode for output that would normally go to
  stdout / stderr.

o Write a PID file.

This is basically the gist of Issue 105.
2013-11-26 15:40:19 -08:00
Jef Poskanzer
056361fc5d Show user/system CPU usage as well as total. 2013-11-26 14:47:15 -08:00
Jef Poskanzer
979405373d When receiving a disk file with the -F flag, do an fsync() after each write(). 2013-11-25 09:57:50 -08:00
Jef Poskanzer
7bcbb1f653 Performance improvements. 2013-11-15 09:54:21 -08:00
Jef Poskanzer
37ba3f73dd Simplified output formatting. 2013-11-12 08:58:00 -08:00
Jef Poskanzer
b47e9f6a66 Couple of improvements to the report format. 2013-11-11 12:16:38 -08:00
Jef Poskanzer
a98b10bf91 Get rid of compiler warning. 2013-11-11 11:38:52 -08:00
Jef Poskanzer
d1405717cd Redid the CPU Utilization report so it shows sender/receiver as
well as local/remote.
2013-11-11 11:37:07 -08:00
Jef Poskanzer
558c9b8013 Moved a bunch more output strings to locale.[hc]. 2013-11-11 11:18:46 -08:00
Jef Poskanzer
0e60ef1f9c Get rid of some compiler warnings about iprintf. 2013-11-08 21:19:59 -08:00
Jef Poskanzer
d38ab4c8df Added the -T / --title flag. 2013-11-08 20:31:19 -08:00
Jef Poskanzer
565366424b Changed default for -i from 0 to 1. 2013-11-08 16:12:26 -08:00
Jef Poskanzer
e35f2035d5 Added a cast to avoid a compiler warning. 2013-11-07 08:20:04 -08:00
Jef Poskanzer
d2b9eb1a87 Another potentially protocol-breaking but necessary change.
The error numbers sent for SERVER_ERROR state were declared
as ints, and therefore could be 32 or 64 bits depending on
architecture.  I changed them to be explicitly 32 bits.

This should be the last of these, I've checked out at every network
read/write call and they look ok.

And bumped the version to 3.0-RC5.
2013-11-07 08:14:45 -08:00
Jef Poskanzer
2944aaa05b State is signed char.
test->state is an explicitly signed char, so the two routines that
manipulate it must use explicitly signed chars too.

One could argue that the two negative state values should have been
positive like the rest, but changing them now would be a protocol change.
2013-11-06 10:33:26 -08:00
Jef Poskanzer
ddb503b5a3 The JSON length field should be explicitly 32 bits, not just "int",
for better interoperation.
2013-11-05 21:50:29 -08:00
Jef Poskanzer
38917b1f3f Run -i interval timers on the server as well as the client. 2013-11-01 13:59:33 -07:00
Jef Poskanzer
afe6222a89 Move termination signal handing from main into iperf_run_client
and iperf_run_server, so that API users get it too.  Also, call
iperf_errexit with an appropriate message, which in -J mode dumps
out any accumulated JSON data.
2013-10-29 15:03:17 -07:00
Jef Poskanzer
69376ec7ed Fix retransmit accounting so it works right with the --omit flag. 2013-10-28 17:13:30 -07:00
Jef Poskanzer
8a7e01eb8f Implement -A flag to set CPU affinity. 2013-10-25 17:00:52 -07:00
Jef Poskanzer
a953f5aa2c Re-do of how --omit works. 2013-10-24 14:08:04 -07:00
Jef Poskanzer
ea5d93b241 Always send omit client->server, otherwise omit==0 doesn't work. 2013-10-22 13:55:56 -07:00
Jef Poskanzer
965d8d7688 Added a summary line to the final report for the -F option. 2013-10-21 16:15:27 -07:00
Jef Poskanzer
e32a7bcd77 Added the -F / --file flag, to use a specified file instead
of random data for sending, and to save the data in the file
on receiving.
2013-10-19 07:43:38 -07:00
Jef Poskanzer
36662029e5 Added a timestamp in verbose and JSON output. 2013-09-14 08:59:50 -07:00
Jef Poskanzer
66ee0e2084 Got rid of the -d/--debug flag, it was not being used for anything. 2013-09-14 08:36:11 -07:00