[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] RE: [PATCH] Netchannel2 optimizations [2/4]



 

> -----Original Message-----
> From: Steven Smith [mailto:steven.smith@xxxxxxxxxx] 
> Sent: Tuesday, February 17, 2009 9:56 AM
> To: Santos, Jose Renato G
> Cc: xen-devel@xxxxxxxxxxxxxxxxxxx; Steven Smith
> Subject: Re: [PATCH] Netchannel2 optimizations [2/4]
> 
> > This patch uses the new packet message flag created in the previous 
> > patch to request an event only every N fragments. N needs 
> to be less 
> > than the maximum number of fragments that we can send or we may get 
> > stuck.  The default number of fragments in this patch is 
> 192 while the 
> > maximum number of fragments that we can send is 256.
> >
> > There is a small issue with this code. If we have a single 
> UDP stream 
> > and the maximum TX socket buffer size limited by the kernel in the 
> > sender guest is not sufficient to consume N fragments (192 for now) 
> > the communication may stop until some other stream sends packets in 
> > either the TX or RX direction. This should not be an issue with TCP 
> > since we willalway have ACKs being erceived what will cause 
> events to 
> > be generated. We will need to fix this sometime soon, but it is an 
> > unlikely scenario in practice that we may let the code get into the 
> > netchannel2 tree for now, especially because the code is still 
> > experimental. But Steven has the final word on that.
> I've applied the patch, along with the others in the series.  
> As you say, this isn't really good enough for a final 
> solution, as it stands, but it'll do for now.
> 
> > A possible fix to this issue is to set the event request 
> flag when we 
> > send a packet and the sender socket buffer is full.  I just did not 
> > have the time to look into the linux socket buffer code to 
> figure out 
> > how to do that, but it should not be difficult once we 
> understand the 
> > code.
> I'm not convinced by this fix.  It'll certainly solve the 
> particular case of a UDP blast, but I'd be worried that there 
> might be some other buffering somewhere, in e.g. the queueing 
> discipline or somewhere in iptables.  Fixing any particular 
> instance probably wouldn't be very tricky, but it'd be hard 
> to be confident you'd got all of them, and it just sounds 
> like a bit of a rat hole of complicated and hard-to-reproduce bugs.
> 
> Since this is likely to be a rare case, I'd almost be happy 
> just using e.g. a 1Hz ticker to catch things when they look 
> like they've gone south.  Performance will suck, but this 
> should be a very rare workload, so that's not too much of a problem.
> 
> Does that sound plausible?
> 

  Yes, a low frequency periodic timer is a good idea.
  We could also make the number of fragments that generate an event a 
configurable paramenter that it could be adjusted (right now it is an 
constant). So a sys admin would have an option to configure it with a value 
compatible with the default socket buffer. What about combining the timer with 
a configurable parameter?

Renato
 
> Steven.
> 
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.