Jesse Brandeburg wrote:
dropped: rnbc does not mean dropped, see above. mpc means dropped.fifo: mpc means the fifo overflowed, and the packet was dropped (the only time we drop).missed: this should also be mpc because it shows we missed the packet.
Wow, thanks! So there we were reporting drops prior to 2.6.12 when there possibly were none! I've confirmed with a traffic generator here that rnbc does not include packets actually dropped. It's interesting that at about 1Mpps sustained for 10s, mpc was 548,888, while rnbc was 4,331,730 suggesting that the nic was trying to DMA to the buffer at a higher rate than the packet receive rate. Anway recapping... 2.6.11 stats were mapped like: packets = gprc dropped = rnbc fifo = mpc missed = mpc In 2.6.12 this changed to: packets = gprc dropped = mpc fifo = mpc missed = mpc
now, its debatable if we should be reporting the same stat 3 times, but i still think it is correct, and its how our hardware maps stats and the best we can overlay onto linux's definitions as we interpret them.
I think there still is a problem. Notice that /proc/net/dev reports rx_dropped + rx_missed_errors for the drop column, and so will be double counting drops currently. Therefore I think we should be doing: packets = gprc dropped = 0 fifo = rnbc missed = mpc I'm putting rnbc in fifo as it's not accumulated into anything else in the kernel. Also it's good to have it reported as one can see when there is pressure on the e1000 driver buffer. This is useful for tuning its size to protect against drops and latency. thanks, Pádraig.
e1000-drops.diff
Description: TeXInfo document