全网最完整的iperf测试工具使用说明

文章目录

  • 前言
  • iPerf 2.0、iPerf 3.0 和 iPerf 3.1 之间的变化
  • iPerf 3 用户文档
  • iPerf 2.0.6、iPerf 2.0.7 和 iPerf 2.0.8 之间的更改
  • iPerf 2 用户文档
    • 调整 TCP 连接
    • 调整 UDP 连接
    • 组 播
    • IPv6 模式
    • 使用代表性流测量带宽
    • 将服务器作为守护程序运行


前言

iPerf - TCP、UDP 和 SCTP 的终极速度测试工具。常用的的网络限制 + 互联网中立性测试工具。被广为认可。
但是国内网站上的iperf使用说明都含糊不清甚至是错的,没办法只能自己手动翻译和搬运了官网上的iperf手册。

iPerf 2.0、iPerf 3.0 和 iPerf 3.1 之间的变化

  • iPerf3 当前支持的 iPerf2 功能:
    TCP 和 UDP 测试
    设置端口 (-p)
    设置 TCP 选项:无延迟、MSS 等。
    设置 UDP 带宽 (-b)
    设置套接字缓冲区大小 (-w)
    报告间隔 (-i)
    设置 iPerf 缓冲区 (-l)
    绑定到特定接口 (-B)
    IPv6 测试 (-6)
    要传输的字节数 (-n)
    测试长度 (-t)
    并行流 (-P)
    设置 DSCP/TOS 位向量 (-S)
    更改数字输出格式 (-f)
  • iPerf 3.0 的新功能:
    动态服务器(客户端/服务器参数交换) – iPerf2 中的大多数服务器选项现在都可以由客户端动态设置
    客户端/服务器结果交换
    iPerf3 服务器同时接受单个客户端(iPerf2 同时接受多个客户端)
    iPerf API (libiperf) – 提供一种使用、自定义和扩展 iPerf 功能的简单方法
    -R,反向测试模式 – 服务器发送,客户端接收
    -O, --omit N :省略前 n 秒(忽略 TCP 慢启动)
    TCP 为 -b, --bandwidth n[KM](IPERF 2 仅为 UDP):将目标带宽设置为 n 位/秒(UDP 默认为 1 Mbit/秒,TCP 无限制)。
    -V, --verbose :比以前更详细的输出
    -J, --json :JSON 格式的输出
    -Z, --zerocopy :使用“零复制”sendfile() 方法发送数据。这使用的 CPU 要少得多。
    -T, --title str :在每个输出行前加上此字符串的前缀
    -F, --file name : xmit/recv 指定的文件
    -A, --affinity n/n,m : 设置 CPU 亲和力(内核编号从 0 - 仅限 Linux 和 FreeBSD)
    -k, --blockcount #[KMG] :要传输的块数(数据包)(而不是 -t 或 -n)
    -4, --version4 : 仅使用 IPv4
    -6, --version6 : 仅使用 IPv6
    -L, --flowlabel : 设置 IPv6 流标签(仅限 Linux)
    -C, --linux-congestion : 设置拥塞控制算法(仅限 Linux 和 FreeBSD)(iPerf2 中的 -Z)
    -d, --debug :发出调试输出。主要(也许是唯一)供开发人员使用。
    -s, --server :iPerf2 可以处理多个客户端请求。iPerf3 一次只允许一个 iperf 连接。
  • iPerf 3.1 的新功能:
    -I, --pidfile 文件写入一个带有进程 ID 的文件,在作为守护程序运行时最有用。
    –cport :指定客户端端口。
    –sctp 使用 SCTP 而不是 TCP(Linux、FreeBSD 和 Solaris)。
    –udp-counters-64bit :支持运行时间非常长的 UDP 测试,这可能会导致计数器溢出
    –logfile file :将输出发送到日志文件。
  • iPerf3 不支持的 iPerf2 功能
    双向测试 (-d / -r)
    从 stdin (-I) 传输的数据
    TTL : 生存时间,用于组播 (-T)
    排除 C(连接) D(数据) M(组播) S(设置) V(服务器) 报告 (-x)
    以逗号分隔值 (-y) 的形式报告
    兼容模式允许与旧版本的 iPerf (-C) 一起使用

