Skip to content

Incomplete and incorrect CPU utilization output #1552

Description

@romanveaceslav

NOTE: The iperf3 issue tracker is for registering bugs, enhancement
requests, or submissions of code. It is not a means for asking
questions about building or using iperf3. Those are best directed
towards the Discussions section for this project at
https://github.com/esnet/iperf/discussions
or to the iperf3 mailing list at iperf-dev@googlegroups.com.
A list of frequently-asked questions
regarding iperf3 can be found at http://software.es.net/iperf/faq.html.

Context

Upgraded iperf3 from iperf3-3.6 to iperf3-3.14

  • Version of iperf3:

iperf3-3.14

  • Hardware:

Client side Raspberry Pi 4B or AMD Ryzen 5 PRO 5650U
Server side HP server

  • Operating system (and distribution, if any):

Client side Raspberry Pi OS (64-bit) or LinuxMint 21.2 based on Ubuntu 22.04 Jammy
Server side Ubuntu 16.10

Servers as daemon launched as

sudo iperf3 -s -V -D -d --logfile iperf3.log -I iperf.pid
sudo iperf3 -s -J -D -i 0 -p 5202 --logfile iperf3_j.log -I iperf_j.pid

one to collect human readable and one to collect JSON

Please note: iperf3 is supported on Linux, FreeBSD, and macOS.
Support may be provided on a best-effort basis to other UNIX-like
platforms. We cannot provide support for building and/or running
iperf3 on Windows, iOS, or Android.

  • Other relevant information (for example, non-default compilers,
    libraries, cross-compiling, etc.):

Compiles without error on all platforms.

Please fill out one of the "Bug Report" or "Enhancement Request"
sections, as appropriate. Note that submissions of bug fixes, new
features, etc. should be done as a pull request at
https://github.com/esnet/iperf/pulls

Bug Report

Client in Reverse mode in iperf3-3.14, verbose -V human readable does not show CPU utilization in the client side report but show it in server side report (--get server output). The opposite, when client upload the CPU utilization string appear after client report and not after server report.

This is unlike the behavior used to be in iperf3-3.6 which shown CPU utilization both after client and server side results.
This it make it impossible to see in iperf3-3.14 CPU utilization of the client in reverse (-R) mode as on client side in iperf3-3.14 there is no such report and the server side reports incorrect values for the client (remote/receiver) from previous test (this issue with incorrect server side report on client CPU utilization from previous test was present also in iperf3-3.6 but could have been ignored as, client side used to report apparently correct values.

  • Expected Behavior

this is from real 3.6 output:

iperf3 -Z -V -c xxx.xxx.xxx.xxx -t 10 -O 2 -R --get-server-output
Connecting to host xxx.xxx.xxx.xxx, port 5201
Reverse mode, remote host xxx.xxx.xxx.xxx is sending
#................................typical iperf3 output
CPU Utilization: local/receiver 14.2% (0.3%u/13.9%s), remote/sender 0.2% (0.0%u/0.2%s)
#................................typical iperf3 output
Server output:
CPU Utilization: local/sender 0.2% (0.0%u/0.2%s), remote/receiver 2.0% (0.0%u/2.0%s) -> that's wrong, it shall be 14.2% (0.3%u/13.9%s)
#................................typical iperf3 output

  • Actual Behavior

The line CPU Utilization: local/receiver 14.2% (0.3%u/13.9%s), remote/sender 0.2% (0.0%u/0.2%s) from above in 3.14 is missing and the CPU Utilization: local/sender 0.2% (0.0%u/0.2%s), remote/receiver 2.0% (0.0%u/2.0%s) has a wrong value of remote/receiver 2.0% (0.0%u/2.0%s) .

Repeating the test again (either in 3.6 or 3.14) will show in Server output remote/receiver 14.2% (0.3%u/13.9%s) from previous test.

iperf3_3.14_CPU_report_summary.txt
iperf3_3.6_CPU_report_summary.txt
iperf3_3.14_CPU_report_behaviour.txt
iperf3_3.6_CPU_report_behaviour.txt

  • Steps to Reproduce

iperf3 -Z -V -c 193.239.183.36 -t 10 -O 2 --get-server-output >log_3.14.txt
iperf3 -Z -V -c 193.239.183.36 -t 10 -O 2 -R --get-server-output >>log_3.14.txt
iperf3 -Z -V -c 193.239.183.36 -t 10 -O 2 --get-server-output >>log_3.14.txt
iperf3 -Z -V -c 193.239.183.36 -t 10 -O 2 -R --get-server-output >>log_3.14.txt

  • Possible Solution

Restore printing of CPU utilization on client report after the -R mode.
Also, the behavior of wrong, previous test CPU utilization shown on server output, (the same for is JSON) need to be, at, least documented.

Enhancement Request

  • Current behavior

  • Desired behavior

  • Implementation notes

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions