背景
我想创建一个测试应用程序来测试不同系统的网络性能。为此,我计划让这台机器通过私有(否则不是繁忙的)网络发送以太网帧到另一台机器(或设备),后者只接收消息并将其发回。发送应用程序将记录往返时间(除其他外)。
测试的目的是查看一个特定的系统(OS +组件等)。当涉及到网络流量时执行。在下面的图片中,这是作为机器A的说明。请注意,我对对不感兴趣--网络基础设施的性能--(交换机、电缆等)--我试图测试机器A内部的网络流量性能(即当它碰到网卡直到到达用户空间时)。
我们将(试着)测量各种事情,一件事是消息的总往返,也包括机器A的中断延迟,一般的驱动程序开销等。机器A将是一个实时系统。但是为了支持这些测试,我需要一台单独的机器,它可以弹出消息,并以其他方式向被测试的系统添加网络刺激。这台独立的机器是下图中的机器B,也是这个问题的主题。

我的问题
我想开发一个应用程序,它可以以尽可能一致的(最好是较低的)延迟来接收和返回这些消息。我希望至少在几微秒内得到一致的延迟。为了简单起见,我想在像Windows或Linux这样的通用操作系统上这样做,但我愿意接受其他建议。除了操作系统和我的测试应用程序之外,机器上不会有其他负载(CPU或其他负载)。
我想到了以下几种方法:
问题
是否有任何其他方法或框架已经这样做了?为了获得一致和低延迟,我还需要想些什么呢?建议采取什么办法?
发布于 2012-01-04 12:41:10
您提到要测试Machine的内部性能,但是“需要一个单独的机器”;但是,您不想测试网络基础结构的性能。
您比我更了解您的需求;但是,如果我在机器A中测试网络基础设施,我会这样设置我的测试:

造成这种情况的原因有两个:
如果使用此测试方法,请务必注意以下几点:
即使您需要从Machine接收修改过的"pong“帧,您仍然可以使用此拓扑结构,只需在机器A中的代码接收端重写数据包字段。在机器A的”模块“中放置尽可能多(或很少)的插装点来比较帧时间戳。
FYI:
我在对您的问题的评论中提到的嵌入式系统是用于测量网络基础设施的延迟,而不是终端主机。这是我能想到的检测主机延迟的最好方法。
发布于 2012-01-04 11:21:45
作为一个现成的解决方案,我建议看看Solace,Tibco和AMQP。这些都是在交易应用程序中广泛使用的企业消息传递框架。AMQP是开放源码的,能够处理每秒最多10万条消息的吞吐量。我不确定其他框架的延迟性。AMQP消息路由器有一个Java或C++实现。当然,C++ one会返回更高的性能。
编辑我刚刚听说了一个名为UltraMessaging的新产品,它可以以每秒7,000,000条消息的速度向Java、C++或C#客户端提供吞吐量。克里奇。
诚挚的问候,
https://stackoverflow.com/questions/8723937
复制相似问题