我的目标是测量 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)。我应该改变它吗?
发布者需要有限的时间来连接(和断开连接)。应该添加这些吗?