iPerf 3 用户文档

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
另请参阅 https://github.com/esnet/iperf

iPerf 2.0.6、iPerf 2.0.7 和 iPerf 2.0.8 之间的更改

  • 2.0.6 更改集 (rjmcmahon@rjmcmahon.com) 2014 年 3 月:
    增加报表标头的共享内存,减少互斥锁争用。需要提高性能。应与平台/操作系统无关的次要代码更改
  • 2.0.7 更改集 (rjmcmahon@rjmcmahon.com) 2014 年 8 月:
    仅限 Linux 的版本,支持结束/结束延迟(假设时钟同步)
    支持更小的报告间隔(5 毫秒或更大)
    UDP 的结束/结束延迟(平均值/最小值/最大值),以毫秒为单位显示,分辨率为微秒
    套接字读取超时(仅限服务器),因此无论是否未收到数据包,都会发生 iperf 报告
    报表时间戳现在显示毫秒分辨率
    本地绑定支持使用冒号作为分隔符的端口值 (-B 10.10.10.1:60001)
    使用 linux 实时调度程序和数据包级时间戳来提高延迟准确性
    建议在客户端和服务器上使用 PTP 将时钟同步到微秒
    建议 PTP 大师的质量参考,例如来自 Spectracom 等公司的 GPS 训练振荡器
  • 2.0.8 更改集(截至 2015 年 1 月 12 日):
    修复可移植性,使用 Linux、Win10、Win7、WinXP、MacOS 和 Android 进行编译和测试
    客户端现在需要 UDP 的 -u(不再默认为 UDP 和 -b)
    维护旧版报告格式
    支持 -e 获取增强的报告
    支持使用令牌存储桶的 TCP 速率限制流(通过 -b)
    支持每秒数据包数 (UDP) 通过 pps 作为单位,(例如 -b 1000pps)
    在客户端和服务器报表 (UDP) 中显示 PPS
    支持实时调度程序作为命令行选项(–realtime 或 -z)
    改进客户端 tx 代码路径,使实际 tx 报价速率收敛到 -b 值
    提高微秒级延迟调用的准确性(以与平台无关的方式)
    (使用卡尔曼滤波来预测延迟误差,并根据预测误差调整延迟)
    在初始客户端标头 (UDP) 中显示目标循环时间
    修复从服务器发送到客户端 (UDP) 的最终延迟报告
    在延迟输出中包括标准偏差
    抑制不切实际的延迟输出 (-/-/-/-)
    支持发送SO_SNDTIMEO,因此套接字写入不会阻止超过 -t (TCP)
    如果可用,请使用 clock_gettime(优先于 gettimeofday())
    TCP 写入和错误计数(适用于 Linux 的 TCP 重试和 CWND)
    TCP 读取计数、TCP 读取直方图(8 个箱)
    服务器将在 -t 秒无流量后关闭套接字

另请参阅 https://sourceforge.net/projects/iperf2/

iPerf 2 用户文档

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

调整 TCP 连接

iPerf 的主要目标是帮助调整特定路径上的 TCP 连接。最 TCP 的基本调整问题是 TCP 窗口大小,它控制网络中任何一点的数据量。 如果它太小,发送方有时会处于空闲状态,性能不佳。用于 TCP窗口大小是带宽延迟乘积,
瓶颈带宽 * 往返时间
在下面的 modi4/cyclops 示例中,瓶颈链路是 45 Mbit/秒的 DS3 链路,使用 ping 测量的往返时间为 42 ms。 带宽延迟乘积为
45 Mbit/秒 * 42 ms
= (45e6) * (42e-3)
= 1890000 位
= 230 KB
这是确定最佳窗口大小的起点;将其设置得更高或更低可能会产生更好的结果。 在我们的示例中,尽管带宽延迟乘积为 230K,但超过 130K 的缓冲区大小并没有提高性能。
请注意,许多操作系统和主机对 TCP 窗口大小有上限。 这些可能低至 64 KB,也可能高达几 MB。iPerf 尝试检测何时发生这些情况,并发出警告,指出实际和请求的窗口大小为 不相等(如下所示,尽管这是由于 IRIX 中的四舍五入)。 有关 TCP 窗口大小的详细信息,请参阅 LaFibre.info。 下面是伊利诺伊州 node1 和北卡罗来纳州 node2 之间的示例会话。它们通过 vBNS 主干网和 45 Mbit/秒 DS3 链路连接。 请注意,我们使用适当的 TCP 窗口大小将带宽性能提高了 3 倍。 在允许以字节粒度设置窗口大小的平台上使用自适应窗口大小功能。

