Received: from maia.hub.org (maia-3.hub.org [200.46.204.243]) by mail.postgresql.org (Postfix) with ESMTP id 416751337B5C for ; Thu, 7 Oct 2010 22:00:10 -0300 (ADT) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.204.243]) (amavisd-maia, port 10024) with ESMTP id 03716-02 for ; Fri, 8 Oct 2010 01:00:02 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from hrndva-omtalb.mail.rr.com (hrndva-omtalb.mail.rr.com [71.74.56.122]) by mail.postgresql.org (Postfix) with ESMTP id BB1721337B47 for ; Thu, 7 Oct 2010 22:00:02 -0300 (ADT) X-Authority-Analysis: v=1.1 cv=QISHQ+x4xS+apxgDHgAvNvlUjyrXCzYsHvuXcbPYiKg= c=1 sm=0 a=8nJEP1OIZ-IA:10 a=RAii6je2cdnAH6ATCOpc6g==:17 a=epTmVMiNAAAA:8 a=_Ixf_7qHAAAA:8 a=Fy0JEvWyPbSGXJ-OwTkA:9 a=-zaeRPNcgh_8cPxz2eoA:7 a=ISlC9682zhpT53pCp0G7gBM3U7UA:4 a=wPNLvfGTeEIA:10 a=ryAo9hy1-OkA:10 a=6vsjEBoLwlAA:10 a=jo7jRXI9114A:10 a=0tfO7MgyNwYA:10 a=jJWpg_NzTdHpseXP:21 a=Xbfd3CAE5u7gcqbm:21 a=RAii6je2cdnAH6ATCOpc6g==:117 X-Cloudmark-Score: 0 X-Originating-IP: 74.73.87.196 Received: from [74.73.87.196] ([74.73.87.196:51563] helo=[192.168.1.103]) by hrndva-oedge04.mail.rr.com (envelope-from ) (ecelerity 2.2.3.46 r()) with ESMTP id E9/42-11377-21D6EAC4; Fri, 08 Oct 2010 01:00:02 +0000 Message-ID: <4CAE6D12.9050301@vmsinfo.com> Date: Thu, 07 Oct 2010 21:00:02 -0400 From: Mladen Gogala User-Agent: Thunderbird 2.0.0.24 (Windows/20100228) MIME-Version: 1.0 To: "pgsql-novice@postgresql.org" Subject: Asynchronous I/O in Postgres Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-1.9 tagged_above=-10 required=5 tests=BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001 X-Spam-Level: X-Archive-Number: 201010/51 X-Sequence-Number: 24023 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