Aio vs non-blocking-io

Hello,

Is there a chance to use non-blocking-io with nginx?
AIO is quite broken on Linux, but “O_NONBLOCK” is not.
I know, AIO would be better because you don’t have to wait
until the buffer is copied to the kernel-space, but what should
we do…

The problem, nginx is quite often in “uninterruptible sleep” (D),
so the whole process is blocked.

Thanks a lot
Marcus

Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,219886,219886#msg-219886

Hi,

I know, AIO would be better because you don’t have to wait
until the buffer is copied to the kernel-space, but what should
we do…

Move away from Linux.

Best regards,
Piotr S. < [email protected] >

Hello!

On Sun, Dec 11, 2011 at 06:58:57PM -0500, double wrote:

Is there a chance to use non-blocking-io with nginx?
AIO is quite broken on Linux, but “O_NONBLOCK” is not.

Does O_NONBLOCK works on Linux for regular files? If yes, where
is sematics defined?

POSIX says behaviour of O_NONBLOCK on regular files is
unspecified, and it’s indeed impossible to use O_NONBLOCK on
regular files with POSIX interfaces: there is no way to schedule
read operation and there is no way to find out if I/O possible
(select()/poll() always return regular files as ready for
reading/writing as per POSIX).

Maxim D.

On 12/12/2011 02:02 AM, Piotr S. wrote:

Hi,

I know, AIO would be better because you don’t have to wait
until the buffer is copied to the kernel-space, but what should
we do…

Move away from Linux.

Does nginx provide better performance under other operating systems?