From: lancer6238 on
Hi all,

I'm trying to use ethtool to check for dropped packets by my Myricom
card.

From ethtool -S, I see quite a few statistics that appear to be
related to dropped packets, i.e. dropped_link_overflow
dropped_link_error_or_filtered
dropped_pause
dropped_bad_phy
dropped_bad_crc32
dropped_unicast_filtered
dropped_multicast_filtered
dropped_runt
dropped_overrun
dropped_no_small_buffer
dropped_no_big_buffer

Is there somewhere where I can find explanations of what each of these
statistics mean?

If I do happen to find dropped packets, what are some of the things I
can do to improve the situation? I know of changing network buffer
sizes, i.e. net.core.rmem_max, net.core.wmem_max, net.ipv4.tcp_rmem,
net.ipv4.tcp_wmem and net.core.netdev_max_backlog. Are there any other
things I can try?

Thank you.

Regards,
Rayne
From: Rick Jones on
lancer6238(a)yahoo.com <lancer6238(a)yahoo.com> wrote:
> Hi all,

> I'm trying to use ethtool to check for dropped packets by my Myricom
> card.

> From ethtool -S, I see quite a few statistics that appear to be
> related to dropped packets, i.e. dropped_link_overflow
> dropped_link_error_or_filtered
> dropped_pause
> dropped_bad_phy
> dropped_bad_crc32
> dropped_unicast_filtered
> dropped_multicast_filtered
> dropped_runt
> dropped_overrun
> dropped_no_small_buffer
> dropped_no_big_buffer

> Is there somewhere where I can find explanations of what each of
> these statistics mean?

Silly question, but have you tried a web search and/or poked-around on
www.myricom.com?

> If I do happen to find dropped packets, what are some of the things
> I can do to improve the situation? I know of changing network buffer
> sizes, i.e. net.core.rmem_max, net.core.wmem_max, net.ipv4.tcp_rmem,
> net.ipv4.tcp_wmem and net.core.netdev_max_backlog. Are there any
> other things I can try?

Those are for things several layers up from the driver and will
(should) have no effect on link-level drops, with the only possible
exception being their ability to prevent the system from sending fast
enough to cause drops on outbound, or, if applied to all the systems
sending data to yours, keeping them from causing inbound drops at the
driver/NIC level by keeping the performance low.

rick jones
--
The computing industry isn't as much a game of "Follow The Leader" as
it is one of "Ring Around the Rosy" or perhaps "Duck Duck Goose."
- Rick Jones
these opinions are mine, all mine; HP might not want them anyway... :)
feel free to post, OR email to rick.jones2 in hp.com but NOT BOTH...
From: lancer6238 on
On May 20, 7:53 am, Rick Jones <rick.jon...(a)hp.com> wrote:
>
> Silly question, but have you tried a web search and/or poked-around onwww.myricom.com?
>
I did google for it, but couldn't find much. But myri.com does have a
pretty good explanation of the statistics.

I have another question regarding packet drops.

I am running a test to determine when packet drops occur. I'm using a
Spirent TestCenter through a switch (necessary to aggregate Ethernet
traffic from 5 ports to one optical link) to a server using a Myricom
card.

While running my test, if the input rate is below a certain value,
ethtool does not report any drop (except dropped_multicast_filtered
which is incrementing at a very slow rate). However, tcpdump reports X
number of packets "dropped by kernel". Then if I increase the input
rate, ethtool reports drops but "ifconfig eth2" does not. In fact,
ifconfig doesn't seem to report any packet drops at all. Do they all
measure packet drops at different "levels", i.e. ethtool at the NIC
level, tcpdump at the kernel level etc?

And am I right to say that in the journey of an incoming packet, the
NIC level is the "so-called" first level, then the kernel, then the
user application? So any packet drop is likely to happen first at the
NIC, then the kernel, then the user application? So if there is no
packet drop at the NIC, but packet drop at the kernel, then the
bottleneck is not at the NIC?

Thank you.

