특정 시점에 메시지 큐에 수신된 메시지 수를 아는 방법

특정 시점에 메시지 큐에 수신된 메시지 수를 아는 방법

하드웨어가 DMA 전송을 통해 초당 300개의 패킷을 호스트 응용 프로그램으로 보낸 다음 호스트 응용 프로그램의 메시지 대기열로 전달하는 구현이 있습니다.

패킷이 높은 속도로 응용 프로그램에 전송될 때 응용 프로그램이 그러한 패킷을 한두 개 받지 못하는 것을 발견했습니다. 을 사용하면 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

메시지 크기에 따라 이러한 제한 사항이 발생할 수 있습니다.

관련 정보