msgsndで許可されるメッセージの数を変更するには?

msgsndで許可されるメッセージの数を変更するには?

Linuxでは、msgsndはユーザー空間からメッセージを送信できます。ただし、送信されたメッセージ数が最大メッセージ数に達すると、msgsndはブロックされます。最大値を変更する方法はありますか?ありがとう

答え1

Linuxでは、IPCキュー容量はキューサイズ(バイト単位)によってのみ決定されます。メッセージ数に応じた容量はありません。使用されるキュー容量2つの方法があります:

次のいずれかの条件が該当する場合は、メッセージキューがいっぱいであると見なされます。

  • キューに新しいメッセージを追加すると、キューの合計バイト数がキューの最大サイズ(フィールド msg_qbytes)を超えます。

  • キューに別のメッセージを追加すると、キュー内のメッセージの総数がキューの最大サイズ(フィールド msg_qbytes)を超えます。この確認は、長さゼロのメッセージが無制限にキューに入るのを防ぐために必要です。これらのメッセージにはデータは含まれていませんが、まだカーネルメモリを消費(ロック)します。

増やすには、msg_qbytes次のものを使用できます。msgctl、特権プロセス( CAP_SYS_RESOURCE)から。次のコマンドを使用して、初期IPC名前空間の最大値を表示および設定できます。/proc/sys/kernel/msgmnb

関連情報