danial_thom at yahoo.com
Thu Dec 1 13:19:51 PST 2005
--- Matthew Dillon <dillon at xxxxxxxxxxxxxxxxxxxx>
> :The issue is that RX is absolute, as you
> :"decide" to delay or selectively drop since
> :don't know whats coming. Better to have some
> :latency than dropped packets. But if you don't
> :dedicate to RX, then you have an unknown
> :of cpu resources doing "other stuff". The
> :capacity issues always first manifest
> :as rx overruns, and they always happen a lot
> :sooner on MP machines than UP machines. The
> :camp made the mistake of not making RX
> :enough, and now their 2.6 kernels drop packets
> :all over the ranch. But audio is nice and
> :How to do it or why its difficult is a
> :issue. I've not yet been convinced that MP is
> :something thats suitable for a network
> :environment as I've never seen an MP OS that
> :come close to Freebsd 4.x UP performance.
> RX interrupts can be hardware moderated
> just like TX interrupts.
> The EM device, for example, allows you to
> set the minimum
> delay between RX intrrupts.
> For example, lets say a packet comes in and
> EM interrupts immediately,
> resulting in a single packet processed on
> that interrupt. Once the
> interrupt has occured EM will not generate
> another interrupt for N
> microseconds, no matter how many packets
> come in, where N is programmable.
> Of course N is programmed to a value that
> will not result in the RX
> ring overflowing. The result is that
> further RX interrupts may bundle
> 10-50 receive packets on each interrupt
> depending on the packet size.
> This aggregation feature of (nearly all)
> GiGE ethernet devices reduces
> the effective overhead of interrupt entry
> and exit to near zero, which
> means that the device doesn't need to be
> polled even under the most
> adverse circumstances.
> I don't know what the issue you bring up
> with the Linux kernels is,
> but at GigE speeds the ethernet hardware is
> actually flow-controlled.
> There should not be any packet loss even if
> the cpu cannot keep up with
> a full-bandwidth packet stream. There is
> certainly no need to fast-path
> the network interrupt, it simply needs to
> be processed in a reasonable
> period of time. A few milliseconds of
> latency occuring every once in a
> while would not have any adverse effect.
I see you haven't done much empirical testing;
the assumption that "all is well because intel
has it all figured out" is not a sound one.
Interrupt moderation is given but at some point
you hit a wall, and my point is that you hit a
wall a lot sooner with MP than with UP, because
you have to get back to the ring, no matter what
the intervals are, before they wrap. As you
increase the intervals (and thus decrease the
ints/second) you'll lose even more packets,
because there is less space in the ring when the
interrupt is generated and less time for the cpu
to get to it.
Flow control isn't like XON/OFF where we say "hey
our buffer is almost full so lets send some flow
control" at 9600 baud. By the time you're flow
controlling you've already lost enough packets to
piss off your customer base. Plus flow
controlling a big switch will just result in the
switch dropping the packets instead of you, so
what have you really gained?
Packet loss is real, no matter how much you deny
it. If you don't believe it, then you need a
better traffic generator.
Start your day with Yahoo! - Make it your home page!
More information about the Users