私の目的は、MQTT デバイス間のメッセージ レイテンシ (スループットではない) を測定することであり、コード ハックに関するフィードバックを探しています。セットアップは簡単です。2 つのエンドポイントとして機能する 1 つのデバイス (2 つのターミナル セッションを備えた古い Linux PC。1 つはサブスクライバーを実行し、もう 1 つはパブリッシャー サンプル アプリを実行) と のデフォルト ブローカー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
(callback) 関数の先頭に以下の行を挿入しました
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) を使用しています。変更する必要がありますか?
パブリッシャーが接続 (および切断) するのに一定の時間がかかります。これらを追加する必要がありますか?