Asynchronous I/O in Postgres - Mailing list pgsql-novice

From Mladen Gogala
Subject Asynchronous I/O in Postgres
Date
Msg-id 4CAE6D12.9050301@vmsinfo.com
Whole thread Raw
Responses Re: Asynchronous I/O in Postgres  (Mladen Gogala <mladen.gogala@vmsinfo.com>)
List pgsql-novice
Postgres 8.4 and  9.0 have the parameter named
"effective_io_concurrency". The manual page is very short, it says the
following:

Sets the number of concurrent disk I/O operations that PostgreSQL
expects can be executed simultaneously. Raising this value will increase
the number of I/O operations that any individual PostgreSQL session
attempts to initiate in parallel. The allowed range is 1 to 1000, or
zero to disable issuance of asynchronous I/O requests.

http://www.postgresql.org/docs/current/static/runtime-config-resource.html

My initial understanding was that this was the size of  the table,
containing aiocb pointers, so that PgSQL can launch up to 1000
simultaneous aio_read or aio_write, per process. While monitoring the
system, I noticed that there is no asynchronous I/O at all! Nothing,
nada, zilch! Then I noticed that the "postgres" binary,  is not even
linked with libaio, so aio_read was out of the question:

-bash-3.2$ ldd postgres|grep libaio
-bash-3.2$

The platform is Postgres 9.0.1 on RH EL 5.5 x86-64. My understanding of
the "effective_io_concurrency" was apparently very wrong. What is the
"effective concurrency" and what are those "simultaneous I/O requests"
that man page is talking about. Can somebody please define in precise
terms what is it that this parameter defines? What kind of "concurrent
I/O" is Postgres doing without asynchronous I/O calls? If this parameter
is just a stub for the future reference, I'd like to know. Will Postgres
use asynchronous I/O? Is that planned?



--
Mladen Gogala
Sr. Oracle DBA
1500 Broadway
New York, NY 10036
(212) 329-5251
www.vmsinfo.com


pgsql-novice by date:

Previous
From: Mike Ellsworth
Date:
Subject: Re: Scheduling a Stored Procedure?
Next
From: Mladen Gogala
Date:
Subject: Re: Asynchronous I/O in Postgres