如何衡量网络性能(如何对网络协议进行基准测试)

时间:2009-05-20 17:32:32

标签: networking network-programming benchmarking network-protocols profiling

首先,有点背景知识。分布式版本控制系统(DVCS)有许多不同的比较,它们比较存储库的大小或基准操作速度。我没有找到任何可以对各种DVCS的网络性能进行基准测试,以及所使用的各种协议......除了测量涉及网络的操作(命令)的速度,如'clone','pull'/'fetch'或'push'。 / p>

我想知道你将如何进行这样的比较;如何衡量应用程序的网络性能,或如何测试网络协议。我在这里设想还测量性能对网络带宽和网络延迟(ping时间)的依赖性;一些协议以更多往返交换(协商)的形式牺牲延迟,以发送最小的所需最终“包”。

如果可能的话,我更喜欢仅涉及一台计算机的解决方案。我想看看开源解决方案,在Linux上工作。但我也欢迎更多的通用答案。

首选操作系统:Linux
首选语言: C,Perl,shell脚本


可能的衡量标准:

  • 在一个会话中从服务器传输到客户端以及从客户端传输到服务器的总字节数;这也可用于测量协议(带宽)
  • 的开销
  • 一次交易中的往返次数(连接)(延迟)
  • 从网络带宽和网络延迟(ping时间)依赖网络操作速度(克隆/拉/推所花费的时间)

如何进行此类测量(此类基准测试)?


已添加02-06-2009:
最简单的基准测试(测量)将是time命令的网络版本,即运行的命令将给出我传输的字节数,以及执行给定命令期间的往返/网络连接数。


已于09-06-2009添加:
上面提到的time命令的网络版解决方案的示例虚构输出可能如下所示:

$ ntime git clone -q git://git.example.com/repo.git
...
bytes sent: nnn (nn kiB), bytes received: nnn (nn kiB), avg: nn.nn KB/s
nn reads, nn writes

请注意,它只是一个示例输出,详细说明了可能想要获得的信息类型。


已于09-06-2009添加:
看起来我想要的一些东西可以使用 dummynet ,工具(最初)来测试网络协议......

2 个答案:

答案 0 :(得分:15)

答案 1 :(得分:5)

可能的答案是使用 SystemTap 。在示例脚本中,nettop以“顶部”方式显示(某些)所需的网络信息,并且有iotime脚本以所需形式显示I / O信息。