This whole issue only came up on a system with 10G devices, and only igb
does anything like you're talking about, not a device/driver on most low end
systems. So, we are trading red herrings it would seem.

I'm not opposed to economizing things in a sensible way, it was I that
brought
the issue up after all :)

Jack


On Sat, Mar 24, 2012 at 2:02 PM, Juli Mallett <jmall...@freebsd.org> wrote:

> On Sat, Mar 24, 2012 at 13:33, Jack Vogel <jfvo...@gmail.com> wrote:
> > On Sat, Mar 24, 2012 at 1:08 PM, John-Mark Gurney <j...@funkthat.com>
> wrote:
> >> If we had some sort of tuning algorithm that would keep track of the
> >> current receive queue usage depth, and always keep enough mbufs on the
> >> queue to handle the largest expected burst of packets (either
> historical,
> >> or by looking at largest tcp window size, etc), this would both improve
> >> memory usage, and in general reduce the number of require mbufs on the
> >> system...  If you have fast processors, you might be able to get away
> with
> >> less mbufs since you can drain the receive queue faster, but on slower
> >> systems, you would use more mbufs.
> >
> > These are the days when machines might have 64 GIGABYTES of main storage,
> > so having sufficient memory to run high performance networking seems
> little
> > to
> > ask.
>
> I think the suggestion is that this should be configurable.  FreeBSD
> is also being used on systems, in production, doing networking-related
> tasks, with <128MB of RAM.  And it works fine, more or less.
>
> >> This tuning would also fix the problem of interfaces not coming up since
> >> at boot, each interface might only allocate 128 or so mbufs, and then
> >> dynamicly grow as necessary...
> >
> > You want modern fast networked servers but only giving them 128 mbufs,
> > ya right , allocating memory takes time, so when you do this people will
> > whine about latency :)
>
> Allocating memory doesn't have to take much time.  A multi-queue
> driver could steal mbufs from an underutilized queue.  It could grow
> the number of descriptors based on load.  Some of those things are
> hard to implement in the first place and harder to cover the corner
> cases of, but not all.
>
> > When you start pumping 10G...40G...100G ...the scale of the system
> > is different, thinking in terms of the old 10Mb or 100Mb days just
> doesn't
> > work.
>
> This is a red herring.  Yes, some systems need to do 40/100G.  They
> require special tuning.  The default shouldn't assume that everyone's
> getting maximum pps.  This seems an especially-silly argument when
> much of the silicon available can't even keep up with maximum packet
> rates with minimally-sized frames, at 10G or even at 1G.
>
> But again, 1G NICs are the default now.  Does every FreeBSD system
> with a 1G NIC have loads of memory?  No.  I have an Atheros system
> with 2 1G NICs and 256MB of RAM.  It can't do anything at 1gbps.  Not
> even drop packets.  Why should its memory usage model be tuned for
> something it can't do?
>
> I'm not saying it should be impossible to allocate a bajillion
> gigaquads of memory to receive rings, I certainly do it myself all the
> time.  But choosing defaults is a tricky thing, and systems that are
> "pumping 10G" need other tweaks anyway, whether that's enabling
> forwarding or something else.  Because they have to be configured for
> the task that they are to do.  If part of that is increasing the
> number of receive descriptors (as the Intel drivers already allow us
> to do — thanks, Jack) and the number of queues, is that such a bad
> thing?  I really don't think it makes sense for my 8-core system or my
> 16-core system to come up with 8- or 16-queues *per interface*.  That
> just doesn't make sense.  8/N or 16/N queues where N is the number of
> interfaces makes more sense under heavy load.  1 queue per port is
> *ideal* if a single core can handle the load of that interface.
>
> > Sorry but the direction is to scale everything, not pare back on the
> network
> > IMHO.
>
> There is not just one direction.  There is not just one point of
> scaling.  Relatively-new defaults do not necessarily have to be
> increased in the future.  I mean, should a 1G NIC use 64 queues on a
> 64-core system that can do 100gbps @ 64 bytes on one core?  It's
> actively-harmful to performance.  The answer to "what's the most
> sensible default?" is not "what does a system that just forwards
> packets need?"  A system that just forwards packets already needs IPs
> configured and a sysctl set.  If we make it easier to change the
> tuning of the system for that scenario, then nobody's going to care
> what our defaults are, or think us "slow" for them.
>
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to