Re: QUESTION: can netdev_alloc_skb() errors be reduced by tuning?

From: starlight
Date: Tue Jun 16 2009 - 00:24:33 EST


Eric,

Great thought--thank you. Running a similar server with
82571/e1000e and it does not exhibit the problem. 'e1000e' has
default copybreak=256 while 'ixgbe' has no copybreak. Rational
given is

http://osdir.com/ml/linux.drivers.e1000.devel/2008-01/msg00103.html

But the comparion is a bit apples-and-oranges since the 'e1000e'
system is dual Opteron 2354 while the 'ixgbe' system is Xeon
E5430 (a painful choice thus far). Also 'e1000e' system passes
data via a PACKET socket while the 'ixgbe' system passes data
via UDP (a configurable option).

I'm not fully up on how this all works: am I to understand that
the error could result from RX ring-queue buffers not freeing
quickly enough because they have a use-count held non-zero as
the packet travels the stack?

I've just doubled some SLAB tuneables that seem relevant, but
if the cause is the aforementioned, this won't help. Will
have the answer on the tweaks by the end of Tuesday.

David



At 04:26 AM 6/16/2009 +0200, Eric Dumazet wrote:
>
>152691992335/724246449 = 210 bytes per rx packet in average
>
>It could make sense to add copybreak feature in this driver to
>reduce memory needs, but that also would consume more cpu
>cycles, and slow down forwarding setups.
>
>Maybe this packet trimming could be done generically in UDP
>stack input path, before queueing packet into a receive queue,
>if amount of available memory is under a given threshold.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/