Regards,
Rayne
From: Rick Jones on
lancer6238(a)yahoo.com <lancer6238(a)yahoo.com> wrote:

> I did google for it, but couldn't find much. But myri.com does have a
> pretty good explanation of the statistics.

Cool - can you post the URL?-)

> I have another question regarding packet drops.

> I am running a test to determine when packet drops occur. I'm using
> a Spirent TestCenter through a switch (necessary to aggregate
> Ethernet traffic from 5 ports to one optical link) to a server using
> a Myricom card.

So you have 5 1GbE's feeding into one 10GbE right?

> While running my test, if the input rate is below a certain value,
> ethtool does not report any drop (except dropped_multicast_filtered
> which is incrementing at a very slow rate). However, tcpdump reports
> X number of packets "dropped by kernel".

That would be by the kernel promiscuous mode stuff - it is an
indication of how poorly your tcpdump session is doing keeping-up with
the packet capture. If you aren't already, I would suggest writing
the data to a binary file with the -w option to tcptump and doing the
pretty printing in post-processing.

> Then if I increase the input rate, ethtool reports drops but
> "ifconfig eth2" does not. In fact, ifconfig doesn't seem to report
> any packet drops at all. Do they all measure packet drops at
> different "levels", i.e. ethtool at the NIC level, tcpdump at the
> kernel level etc?

Certainly what you get out of tcpdump and what you get out of ethtool
are different levels/layers. Drifting, speaking of the "nine-layer model"

http://www.isc.org/store/logoware-clothing/isc-9-layer-osi-model-cotton-t-shirt

> And am I right to say that in the journey of an incoming packet, the
> NIC level is the "so-called" first level, then the kernel, then the
> user application?

Yes.

> So any packet drop is likely to happen first at the NIC, then the
> kernel, then the user application?

Not necessarily. For example, for an application using a UDP socket,
it could be that the SO_RCVBUF fills before packets start getting
dropped at the NIC - interrupts from the NIC will usually trump the
application and so get more time. I would consider a drop from a full
SO_RCVBUF as being a drop at/by the application, even though the
SO_RCVBUF is in the kernel. Others might consider that a drop in the
kernel. It would appear in netstat -s output.

> So if there is no packet drop at the NIC, but packet drop at the
> kernel, then the bottleneck is not at the NIC?

Correct.

happy benchmarking,

rick jones
--
denial, anger, bargaining, depression, acceptance, rebirth...
where do you want to be today?
these opinions are mine, all mine; HP might not want them anyway... :)
feel free to post, OR email to rick.jones2 in hp.com but NOT BOTH...
From: lancer6238 on
On May 21, 2:01 am, Rick Jones <rick.jon...(a)hp.com> wrote:
> lancer6...(a)yahoo.com <lancer6...(a)yahoo.com> wrote:
> > I did google for it, but couldn't find much. But myri.com does have a
> > pretty good explanation of the statistics.
>
> Cool - can you post the URL?-)

Sure.

http://www.myri.com/serve/cache/531.html

> > I have another question regarding packet drops.
> > I am running a test to determine when packet drops occur. I'm using
> > a Spirent TestCenter through a switch (necessary to aggregate
> > Ethernet traffic from 5 ports to one optical link) to a server using
> > a Myricom card.
>
> So you have 5 1GbE's feeding into one 10GbE right?

Yes

> > Then if I increase the input rate, ethtool reports drops but
> > "ifconfig eth2" does not. In fact, ifconfig doesn't seem to report
> > any packet drops at all. Do they all measure packet drops at
> > different "levels", i.e. ethtool at the NIC level, tcpdump at the
> > kernel level etc?
>
> Certainly what you get out of tcpdump and what you get out of ethtool
> are different levels/layers.

So ethtool measures at the NIC level, and tcpdump measures at the
kernel level? tshark should be the same as tcpdump, at the kernel
level, right?

What about ifconfig? The "dropped packets" counter never seem to be
more than 0.

Thanks for your explanations!

Regards,
Rayne