Answers:
我用iperf
。这是一种客户端服务器布置,您可以在一端以服务器模式运行它,然后从网络另一端的另一台计算机连接到它。
两台机器都运行:
sudo apt-get install iperf
我们将iperf
在一台机器上启动服务器:
iperf -s
然后在另一台计算机上,告诉iperf
以客户端身份连接:
iperf -c <address of other computer>
在客户端计算机上,您将看到以下内容:
oli@bert:~$ iperf -c tim
------------------------------------------------------------
Client connecting to tim, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.4 port 37248 connected with 192.168.0.5 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.04 GBytes 893 Mbits/sec
当然,如果您在服务器计算机上运行防火墙,则需要允许端口5001上的连接或使用-p
标志更改端口。
nc
如果您愿意,可以使用普通的旧版本(netcat)进行几乎相同的操作。在服务器计算机上:
nc -vvlnp 12345 >/dev/null
客户端可以通过管道零的技嘉dd
过nc
隧道。
dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345
作为演示:
$ dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345
Connection to 10.10.0.2 12345 port [tcp/*] succeeded!
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 9.11995 s, 118 MB/s
时机由给出,dd
但它应该足够准确,因为它只能以管道将其输出的速度输出。如果您对此不满意,可以将整个过程打包成一个time
电话。
请记住,结果是兆字节所以乘以8就得到一个巨型位 -per秒的速度。上面的演示以944mbps的速度运行。
与Oli对iperf的建议相同。只想添加几点:
-t <seconds>
更改测试长度。更改同时连接的数量。例如,将 10个连接一起测试30秒,并给出合计的结果以及10种独立的连接速度。-P <n>
iperf -c [target IP] -P 10 -t 30
wget
使其可执行chmod
,则可以直接运行二进制文件。它运作完美。我发现,使用默认设置,单个连接速度会波动很多。但是,通过3个以上的并行连接,结果在我的千兆交换机上更加一致。(始终@ 910-920Mbps)
使用此脚本,您可以轻松测试计算机与某个远程主机之间的连接速度。使用示例:
$ scp-speed-test.sh user@remote_host 80000
user@remote_host
是您的目标主机(您必须具有对此主机的ssh访问权限)80000
是测试文件的近似大小(以kbs为单位),它将被接收到远程主机。它不是强制性的参数。/dev/random
(它可能会阻止)或urandom
(建议使用链接注释)它们也可能非常慢,而应使用dm-crypt(请参阅cryptsetup的常见问题解答2.19如何使用crypto-年级随机性?)也许在ram中有文件。
如果要在较低级别测试以太网LAN,可以使用Etherate,它是免费的Linux CLI以太网测试工具:
https://github.com/jwbensley/Etherate
像iPerf之类的工具(非常好!)通过IP和TCP或UDP运行时,将其混合使用。直接在以太网/ OSI层2上进行测试。
以下命令不需要其他软件包,但需要SSH访问权限:
ssh username@myserver.example.com 'dd if=/dev/zero bs=1GB count=3 2>/dev/null' | dd of=/dev/null status=progress
输出示例:
2992238080 bytes (3.0 GB) copied, 27.010250 s, 111 MB/s
5859375+0 records in
5859375+0 records out
3000000000 bytes (3.0 GB) copied, 27.1943 s, 110 MB/s
该命令将一个完整的零的3GB(1000 ^ 3字节)虚拟文件打印到远程服务器上的stdout,该文件通过SSH打印(传输)到本地服务器的stdout,然后在本地通过管道传输到/dev/null
(即忽略)。您甚至可以在执行测试时查看测试进度。
当然不如其他工具那么精确,但我的用例是调试一个备份过程,该过程中我想测试网络速度是否是问题所在,而无需安装其他软件包。
还有一些其他不错的命令行工具可用于两个主机之间的带宽基准测试:
server$ nuttcp -S
client$ nuttcp -v -v -i1 1.1.1.1 ;# 1.1.1.1 is server's address
server$ nepim
client$ nepim -d -c 1.1.1.1 ;# 1.1.1.1 is server's address
server$ goben
client$ goben -hosts 1.1.1.1 ;# 1.1.1.1 is server's address
正如我在最佳答案中的评论中所指出的那样,该解决方案不够好,因为客户端/服务器未经过优化以... 压缩每一个速度
我的解决方案:
在两面都制作一个ramdisk(因此,您不受存储速度的限制,我建议您使用ramfs而不是tmpfs来制作它们,因此它们不会互换...请注意不要留下至少512M的可用内存对于系统,这是必需的,如果您具有千兆以太网,以这种速度,甚至SSD都可能会降低速度)在服务器上安装apache,然后创建到ramdisk的链接,在ramdisk上创建一些大文件(100M-1G,您可以使用从/ dev / random dd或复制(如果您有手头的话),然后转到客户端并使用高级下载程序将它们下载(也在该端的ramdisk上), lftp
哦,好极了,与iperf报告的75mbps和9.5M / s netcat的报告一样
我的解决方案达到11.18M / s:
1591129421 bytes transferred in 136 seconds (11.18M/s)
轻松将计算机插入第一个盒子,将另一个盒子插入第一个盒子。然后在计算机上ping第一个框,保存结果,对另一个框ping并进行减法。