我在家里设置了一个千兆网络和一些基于 Ubuntu 的机器。出于完全的好奇,我想检查两个盒子之间的速度。我对速度或其他任何事情都没有任何问题,这真的只是我心中的怪胎好奇。另外,也许结果会让我知道是否有改进的余地,或者我的某些配置有误。
那么如何正确测试 Ubuntu 机器之间的网络速度呢?
我在家里设置了一个千兆网络和一些基于 Ubuntu 的机器。出于完全的好奇,我想检查两个盒子之间的速度。我对速度或其他任何事情都没有任何问题,这真的只是我心中的怪胎好奇。另外,也许结果会让我知道是否有改进的余地,或者我的某些配置有误。
那么如何正确测试 Ubuntu 机器之间的网络速度呢?
我用
iperf
. 这是一种客户端服务器安排,您可以在一端以服务器模式运行它,并从网络另一端的另一台计算机连接到它。一台两台机器运行:
我们将
iperf
在其中一台机器上启动服务器:然后在另一台计算机上,告诉
iperf
以客户端身份连接:在客户端计算机上,您将看到如下内容:
当然,如果您在服务器机器上运行防火墙,则需要允许端口 5001 上的连接或使用
-p
标志更改端口。nc
如果你愿意的话,你可以用普通的旧(netcat)做几乎同样的事情。在服务器机器上:dd
客户端可以通过隧道通过管道传输千兆字节的零nc
。作为解调:
那里的时间由 给出,
dd
但它应该足够准确,因为它只能以管道接受它的速度输出。如果你对此不满意,你可以在一个time
电话中结束整个事情。请记住,结果以兆字节为单位,因此将其乘以 8 以获得每秒兆位的速度。上面的演示以 944mbps 运行。
与 Oli 对 iperf 的建议相同。只想补充几点:
-t <seconds>
更改测试长度。更改同时连接的数量。例如, 将 10 个连接一起测试 30 秒,并给出汇总结果以及 10 个单独的连接速度。-P <n>
iperf -c [target IP] -P 10 -t 30
wget
,使用 使其可执行chmod
,然后您可以直接运行二进制文件。它完美地工作。我发现,使用默认设置,单次连接速度波动很大。但是,使用 3 个以上的并行连接,结果在我的千兆字节交换机上更加一致。(一致@ 910-920Mbps)
下面的命令不需要额外的包,但需要 SSH 访问:
示例输出:
该命令将一个 3GB(1000^3 字节)的全零虚拟文件打印到远程服务器上的标准输出,该文件通过 SSH 打印(传输)到本地服务器的标准输出,然后在本地通过管道传输到
/dev/null
(即忽略)。您甚至可以在执行测试时查看测试的进度。当然不如其他工具精确,但我的用例是调试备份过程,我想在不安装额外软件包的情况下测试网络速度是否是问题。
使用此脚本,您可以轻松地测试您的机器和某个远程主机之间的连接速度。使用示例:
user@remote_host
是您的目标主机(您必须对此主机具有 ssh 访问权限)80000
是测试文件的近似大小(以 kbs 为单位),它将被接收到远程主机。这不是强制性的论点。如果您想在较低级别测试您的以太网 LAN,您可以使用 Etherate,它是一个免费的 Linux CLI 以太网测试工具:
https://github.com/jwbensley/Etherate
将其作为 iPerf(非常好!)等工具通过 IP 和 TCP 或 UDP 运行。直接通过以太网/OSI 第 2 层进行 Etherate 测试。
还有一些其他不错的命令行工具可用于两台主机之间的带宽基准测试:
nuttcp
尼平
戈本
正如我在最佳答案的评论中指出的那样,该解决方案还不够好,因为客户端/服务器没有优化到......挤压每一点速度
我的解决方案:
在两侧制作一个 ramdisk(因此,您不受存储速度的限制,我建议您使用 ramfs 而不是 tmpfs 制作它们,因此它们不会进入交换状态......请注意不要留下至少 512M 的可用内存对于系统,如果你有千兆以太网,这是必需的,在那个速度下,即使 SSD 可能会减慢速度)在服务器上安装 apache,然后创建一个到 ramdisk 的链接,在 ramdisk 上创建几个大文件(100M-1G,你可以用dd from /dev/random 或者复制,如果你手头有一些)然后去客户端并使用高级下载程序下载它们(也在该端的 ramdisk 上),我使用
lftp
哦,好吧,差异很大,从 iperf 报告的 75mbps 和 9.5M/s netcat
使用我的解决方案达到11.18M/s :
很容易将您的计算机插入第一个盒子,将另一个盒子插入第一个盒子。然后从您的计算机 ping 第一个框保存结果,ping 另一个框并进行减法。