D-Bus 데몬 가상 메모리 사용량을 제어하는 ​​방법은 무엇입니까?

D-Bus 데몬 가상 메모리 사용량을 제어하는 ​​방법은 무엇입니까?

현재 다음 링크에서 D-Bus 샘플 코드를 시험해 보고 있습니다.

https://linoxy.com/how-tos/d-bus-ipc-mechanism-linux/

효율적인.

그런 다음 위의 샘플 코드에 대해 소모 테스트를 실행했습니다. 즉, 다른 DBus 사용자에게 DBus 메시지를 빠르게 브로드캐스팅했는데, 이는 보낸 사람이 보낸 메시지만큼 수신된 메시지를 처리하지 못했습니다. D-Bus 데몬의 가상 메모리 사용량. 볼륨이 증가하기 시작합니다. 이는 DBus 데몬의 나가는 대기열이 계속해서 누적되기 때문에 예상되는 현상입니다.

그런 다음 발신자 프로세스를 중지하고 수신자가 필터링을 사용하여 메시지를 전파하는 동안 D-Bus 데몬의 가상 메모리 사용량이 감소하기 시작합니다. 그러나 수신 프로세스가 모든 데이터 배포를 완료한 후에도 D-Bus 데몬의 가상 메모리 사용량은 줄어들지 않습니다.

다음 세 가지 시나리오에 대해 위의 테스트를 시도했습니다.

  1. 송신 애플리케이션은 DBus를 통해 모든 수신 애플리케이션에 메시지를 브로드캐스트합니다.

  2. 송신 애플리케이션은 응답을 요청하지 않고 특정 수신 애플리케이션에 메소드 호출 메시지를 보냅니다.

  3. 송신자 애플리케이션은 특정 수신자 애플리케이션에 메소드 호출 메시지를 보내 수신자 애플리케이션의 응답을 요청합니다. 사례 1과 2에서는 보낸 사람 애플리케이션이 종료되고 받는 사람 애플리케이션이 보낸 사람의 모든 메시지 처리를 완료하는 경우 dbus 데몬 가상 메모리 사용량이 증가하고 줄어들지 않습니다.

그러나 시나리오 3에서는 DBus 데몬 가상 머신의 사용량이 증가하지 않습니다. 테스트 중에 가상 머신 사용량은 일정하게 유지되었습니다.

그래서 제 질문은, 사례 1과 2가 사례 3처럼 동작하도록 하려면 어떻게 해야 합니까? 또는 DBus 데몬의 메시지 대기열로 인해 VM 사용량이 증가하더라도 수신자 애플리케이션이 들어오는 모든 메시지 전파를 완료한 후에는 VM 사용량이 원래 상태로 다시 축소되어야 합니다.

수신자 애플리케이션이 이러한 메시지 처리를 마친 후 이 메모리 사용량을 해제할 수 있도록 DBus 데몬에 일부 구성 설정이 있어야 한다고 생각합니다. 저는 DBus 데몬 구성 파일(세션 버스용)에서 이러한 구성을 찾는 데 꽤 오랜 시간을 보냈습니다. 링크는 다음과 같습니다.

https://dbus.freedesktop.org/doc/dbus-daemon.1.html

하지만 위 페이지에서는 그 중 어떤 것도 찾을 수 없습니다. 그러면 메시지를 처리한 후 dbus 데몬이 이러한 VM 사용량을 해제하도록 만드는 방법을 알려주십시오.

추신: dbus 데몬의 VM 사용량을 확인하는 데 사용하는 Linux 명령은 다음과 같습니다.

cat /proc/`pgrep dbus-daemon | awk 'NR==1{print $1}'`/status | grep Vm

관련 정보