io-threads (was Re: [Gluster-devel] write-behind mtime workaround)

Anand Avati avati at zresearch.com
Fri Apr 27 23:30:14 UTC 2007


Brent,
  this is a valuable observation. my initial suspicion is that NFS's
open+write+close for every write (to be stateless) causes seperate FDs
created for each write chunk, which are ending in sepearte I/O
threads. I/O threads currently allots fd's to threads in a
'least-used-at-the-moment' policy. changing this to an inode number
basedd static policy might help.

thanks again for the observation!
regards,
avati

On Fri, Apr 27, 2007 at 07:06:17PM -0400, Brent A Nelson wrote:
> Hmm, it looks like io-threads is responsible for more than just mtime 
> glitches when used with write-behind.  I just found that the problems I 
> had with NFS re-export go away when I get rid of io-threads (plus, now 
> that I can enable write-behind, the NFS write performance is far better, 
> by at least a factor of 5)!
> 
> It looks like I'll be switching off io-threads for now, and turning on all 
> the other performance enhancements.
> 
> Thanks,
> 
> Brent
> 
> On Fri, 27 Apr 2007, Brent A Nelson wrote:
> 
> >On Thu, 26 Apr 2007, Anand Avati wrote:
> >
> >>Brent,
> >>I understand what is happening. It is because I/O threads lets the
> >>mtime overtake the write call. I assume you have loaded io-threads on
> >>server side (or below write-behind on client side).
> >
> >Yes, I have io-threads loaded on the server.  This occurs when I load 
> >write-behind on the client.
> >
> >>I could provide you a temporary 'ugly' fix just for you if the issue is 
> >>critical (until the proper framework comes in 1.4)
> >
> >It would be worthwhile if the temporary fix is acceptable for the 1.3 
> >release (otherwise, you'll need a warning included with the release, so 
> >that people enabling io-threads and write-behind know what to expect), but 
> >don't waste your time if it's just for me.  Push on to 1.4 and the real 
> >fix; I'll just leave write-behind disabled for now.
> >
> >Many Thanks,
> >
> >Brent
> >
> 

-- 
ultimate_answer_t
deep_thought (void)
{ 
  sleep (years2secs (7500000)); 
  return 42;
}





More information about the Gluster-devel mailing list