一些iperf3的调优方法

iperf3是遵循BSD许可协议的网络TCP、UDP、STCP协议的测试工具,支持IPv4和v6,最初由 NLANR/DAST开发,后来主要由ESnet / Lawrence Berkeley National Laboratory开发。目前看,开发停止在2016年,这个软件的特点小巧玲珑,简单易用,被移植到各种各样的平台,很快成为广为使用的网络带宽测试工具。

最近遇到一个问题,iperf3在测试带宽的时候,在带宽很高的时候,CPU占用率非常高,导致带宽上不去。于是花时间调研了一下,看了手册、文档、源代码,然后自己搭建环境测试了一下,发现iperf3的调优还是挺方便的。

环境如下:

本机 + VMware Fedora 31(1C2G)

iperf3.1.3

命令如下:

服务器:

iperf3 –s

客户端:

iperf –c server_ip –p 5201 –Z –u

iperf –c server_ip –p 5201 –Z –u –b 300M

测试结果:

image

image

结论如下:
1、如果使用-Z参数,网络带宽可以达到4倍,但是CPU利用率仅为大约50%-75%
2、如果使用-b XM参数,则在网络实际带宽大于X时,则X越大,消耗的CPU越多,这是iperf的实现造成的。但是如果实际网络带宽小于X时,则和不加参数一样,CPU消耗不大
3、CPU的消耗不仅仅是iperf,而且还有系统,使用-b参数会大幅度提升系统的CPU消耗,最大可能会提升一个数量级

4、UDP:使用-u参数,可以用UDP协议测试带宽,性能更容易达标。但是又丢包问题

5、TCP:不使用-u参数,但是配置窗口大小是个技术活,而这个问题恰恰是iperf的初衷,https://iperf.fr/iperf-doc.php 这个文档的 Tuning a TCP connection章节有一个计算窗口大小的公式

建议如下:
1、使用-Z参数来减少CPU消耗,同时提升默认带宽测试能力
2、如果仅仅测试极限带宽,不要用-b参数

顺便提到的是下载Fedora(https://getfedora.org/)的时候,我发现Fedora也不是当年吴下阿蒙了,Fedora有桌面版本、服务器版本、COREOS、SILVERBLUE、IOT5个系列,支持x64和aarch64两个平台,而且已经和AWS、GCP、OpenStack、BareMetal都有合作,这个还是真的很重要,通过兼容性实现了生态和价值。

image

Fedora的生态系统

image

相关信息:

  1. https://iperf.fr/
  2. https://iperf.fr/iperf-download.php
  3. https://iperf.fr/iperf-doc.php
  4. https://blog.csdn.net/u012965203/article/details/93378459
  5. https://www.cnblogs.com/hjc4025/p/10438028.html
  6. https://getfedora.org/

发表评论

电子邮件地址不会被公开。 必填项已用*标注