如何测试Socket的速度?

时间:2010-12-23 03:11:16

标签: c linux performance sockets networking

我编写了一个可以在两台服务器之间转发ip数据包的程序,那么如何测试程序的速度呢?谢谢!

2 个答案:

答案 0 :(得分:7)

您的潜在用户可能会对许多通信指标感兴趣。

延迟是发送消息的时间量,对于共置设备通常以微秒为单位,对于所有其他方案通常以毫秒为单位。它通常被称为“零字节延迟”,意味着传输消息的元数据所需的时间。越低越好。

带宽以每秒位数衡量。它通常被称为“峰值带宽”,可以通过在线路上发送大量数据来获得。越高越好。

CPU利用率是传输邮件所需的CPU时间百分比。可以卸载消息传输的网络协议具有低利用率,这意味着通信可以“重叠”用户应用程序中的一些其他计算,这具有隐藏延迟的效果。越低越好。

所有这些都只是通过 ping 测试的变体测量,通常称为“乒乓”:

Node 1:
    for n = 1 to MAXSIZE, step via n*=2
    send message of size n bytes
    receive a response of size n bytes

Node 2:
    for n = 1 to MAXSIZE, step via n*=2
    receive a message of size n bytes
    send response of size n bytes

还有一个“ping-ping”测试,其中两个节点同时相互写入。这需要非阻塞通信来进行设置。

输出n和每次迭代所需的时间。第一次是零字节延迟。最大的可持续 n/time是带宽(转换为每秒位数为行业标准)。您还可以测量运行较大迭代所需的CPU利用率,但对于完全不同的问题,这是一个棘手的主题。

答案 1 :(得分:4)

看看iperf。你可以在http://sourceforge.net/projects/iperf/找到它。如果你在谷歌周围,你会找到它的教程。您可以查看源代码,并可能会了解他是如何做到这一点的。我用它进行常规测试,非常强大