現在、次のリンクでD-Busサンプルコードを試しています。
https://linoxy.com/how-tos/d-bus-ipc-mechanism-linux/
効率的。
次に、上記のサンプルコードに対して消費テストを実行しました。つまり、他のDBusユーザーにDBusメッセージをすばやくブロードキャストしました。 D-Busデーモンの仮想メモリ使用量。ボリュームが増加し始めます。これは、DBusデーモンの発信キューが継続的に蓄積されるために予想される現象です。
その後、送信者プロセスを停止し、受信者がフィルタリングを使用してメッセージを伝播する間、D-Busデーモンの仮想メモリ使用量が減少し始めます。ただし、受信プロセスがすべてのデータ配布を完了した後でも、D-Busデーモンの仮想メモリ使用量は減りません。
次の3つのシナリオについて上記のテストを試しました。
送信アプリケーションは、DBusを介してすべての受信アプリケーションにメッセージをブロードキャストします。
送信アプリケーションは応答を要求せず、特定の受信アプリケーションにメソッド呼び出しメッセージを送信します。
送信側アプリケーションは、特定の受信側アプリケーションにメソッド呼び出しメッセージを送信し、受信側アプリケーションの応答を要求します。ケース 1 と 2 では、送信者アプリケーションが終了し、受信者アプリケーションが送信者からのすべてのメッセージ処理を完了した場合、dbus デーモンの仮想メモリ使用量は増加および減少しません。
ただし、シナリオ3では、DBusデーモン仮想マシンの使用量は増加しません。テスト中、仮想マシンの使用量は一定に保たれました。
それで、私の質問は、ケース1と2がケース3のように動作するようにするにはどうすればよいですか?または、DBusデーモンのメッセージキューがVMの使用量を増やしても、受信側アプリケーションがすべての着信メッセージの伝播を完了したら、VMの使用量を元の状態に戻す必要があります。
受信者アプリケーションがこれらのメッセージを処理した後にこのメモリ使用量を解放できるように、DBusデーモンにいくつかの構成設定が必要であると思います。私はDBusデーモン設定ファイル(セッションバス用)でこれらの設定を見つけるのにかなり長い時間を費やしました。リンクは次のとおりです。
https://dbus.freedesktop.org/doc/dbus-daemon.1.html
しかし、上記のページではそれらのどれも見つけることができません。その後、メッセージを処理した後にdbusデーモンがこれらのVM使用量を無効にする方法を教えてください。
PS:dbusデーモンのVM使用量を確認するために使用するLinuxコマンドは次のとおりです。
cat /proc/`pgrep dbus-daemon | awk 'NR==1{print $1}'`/status | grep Vm