O uso de largura de banda reportada difere entre iproute2 e ifconfig

1

Meu grupo tem um servidor configurado para exibir imagens de nossas estações de trabalho usando FOG . Eu estava um pouco curioso para ver quanta largura de banda estávamos usando. Quando eu corro ifconfig eth0 , as linhas TX / RX lêem

RX packets:166949376 errors:0 dropped:0 overruns:0 frame:0
TX packets:350126730 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000 
RX bytes:31757576798 (29.5 GiB)  TX bytes:458006556301 (426.5 GiB)

Mas quando executo ip -s link show eth0 , a saída equivalente é

RX: bytes  packets  errors  dropped overrun mcast   
1693647583 166958818 0       0       0       18979  
TX: bytes  packets  errors  dropped carrier collsns 
2741139294 350136238 0       0       0       0      

Que corresponde a um TX / RX de cerca de 1,8 / 2,6 GiB. O que está causando a discrepância entre os valores relatados por iproute2 e ifconfig ? Existe algum tipo de estouro de inteiro para iproute2 ?

Obrigado!

    
por Ben Webber 10.04.2011 / 11:19

2 respostas

2

Consegui encontrar alguns iproute2 de documentação que esclareceram a questão.

Graças a resposta de Jonathan Ross , Aprendi que ifconfig extrai seus dados de /proc/net/dev . Nos iproute2 docs, Parece que o contador de largura de banda em iproute2 "quebra quando o tamanho máximo do tipo de dados natural na arquitetura é excedido".

É evidente que iproute2 usa um inteiro de 32 bits para armazenar essas informações, pois esse é um sistema de 64 bits. O contador de largura de banda, em seguida, envolverá a 4 GiB.

    
por 18.04.2011 / 04:38
1

Existem diferentes maneiras de extrair estatísticas de tráfego do sistema com bibliotecas ou do kernel, sendo uma delas cat /proc/net/dev . Eu verificaria esse arquivo para comparação.

Ligeiramente OT: aparentemente você pode redefinir ifconfig contadores com drivers de kernel NIC carregáveis, mas não com drivers internos.

    
por 10.04.2011 / 11:30