使用Paho示例pub / sub应用程序测量端到端延迟

时间:2014-08-05 15:19:21

标签: mqtt mosquitto paho

我的目标是测量MQTT设备到设备的消息延迟(而非吞吐量),并且我正在寻找对我的代码黑客的反馈。 设置很简单;只有一个设备作为两个端点(具有两个终端会话的旧Linux PC;一个运行订阅者,另一个运行发布者示例应用程序)和tcp://m2m.eclipse.org:1883处的默认代理)。我将时间捕获代码片段插入到src/samples文件夹中的C语言发布/订阅示例应用程序中。

以下是更改。请提供反馈。

更改到订阅示例应用(MQTTAsync_subscribe.c

msgarrvd(已到达消息)功能

的顶部插入以下行
//print arrival time
struct timeval tv;
gettimeofday (&tv, NULL);
printf("Message arrived: %ld.%06ld\n", tv.tv_sec, tv.tv_usec);

更改到发布示例应用(MQTTAsync_publish.c

onSend(回调)功能

的顶部插入以下行
struct timeval tv;
gettimeofday (&tv, NULL);
printf("Message with token value %d delivery confirmed at %ld.%06ld\n",
               response->token, tv.tv_sec, tv.tv_usec);

通过这些更改(在从发布者确认交付时减去到达订阅者的时间消息之后),我得到的时间在1毫秒到0.5毫秒之间。

问题

这是否有助于作为延迟的粗略基准?

这是往返时间吗?

往返时间在正确的球场吗?应该少?更?

是单向时间吗?

我应该以不同的方式设计延迟基准吗?我需要粗略的测量(我与XMPP比较)。

我使用默认的QoS值(1)。我应该改变吗?

发布者花费有限的时间来连接(和断开连接)。应该添加吗?

1 个答案:

答案 0 :(得分:0)

200ms的延迟很高!你能在这里上传你的代码吗?

这是否有助于作为延迟的粗略基准?

- 是的,这是有道理的。但更好的方法是使用订阅的消息进行自动时间减去,并且同步到NTP。

这是往返时间吗?这是单向时间吗?

- 消息已发布 - 您收到发布者的ACK并且相同的消息已转移到订阅的客户端。

往返时间在正确的球场吗?应该少?更?

- 它应该更少。

我应该以不同的方式设计延迟基准吗?我需要粗略的测量(我与XMPP比较)。

我使用默认的QoS值(1)。我应该改变吗?

- 尝试使用QoS 0(点火并忘记)

发布者花费有限的时间来连接(和断开连接)。应该添加吗?

- 是的。它需要添加,但这个时间应该非常小。