特定の時点でメッセージキューに受信されたメッセージ数を知る方法

特定の時点でメッセージキューに受信されたメッセージ数を知る方法

ハードウェアが DMA 転送を通じて 1 秒あたり 300 個のパケットをホスト アプリケーションに送信し、ホスト アプリケーションのメッセージ キューに転送する実装があります。

パケットが高速でアプリケーションに送信されると、アプリケーションがそのようなパケットを1〜2個受信できないことがわかりました。を使用すると、tcpdumpすべてのパケットがホストに送信されることを確認できます。しかし、パケットがドロップされたかどうかはどうすればわかりますか?デバッグ印刷を使用すると、CPU使用率が消費されるため、簡単ではありません。

このメッセージキューで受信されたメッセージの数がわかりますか?リストされた項目を使用ipcs -q commmandしないでください。

ベストアンサー1

私のシステムに示されているように、SysVメッセージキューはデフォルトで小さいですipcs -l

$ ipcs -l
[...]
------ Messages: Limits --------
max queues system wide = 7890
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384

対応するsysctlエントリは次のとおりです。

kernel.msgmni = 7890
kernel.msgmax = 8192
kernel.msgmnb = 16384

メッセージのサイズによっては、これらの制限が発生する可能性があります。

おすすめ記事