node2> iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 60.0 KByte (default)
------------------------------------------------------------
[  4] local <IP Addr node2> port 5001 connected with <IP Addr node1> port 2357
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.1 sec   6.5 MBytes   5.2 Mbits/sec

node1> iperf -c node2
------------------------------------------------------------
Client connecting to node1, TCP port 5001
TCP window size: 59.9 KByte (default)
------------------------------------------------------------
[  3] local <IP Addr node1> port 2357 connected with <IP Addr node2> port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   6.5 MBytes   5.2 Mbits/sec
node2> iperf -s -w 130k
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size:  130 KByte
------------------------------------------------------------
[  4] local <IP Addr node 2> port 5001 connected with <IP Addr node 1> port 2530
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.1 sec  19.7 MBytes  15.7 Mbits/sec

node1> iperf -c node2 -w 130k
------------------------------------------------------------
Client connecting to node2, TCP port 5001
TCP window size:  129 KByte (WARNING: requested  130 KByte)
------------------------------------------------------------
[  3] local <IP Addr node1> port 2530 connected with <IP Addr node2> port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  19.7 MBytes  15.8 Mbits/sec
  • 另一个要做的测试是运行并行 TCP 流。 如果总聚合带宽大于单个流获得的带宽,则说明有问题。 要么是 TCP 窗口大小太小,要么是操作系统的 TCP 实现有错误,要么是网络本身有缺陷。 有关 TCP 窗口大小,请参阅上文;否则诊断有些困难。 如果 iPerf 是使用 pthreads 编译的,则单个客户端和服务器可以对此进行测试,否则会在不同的端口上设置多个客户端和服务器。 下面是一个示例,其中单个流获得 16.5 Mbit/秒,但两个并行流 总共得到 16.7 + 9.4 = 26.1 Mbit/秒,即使使用较大的 TCP 窗口大小:
node2> iperf -s -w 300k
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size:  300 KByte
------------------------------------------------------------
[  4] local <IP Addr node2> port 5001 connected with <IP Addr node1> port 6902
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.2 sec  20.9 MBytes  16.5 Mbits/sec

[  4] local <IP Addr node2> port 5001 connected with <IP Addr node1> port 6911
[  5] local <IP Addr node2> port 5001 connected with <IP Addr node2> port 6912
[ ID] Interval       Transfer     Bandwidth
[  5]  0.0-10.1 sec  21.0 MBytes  16.7 Mbits/sec
[  4]  0.0-10.3 sec  12.0 MBytes   9.4 Mbits/sec

node1> ./iperf -c node2 -w 300k
------------------------------------------------------------
Client connecting to node2, TCP port 5001
TCP window size:  299 KByte (WARNING: requested  300 KByte)
------------------------------------------------------------
[  3] local <IP Addr node2> port 6902 connected with <IP Addr node1> port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.2 sec  20.9 MBytes  16.4 Mbits/sec

node1> iperf -c node2 -w 300k -P 2
------------------------------------------------------------
Client connecting to node2, TCP port 5001
TCP window size:  299 KByte (WARNING: requested  300 KByte)
------------------------------------------------------------
[  4] local <IP Addr node2> port 6912 connected with <IP Addr node1> port 5001
[  3] local <IP Addr node2> port 6911 connected with <IP Addr node1> port 5001
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.1 sec  21.0 MBytes  16.6 Mbits/sec
[  3]  0.0-10.2 sec  12.0 MBytes   9.4 Mbits/sec

