Qual é a diferença entre Send-Q e S-BCNT no FreeBSD netstat -anx?

1

Qual é o significado exato da contagem de bytes Send Buffer nas estatísticas estendidas de netstat, e por que é sempre maior que Send-Q?

Em outras palavras, o que é contado contra o S-BCNT que não é contado contra o Send-Q?

O S-BCNT é um número melhor para calcular o custo para o sistema de uma conexão particular?

    
por cjp 11.01.2012 / 20:43

1 resposta

1

Você pode encontrar a definição junto com os comentários em sys/sys/sockbuf.h :

    u_int   sb_cc;      /* (c/d) actual chars in buffer */
    u_int   sb_mbcnt;   /* (c/d) chars of mbufs used */

Os BSDs estão usando estruturas chamadas mbuf / mbuf_cluster para dados de rede. Eles usaram em todos os lugares do código do driver para a camada de soquete. Mesmo que o pacote tenha 1 byte de carga útil, ele consumirá 256 ( mbuf ) bytes no mbuf. Se o tamanho do pacote (com todos os cabeçalhos de frame / pacote) > = 256, ele consumirá 256 ( mbuf ) + 2048 ( mbuf_cluster ) bytes. Daí a diferença entre sb_cc e sb_mbcnt .

Para responder à sua pergunta: S-BCNT é o valor mais correto a ser usado.

PS . Para obter mais informações, consulte TCP / IP Illustrated Volume 2 - W. Richard Stevens e Garry R. Wright , Capítulo 16 - E / S de soquete, Seção 16.3 - Buffers de soquete, p.476

    
por 12.01.2012 / 14:15