Igor Sysoev is at
Sat Aug 29 13:49:51 MSD 2009

On Sat, Aug 29, 2009 at 09:32:50AM +0800, 191919 wrote:

> In Linux, is file aio + directio available when using flv streaming module?


> I mean when a transfer is started at an offset which is not multiply of page
> size.

Small unaligned chunks on the start and the end of response are synchronously,
while main response part is read asynchronously.

Linux AIO was developed mainly for database usage. Therefore AIO syscalls
are really asynchronous only if a file is in DIRECTIO mode. Otherwise
the AIO syscalls are currently blocking:

This means that data read by AIO/DIRECTIO will never be cached in VM.

Besides, Linux DIRECTIO mode allows an access aligned to blocksize only.
Unaligned access returns EINVAL. It does not fallback to usual IO as
FreeBSD/Solaris do. Therefore nginx turns DIRECTIO off when it reads
small unaligned chunks on the start and the end of response. These reads
are always blocking, and probably the chunks may be even cached in VM, but
the ending chunk can not preread during previous AIO/DIRECTIO access.

> Will be there a performance increase when serving hundrends of terabytes of
> contents?

I do know about about Linux. I will test it on FreeBSD only.

> 2009/8/28 Igor Sysoev <is at>
> > Changes with nginx 0.8.11                                        28 Aug
> > 2009
> >
> >    *) Change: directive "gzip_disable msie6" enables gzipping for
> >       MSIE 6.0 SV1.
> >
> >    *) Feature: file AIO support on FreeBSD and Linux.
> >
> >    *) Feature: the "directio_alignment" directive.

Igor Sysoev

More information about the nginx mailing list