TCP 的次要调整问题是最大传输单元 (MTU)。 为了最有效,两个主机都应支持路径 MTU 发现。 没有路径 MTU 发现的主机通常使用 536 作为 MSS,这会浪费带宽和处理时间。 使用 -m 选项显示正在使用的 MSS,并查看这是否符合您的预期。 以太网通常约为 1460 字节。

node3> iperf -s -m
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 60.0 KByte (default)
------------------------------------------------------------
[  4] local <IP Addr node3> port 5001 connected with <IP Addr node4> port 1096
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0- 2.0 sec   1.8 MBytes   6.9 Mbits/sec
[  4] MSS size 1448 bytes (MTU 1500 bytes, ethernet)
[  4] Read lengths occurring in more than 5% of reads:
[  4]   952 bytes read   219 times (16.2%)
[  4]  1448 bytes read  1128 times (83.6%)

下面是不支持路径 MTU 发现的主机。它只会发送和接收 576 字节的小数据包。

node4> iperf -s -m
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 32.0 KByte (default)
------------------------------------------------------------
[  4] local <IP Addr node4> port 5001 connected with <IP Addr node3> port 13914
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0- 2.3 sec   632 KBytes   2.1 Mbits/sec
WARNING: Path MTU Discovery may not be enabled.
[  4] MSS size 536 bytes (MTU 576 bytes, minimum)
[  4] Read lengths occurring in more than 5% of reads:
[  4]   536 bytes read   308 times (58.4%)
[  4]  1072 bytes read    91 times (17.3%)
[  4]  1608 bytes read    29 times (5.5%)

iPerf 支持其他调优选项,这些选项是针对特殊网络情况(如 HIPPI-to-HIPPI over ATM)添加的。


调整 UDP 连接

iPerf 创建恒定比特率 UDP 流。这是一个非常人工的流,类似于语音通信,但没有太多其他内容。

您需要将数据报大小 (-l) 调整为应用程序使用的大小。

