Como saber o número de mensagens recebidas em uma fila de mensagens em um ponto no tempo

3

Eu tenho uma implementação em que o hardware envia 300 pacotes por segundo para um aplicativo host por meio da transferência de DMA e, em seguida, para a fila de mensagens do aplicativo host.

Quando os pacotes são enviados em alta taxa para o aplicativo, vejo que o aplicativo não está recebendo um ou dois pacotes como este. Quando eu uso tcpdump , vejo que todos os pacotes são postados no host. Mas como eu sei se o pacote foi descartado? O uso de impressões de depuração consumirá o uso da CPU e também não será fácil.

Posso descobrir quantas mensagens recebi nessa fila de mensagens? Usando ipcs -q commmand não lista nada.

    
por binny 11.08.2011 / 10:28

1 resposta

1

Filas de mensagens SysV são pequenas por padrão, no meu sistema ipcs -l exibe:

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

As entradas sysctl correspondentes são:

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

Dependendo do tamanho das mensagens, você pode atingir alguns desses limites.

    
por 12.08.2011 / 07:20

Tags