Nginx - Google Summer of Code ideas

Valery Kholodkov valery+nginxen at grid.net.ru
Fri Mar 13 17:21:14 MSK 2009


----- "Maxim Dounin" <mdounin at mdounin.ru> wrote:

> Hello!
> 
> On Thu, Mar 12, 2009 at 06:40:13PM -0700, Merlin wrote:
> 
> > On Thu, Mar 12, 2009 at 4:51 PM, Michael Baudino <
> > michael.baudino at acrelec.com> wrote:
> > 
> > > Hi C.
> > >
> > > Participating in the SoC is a definitively good idea.
> > >
> > > What about implementing async disk IO ?
> > >
> > > --
> > > Michael Baudino
> > >
> > >
> > >
> > What's wrong with aio_write() and aio_read()?
> 
> Well, you really want to hear?  There is a couple of issues:
> 
> 1. There is no good standard method of notification.  Per POSIX 
> it's uses signals to notify process about completed operations.  
> Under FreeBSD notifications is possible over kqueue, and probably 
> other OSes have something too, but it's anyway will require some 
> non-trivial porting.

Here I disagree: linux kernel supports notification via eventfd since 2.6.18. eventfd syscall is available as of glibc 2.8, which is a part of e.g. ubuntu intrepid distribution. 

Personally I've tested this interface and it looks fine to me.

> 2. It's usually implemented as a thread pool within OS kernel (at 
> least FreeBSD and Linux implementations AFAIK), and usually have 
> some limits administrator should be aware of (including maximum 
> number of io requests system may queue).

It is unclear whether kernel thread pool is a disadvantage or not. I don't think it is reasonable to use disk AIO as a primary mean to serve files, I think it won't make server faster than while using sendfile, but AIO could be serious boost for large out-of-cache files, because it eliminates blocking.

With such considerations kernel thread pool doesn't seem to be a big hassle.

-- 
Regards,
Valery Kholodkov





More information about the nginx mailing list