問題の概要: AF_UNIX 安定した送信、バースト受信。
UNIX ドメイン データグラム ソケット経由でデータを受信するアプリケーション B があります。それにデータを送信するピア アプリケーション A があります。A と B の両方が継続的に実行されています (SCHED_FIFO です)。私のアプリケーションAも受信時刻を出力します。
ピア アプリケーション B は、さまざまなタイミングでデータを送信できます (ミリ秒単位でのみ変化します)。理想的には (私が期待すること)、パケットの送信遅延は受信遅延と正確に一致する必要があります。例えば:
A sends in time : 5ms 10ms 15ms 21ms 30ms 36ms
B should receive in time : 5+x ms 10+x ms 15+x ms 21+x ms ...
ここで、x は一定の遅延です。
しかし、私がBで観察したことを実験したとき:
A sends in time : 5ms 10ms 15ms 21ms 30ms 36ms
B received in time : 5+w ms 10+x ms 15+y ms 21+z ms ...
(w、x、y、z は異なる一定の遅延です)。そのため、送信時刻が指定されている場合、受信時刻を予測することはできません)。
UNIXドメインソケットにバッファリングが関係しているためですか?受信時間が送信時間から予測できるように、問題の回避策を提案してください。1ミリ秒の精度が必要です。
(バニラ Linux 3.0 カーネルを使用しています)