服务器通过数据报中的 ID 号检测 UDP 数据报丢失。 通常,一个 UDP 数据报会变成多个 IP 数据包。丢失单个 IP 数据包将丢失整个数据报。 要测量数据包丢失而不是数据报丢失,请使用 -l 选项使数据报足够小以适合单个数据包。 默认大小为 1470 字节,适用于以太网。还会检测到无序数据包。 (无序数据包会导致丢失的数据包计数出现一些歧义; iPerf 假定它们不是重复的数据包,因此它们被排除在丢失的数据包计数之外。 由于 TCP 不会向用户报告丢失,因此我发现 UDP 测试有助于查看路径上的数据包丢失情况。

抖动计算由服务器连续计算,如下所示 RFC 1889 中的 RTP。客户端在 包。服务器将相对传输时间计算为 (服务器的接收时间 - 客户端的发送时间)。客户端和服务器的时钟不需要 同步;在抖动计算中减去任何差异。抖动 是连续运输时间之间差值的平滑平均值。

node2> iperf -s -u -i 1
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 60.0 KByte (default)
------------------------------------------------------------
[  4] local <IP Addr node2> port 5001 connected with <IP Addr node1> port 9726
[ ID] Interval       Transfer     Bandwidth       Jitter   Lost/Total Datagrams
[  4]  0.0- 1.0 sec   1.3 MBytes  10.0 Mbits/sec  0.209 ms    1/  894 (0.11%)
[  4]  1.0- 2.0 sec   1.3 MBytes  10.0 Mbits/sec  0.221 ms    0/  892 (0%)
[  4]  2.0- 3.0 sec   1.3 MBytes  10.0 Mbits/sec  0.277 ms    0/  892 (0%)
[  4]  3.0- 4.0 sec   1.3 MBytes  10.0 Mbits/sec  0.359 ms    0/  893 (0%)
[  4]  4.0- 5.0 sec   1.3 MBytes  10.0 Mbits/sec  0.251 ms    0/  892 (0%)
[  4]  5.0- 6.0 sec   1.3 MBytes  10.0 Mbits/sec  0.215 ms    0/  892 (0%)
[  4]  6.0- 7.0 sec   1.3 MBytes  10.0 Mbits/sec  0.325 ms    0/  892 (0%)
[  4]  7.0- 8.0 sec   1.3 MBytes  10.0 Mbits/sec  0.254 ms    0/  892 (0%)
[  4]  8.0- 9.0 sec   1.3 MBytes  10.0 Mbits/sec  0.282 ms    0/  892 (0%)
[  4]  0.0-10.0 sec  12.5 MBytes  10.0 Mbits/sec  0.243 ms    1/ 8922 (0.011%)

node1> iperf -c node2 -u -b 10m
------------------------------------------------------------
Client connecting to node2, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 60.0 KByte (default)
------------------------------------------------------------
[  3] local <IP Addr node1> port 9726 connected with <IP Addr node2> port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  12.5 MBytes  10.0 Mbits/sec
[  3] Sent 8922 datagrams

请注意,当使用较大的 32 KB 数据报时,由于数据报重组而导致的抖动较高,每个数据报拆分为 23 个 1500 字节的数据包。 此处看到的较高数据报丢失可能是由于流量的突发性,即 23 个背靠背数据包,然后是长数据包 暂停,而不是均匀分布的单个数据包。

node2> iperf -s -u -l 32k -w 128k -i 1
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 32768 byte datagrams
UDP buffer size:  128 KByte
------------------------------------------------------------
[  3] local <IP Addr node2> port 5001 connected with <IP Addr node1> port 11303
[ ID] Interval       Transfer     Bandwidth       Jitter   Lost/Total Datagrams
[  3]  0.0- 1.0 sec   1.3 MBytes  10.0 Mbits/sec  0.430 ms    0/   41 (0%)
[  3]  1.0- 2.0 sec   1.1 MBytes   8.5 Mbits/sec  5.996 ms    6/   40 (15%)
[  3]  2.0- 3.0 sec   1.2 MBytes   9.7 Mbits/sec  0.796 ms    1/   40 (2.5%)
[  3]  3.0- 4.0 sec   1.2 MBytes  10.0 Mbits/sec  0.403 ms    0/   40 (0%)
[  3]  4.0- 5.0 sec   1.2 MBytes  10.0 Mbits/sec  0.448 ms    0/   40 (0%)
[  3]  5.0- 6.0 sec   1.2 MBytes  10.0 Mbits/sec  0.464 ms    0/   40 (0%)
[  3]  6.0- 7.0 sec   1.2 MBytes  10.0 Mbits/sec  0.442 ms    0/   40 (0%)
[  3]  7.0- 8.0 sec   1.2 MBytes  10.0 Mbits/sec  0.342 ms    0/   40 (0%)
[  3]  8.0- 9.0 sec   1.2 MBytes  10.0 Mbits/sec  0.431 ms    0/   40 (0%)
[  3]  9.0-10.0 sec   1.2 MBytes  10.0 Mbits/sec  0.407 ms    0/   40 (0%)
[  3]  0.0-10.0 sec  12.3 MBytes   9.8 Mbits/sec  0.407 ms    7/  401 (1.7%)

node1> iperf -c node2 -b 10m -l 32k -w 128k
------------------------------------------------------------
Client connecting to node2, UDP port 5001
Sending 32768 byte datagrams
UDP buffer size:  128 KByte
------------------------------------------------------------
[  3] local <IP Addr node2> port 11303 connected with <IP Addr node1> port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  12.5 MBytes  10.0 Mbits/sec
[  3] Sent 401 datagrams


组 播

要测试多播,请运行多个服务器,并设置了 bind 选项 (-B, --bind) 到组播组地址。运行客户端,连接到多播 组地址并根据需要设置 TTL(-T、–ttl)。与普通的 TCP 和 UDP测试后,客户端可以启动组播服务器。在这种情况下, 在服务器启动之前发送的数据报在第一个周期中显示为丢失 报告(下面有 61 个关于 ARNO 的数据报)。

node5> iperf -c 224.0.67.67 -u --ttl 5 -t 5
------------------------------------------------------------
Client connecting to 224.0.67.67, UDP port 5001
Sending 1470 byte datagrams
Setting multicast TTL to 5
UDP buffer size: 32.0 KByte (default)
------------------------------------------------------------
[  3] local <IP Addr node5> port 1025 connected with 224.0.67.67 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 5.0 sec   642 KBytes   1.0 Mbits/sec
[  3] Sent 447 datagrams

node5> iperf -s -u -B 224.0.67.67 -i 1
------------------------------------------------------------
Server listening on UDP port 5001
Binding to local address 224.0.67.67
Joining multicast group  224.0.67.67
Receiving 1470 byte datagrams
UDP buffer size: 32.0 KByte (default)
------------------------------------------------------------
[  3] local 224.0.67.67 port 5001 connected with <IP Addr node5> port 1025
[ ID] Interval       Transfer     Bandwidth       Jitter   Lost/Total Datagrams
[  3]  0.0- 1.0 sec   131 KBytes   1.0 Mbits/sec  0.007 ms    0/   91 (0%)
[  3]  1.0- 2.0 sec   128 KBytes   1.0 Mbits/sec  0.008 ms    0/   89 (0%)
[  3]  2.0- 3.0 sec   128 KBytes   1.0 Mbits/sec  0.010 ms    0/   89 (0%)
[  3]  3.0- 4.0 sec   128 KBytes   1.0 Mbits/sec  0.013 ms    0/   89 (0%)
[  3]  4.0- 5.0 sec   128 KBytes   1.0 Mbits/sec  0.008 ms    0/   89 (0%)
[  3]  0.0- 5.0 sec   642 KBytes   1.0 Mbits/sec  0.008 ms    0/  447 (0%)

node6> iperf -s -u -B 224.0.67.67 -i 1
------------------------------------------------------------
Server listening on UDP port 5001
Binding to local address 224.0.67.67
Joining multicast group  224.0.67.67
Receiving 1470 byte datagrams
UDP buffer size: 60.0 KByte (default)
------------------------------------------------------------
[  3] local 224.0.67.67 port 5001 connected with <IP Addr node5> port 1025
[ ID] Interval       Transfer     Bandwidth       Jitter   Lost/Total Datagrams
[  3]  0.0- 1.0 sec   129 KBytes   1.0 Mbits/sec  0.778 ms   61/  151 (40%)
[  3]  1.0- 2.0 sec   128 KBytes   1.0 Mbits/sec  0.236 ms    0/   89 (0%)
[  3]  2.0- 3.0 sec   128 KBytes   1.0 Mbits/sec  0.264 ms    0/   89 (0%)
[  3]  3.0- 4.0 sec   128 KBytes   1.0 Mbits/sec  0.248 ms    0/   89 (0%)
[  3]  0.0- 4.3 sec   554 KBytes   1.0 Mbits/sec  0.298 ms   61/  447 (14%)

如上所述启动多个客户端或服务器,将数据发送到同一组播服务器。 (如果有多个服务器侦听组播地址,则每个服务器都将获取数据)

IPv6 模式

使用“ifconfig”命令获取节点的 IPv6 地址。
使用 -V 选项指示您正在使用 IPv6 地址 请注意,我们还需要显式绑定服务器地址。

服务端:
$ iperf -s -V

客户端:
$ iperf -c <服务器IPv6地址> -V>

注意:iPerf 版本 1.6.2 和 eariler 需要显式绑定 IPv6 地址 替换为 -B 选项。

使用代表性流测量带宽

使用 -F-I 选项。如果要测试网络的性能 对于压缩/未压缩的流,只需创建具有代表性的流和 使用 -F 选项对其进行测试。这通常是由于链路层造成的 压缩数据。
-F 选项用于文件输入。
-I 选项用于来自 stdin 的输入。

例如,

客户端:$ iperf -c <服务器地址> -F <文件名>

客户端:$ iperf -c <服务器地址> -I

将服务器作为守护程序运行

使用 -D 命令行选项将服务器作为守护程序运行。重定向 输出到文件。
例如 iperf -s -D > iperflog。这将使 iPerf 服务器运行 作为守护程序,服务器消息将记录在文件 iperfLog 中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/454178.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VUE实现Provide的计算属性

通过此篇可以学到&#xff1a; 如何使用Providerinject进行“跨代”传值如何实现一个计算属性的Provider如何解决告警“injection "xxxxx" not found. ” 一、描述 目前需要创建一个计算属性传入Provide&#xff0c;并且能够被其他组件Inject 二、实现 父组件 .…

每日一题——LeetCode1678.设计Goal解析器

方法一 splice 将字符串转为数组&#xff0c;对数组进行遍历&#xff0c;碰到G保持不变&#xff0c;继续循环&#xff0c;碰到 ( 看他后一位&#xff0c;是 ) 则删除两个元素&#xff0c;添加一个 o &#xff0c;不是则删除四个元素&#xff0c;添加元素 al &#xff0c;最后将…

Python—实例练习

1.编写程序x1&#xff0c;请先输入a和b两个整数&#xff0c;然后编写程序并输出 # (1)计算并显示a的绝对值&#xff1b; print("请输入a&#xff1a;") aint(input())if a>0:print(a) else:print(-a) # (2)两数中的最大值&#xff1b; a int(input()) b int(…

ProcessOn:让你的思维导图与流程图绘制更加高效

ProcessOn&#xff1a;让你的思维导图与流程图绘制更加高效 在当今这个信息爆炸的时代&#xff0c;有效地组织和呈现我们的想法变得尤为重要。无论是学生、教师、项目经理还是设计师&#xff0c;一个好的思维导图或流程图工具都能让我们的工作和学习更加高效。今天&#xff0c…

【项目笔记】java微服务:黑马头条(day02)

文章目录 app端文章查看&#xff0c;静态化freemarker,分布式文件系统minIO1)文章列表加载1.1)需求分析1.2)表结构分析1.3)导入文章数据库1.3.1)导入数据库1.3.2)导入对应的实体类 1.4)实现思路1.5)接口定义1.6)功能实现1.6.1)&#xff1a;导入heima-leadnews-article微服务&am…

管理application的secret,在哪个level呢

从安全设计来看&#xff0c;访问控制是非常重要的。除非是完全公开的网页&#xff0c;可以没有任何限制的访问 在实施访问控制的应用application中呢&#xff0c;你的秘钥管理控制在哪个level呢 level -2 没有访问控制&#xff0c;注意这是-2 负二&#xff0c;不是level 2 l…

H5炫酷DJ背景引导页源码

源码名称&#xff1a;炫酷DJ背景引导页源码 源码介绍&#xff1a;一款带有动态视频背景的引导页源码&#xff0c;带有四个按钮&#xff0c;右下角也有三个按钮。 需求环境&#xff1a;H5 下载地址&#xff1a; https://www.changyouzuhao.cn/11665.html

今天做了两个工具

URL可用性检测 2.影视 第一个工具为第二个工具服务&#xff0c;一定程度上检测了搜集到视频解析接口是否可用。

2023年终总结——跌跌撞撞不断修正

目录 一、回顾1.一月&#xff0c;鼓足信心的开始2.二月&#xff0c;焦躁不安3.三月&#xff0c;路还是要一步一步的走4.四月&#xff0c;平平淡淡的前行5.五月&#xff0c;轰轰烈烈的前行6.六月&#xff0c;看事情更底层透彻了7.七月&#xff0c;设计模式升华月8.八月&#xff…

微信小程序(五十八)分步表单多页面传值

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1.分步表单传值 2.伪数据生成 源码&#xff1a; app.json {"pages": ["pages/index/index","pages/building/building","pages/room/room","pages/logs/logs"],&qu…

初步了解变量

为什么需要变量 初识变量 变量的概念&#xff1a; 内存中的一个存储区域&#xff0c;该区域的数据可以在同一类型范围内不断变化 变量的构成包含三个要素&#xff1a;数据类型、变量名、存储的值 Java中变量声明的格式&#xff1a;数据类型 变量名 变量值 变量的作用&…

学习vue3第五节(reactive 及其相关)

1、定义 reactive() 创建一个响应式代理对象&#xff0c;不同于ref()可以创建任意类型的数据&#xff0c;而reactive()只能是对象&#xff0c;会响应式的深层次解包任何属性&#xff0c;将其标注为响应式 响应式是基于ES6的proxy实现的代理对象&#xff0c;该proxy对象与原对象…

九数分三组

枚举三位数时&#xff0c;不用写三个循环&#xff0c;写出最小和最大数循环就行。在这题里要求三个数中不能有重复的数字&#xff0c;先转换为字符串&#xff0c;再转换为字符数组进行排序&#xff0c;最后比较字符串就可以得出结果。这题把结果和原因调换了一下

Mysql/Redis缓存一致性

如何保证MySQL和Redis的缓存一致。从理论到实战。总结6种来感受一下。 理论知识 不好的方案 1.先写MySQL&#xff0c;再写Redis 图解说明: 这是一幅时序图&#xff0c;描述请求的先后调用顺序&#xff1b; 黄色的线是请求A&#xff0c;黑色的线是请求B&#xff1b; 黄色的…

[Linux][CentOs][Mysql]基于Linux-CentOs7.9系统安装并配置开机自启Mysql-8.0.28数据库

目录 一、准备工作&#xff1a;获取安装包和相应工具 &#xff08;一&#xff09;所需安装包 &#xff08;二&#xff09;安装包下载链接 &#xff08;三&#xff09;在服务器上创建文件夹并上传安装包 二、安装MySql &#xff08;一&#xff09;删除系统自带的mariadb …

到底什么是中台?

1.背景 最近老是听见或看见”中台“的字眼&#xff0c;例如数据中台、业务中台&#xff0c;根本搞不懂是什么&#xff0c;就感觉挺高大尚的。但同时&#xff0c;作为技术人&#xff0c;对于这种可能用到又一无所知的东西&#xff0c;心里是发慌的&#xff0c;因此有了这篇文章。…

unity中实现场景跳转

1&#xff0c;第一步创建2个场景&#xff08;右键资源窗口&#xff0c;名字这里我取的1111和2222&#xff09; 2.添加跳转按钮&#xff08;双击其中一个场景并添加按钮&#xff09; 3.编辑按钮的文字&#xff08;将原本的按钮打开点击里面的text&#xff0c;就可以在右边编辑文…

改进沙猫群优化的BP神经网络ISCSO-BP(时序预测)的Matlab实现

改进沙猫群优化的BP神经网络&#xff08;ISCSO-BP&#xff09;是一种结合了改进的沙猫群优化算法&#xff08;Improved Sand Cat Swarm Optimization, ISCSO&#xff09;和反向传播&#xff08;Back Propagation, BP&#xff09;神经网络的模型&#xff0c;旨在提高时序预测的准…

【大模型API调用初尝试一】智谱AI 通义千问

大模型API调用初尝试一 调用大模型API能干什么智谱AI大模型API调用的过程获取API_KEYGLM_4同步调用GLM_4异步调用文生图大模型API调用 阿里云通义千问API调用过程单轮会话多轮会话 调用大模型API能干什么 大模型的参数非常庞大&#xff0c;功能非常强大&#xff0c;但是训练成…

水肥一体机远程监控解决方案

水肥一体机远程监控解决方案 水肥一体机物联网解决方案&#xff0c;作为现代农业技术的尖端代表&#xff0c;深度融合了物联网、大数据分析以及智能控制等前沿科技手段&#xff0c;为农田灌溉与施肥管理带来了革命性的精准化与智能化升级。该方案的核心理念在于通过实时监测土…