Re: re0 fix that works with polling

From: John-Mark Gurney <gurney_j_at_resnet.uoregon.edu>
Date: Tue, 19 Oct 2004 01:12:02 -0700
Sean McNeil wrote this message on Mon, Oct 18, 2004 at 23:00 -0700:
> On Mon, 2004-10-18 at 22:33, John-Mark Gurney wrote:
> > Sean McNeil wrote this message on Mon, Oct 18, 2004 at 16:25 -0700:
> > > > Do you have a video that you could send me, that I could do some testing
> > > > with this? (and vls config)?  I've been doing my testing on an i386,
> > > > but that shouldn't be different enough to cause problems...  (if it is,
> > > > then we need to think about what the re is behaving badly)...
> > > 
> > > I have placed 11 megs of the stream in
> > > 
> > > http://mcneil.com/~sean/freebsd/stream.mpg
> > 
> > damn, is that hdtv quality?? :)  looks pretty nice...
> 
> Yes, that is low-quality HD at 15mbps.  It isn't too bad, though, until
> it gets to a part I don't think was in the short sample I provided.
> Gandalf is attacking the fire demon as they fall.  Very blocky.

well, I guess I'm mostly impressed by the high res.. the window at
1x res doesn't even fit on my laptop's display... :)

> > > You can install vls from ports (net/vls) and I run it with
> > > 
> > > vls -d udp:224.1.1.1:1234 file:stream.mpg
> > > 
> > > I agree that your assesment appears to be accurate in identifying no
> > > packet loss.  Are you going through a switch or is this a cross from
> > > machine-machine?
> > 
> > The bad news is that it appears that I'm not dropping any packets at
> > all...  I'm using vlc on my mac (which is also at gige), and it appears
> > to be getting full data rate.. though things are gittery,but the logs
> > are kinda wierd...
> 
> The mac probably doesn't have enough horse power.  Typically you need an
> Intel 3GHz processor to get it to play smoothly with software.

yeh, not surprised...  my laptop is only 867mhz...

> > now the bad part of the news...  if I drop my re0 card over to my 100mbit
> > switch:
> >         media: Ethernet autoselect (100baseTX <full-duplex>)
> > 
> > Ok, here's a more complete run of what happened:
> > re0 <-> SMC gige switch <-> NetGear gige switch <-> MacOSX laptop (gige)
> > no packet loss observed.. ~1.9megs/sec or 1400pps received at MacOSX
> > laptop
> > 
> > re0 <-> summit48 (100mbit) <-> SMC gige switch <-> MacOSX laptop (gige)
> > w/ or w/o netgear switch between SMC and laptop, packet loss is
> > observed, only about 700-900kbyte/sec or 500-600pps
> 
> This is very interesting.  This is completely opposite to my
> experience.  I have
> 
> re0 <-> linksys gige <-> hardware decoder or freebsd box just doing
> capture both at 100bt
> 
> 	packet loss.  With mods, no loss.
> 
> re0 at 100bt <-> linksys 100bt <-> same as above
> 
> 	no packet loss.
> 
> Could this be some sort of n-way negotiation issue?

hmmm.. well, just make sure that the machines and the switches all
agree...  I couldn't hardcode re0 to 100baset w/ it plugged into the
gige switch (though I didn't try hard coding it, and pulling the plug)..
it always autodetected fine for me...

> > now a bit more information, I did use snmpnetstat on the switch to verify
> > that the switch was receiving (but I forgot to verify that it was sending
> > all packets to the gige port) all packets even w/ the final packet loss..
> > 
> > re0 <-> summit48 (100mbit) <-> MacOSX laptop
> > no packet loss observed...  similar stats as to the straight gige above..
> > 
> > now, I also tried receiving on win2k box, and I received a bit better
> > frame rate.. I don't think my macosx laptop can handle rendering the
> > data stream (or at least vlc doesn't know how to make use of the proper
> > acceleration)..  the frame rate was really choppy, and sound not to good..
> 
> Yes, that would be expected.  Fastest laptop being a 1.5GHz and vlc may
> not be taking advantage of altivec.  But then again maybe it is.  Never
> tried it on mine.
> 
> > Do you have an application that gets good stats from vlc?  I did see
> > a few messages in the message log about dropped packets...  but I coudln't
> > really figure out how many/much they were, and considering it was udp,
> > I expected some loss...
> 
> The best thing I can recommend is to just capture the stream.  I have a
> program at
> 
> http://www.mcneil.com/~sean/freebsd/stream.c
> 
> just compile as cc -o stream stream.c and run as
> 
> ./stream 224.1.1.1:1234 >capture.mpg
> 
> assuming address:port as before.
> 
> I have another program that will compare the streams and report missing
> packets if you find that they appear to be dropping for you.

Yeh, it appears I'm getting the drops here using your stream capture
program...  around 16%-20% of the file..

w/ your fix of the timer down to 0x200 I still see about 5% data drop..

and increasing the ring buffer size to 512 (w/o your timer fix) does
see as low as 3% data drop, but I've still seen a 13% drop with it..

with both a ring increase and your fix, I normally saw about 4% data
loss, but I did get one run with 18% loss...  now, I didn't run hard
numbers, so these numbers aren't statisticly proven...

The biggest problem I see with your patch is that it appears to
completely disable any type of interrupt moderation...  we'd probably
be better off w/ enable tx interrupts than using the timer...  with
my tests with your timer fix (just setting it to 0x200), I always saw
double interrupts, one for transmit, and a second for receive...  When
I ran the netsend program at 14kpps, I was seeing 27kints!!  this was
using like 

(note netsend pkt size of 1316 to try to emulate your side)

just for kicks I decided to double the timer w/ a ring buffer of 512,
at 14kpps to 0x1000, and when doing 14kpps I only see 64int/sec w/o any
errors returned (and apparent 100% receive rate) by netsend...

after further examination, I believe I did find a slight logic flaw
with the timer...  Every time a packet was delivered to the interface,
the timer was reset...  which means it might of been possible to start
the buffers, and with a shorter timer, this avoided the problem...

attached is a patch (with a new sysctl that lets you adjust the timer
on the fly for quicker/easier testing of different values)...  It also
prevents prematurely clearing the OACTIVE flag...

see if you get better results w/o having to adjust the timer down..

> > again, most of the stats was gathered with netstat, since this is the
> > easiest way I know to see things happening..
> 
> I really do appreciate the attention you are giving this, Jean-Mark.

:) I'm not French..  it's John-Mark..  Considering your name is Sean,
I can see how'd your fingers might make a mistake...

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."

Received on Tue Oct 19 2004 - 06:12:04 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:18 UTC