Package: iperf
Version: 2.0.5-3
Severity: important
Tags: upstream

Dear Maintainer,

Troubleshooting the cause of unexpectedly poor benchmarking at high packet-per-
second rates of UDP it was found that the iperf package included in squeeze
(2.0.4) performed significantly better than that which is included in wheezy
(2.0.5).

This behaviour was verified across several machines and can be replicated using
the loopback adapter, eliminating network cards and drivers.

While iperf 2.0.4 in squeeze is capable of generating large numbers of packets
per second in UDP mode (we have observed over half a million), 2.0.5 in wheezy
consistently transmits at 70,000 packets per second (or thereabouts) and no
more, in an otherwise identical scenario. This makes the results given by iperf
unexpectedly misleading in these situations (e.g. where the combination of
requested bandwidth and packet size requires high packet rates).

This behaviour was observed with the iperf packages from both wheezy and
unstable, built both with and without the included Debian patches.

   * What exactly did you do (or not do) that was effective (or
     ineffective)?

When running iperf 2.0.4 (built from the squeeze source package):

# iperf -u -c 127.0.0.1 -l 32 -b 1000M -t 60
------------------------------------------------------------
Client connecting to 127.0.0.1, UDP port 5001
Sending 32 byte datagrams
UDP buffer size:   224 KByte (default)
------------------------------------------------------------
[  3] local 127.0.0.1 port 53255 connected with 127.0.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-60.0 sec    698 MBytes  97.6 Mbits/sec
[  3] Sent 22886425 datagrams

In 60 seconds, 22886425 datagrams were generated, for an average of approx.
381440 packets per second. However while running iperf 2.0.5 included with
wheezy:

# iperf -u -c 127.0.0.1 -l 32 -b 1000M -t 60
------------------------------------------------------------
Client connecting to 127.0.0.1, UDP port 5001
Sending 32 byte datagrams
UDP buffer size:  224 KByte (default)
------------------------------------------------------------
[  3] local 127.0.0.1 port 39531 connected with 127.0.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-60.0 sec   126 MBytes  17.7 Mbits/sec
[  3] Sent 4144058 datagrams

Only 4144058 datagrams were generated in the same time period, averaging
approx. 69068 packets per second. This number seems to be a hard limit across
many machines, including a machine with dual 10-core Xeon processors.

The behaviour seen with 2.0.4 is the expected behaviour - that iperf generates
as many packets as possible given the hardware and so on on which it is run.

One hypothesis as to the cause of this problem is that the timing mechanism
used to generate the packets at the specified rate has changed between
versions, introducing this regression.



-- System Information:
Debian Release: 7.8
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_NZ.UTF-8, LC_CTYPE=en_NZ.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages iperf depends on:
ii  libc6       2.13-38+deb7u6
ii  libgcc1     1:4.7.2-5
ii  libstdc++6  4.7.2-5

iperf recommends no packages.

iperf suggests no packages.

-- no debconf information

Attachment: all-iperf-output-across-versions.tar.gz
Description: GNU Zip compressed data

Reply via email to