Received: from candle.pha.pa.us (root@s5-03.ppp.op.net [209.152.195.67]) by hub.org (8.8.8/8.7.5) with ESMTP id KAA19318 for ; Wed, 22 Apr 1998 10:31:48 -0400 (EDT) Received: (from maillist@localhost) by candle.pha.pa.us (8.8.5/8.8.5) id KAA23945; Wed, 22 Apr 1998 10:15:08 -0400 (EDT) From: Bruce Momjian Message-Id: <199804221415.KAA23945@candle.pha.pa.us> Subject: Re: [HACKERS] Safe/Fast I/O ... To: martin@biochemistry.ucl.ac.uk Date: Wed, 22 Apr 1998 10:15:08 -0400 (EDT) Cc: pgsql-hackers@postgreSQL.org In-Reply-To: <199804221121.LAA00813@bsmir06.biochem.ucl.ac.uk> from "Andrew Martin" at Apr 22, 98 11:21:42 am X-Mailer: ELM [version 2.4 PL25] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit > > > > As David Gould mentioned, we need to do pre-fetching of data pages > > > somehow. > > > > > > When doing a sequential scan on a table, the OS is doing a one-page > > > prefetch, which is probably enough. The problem is index scans of the > > > table. Those are not sequential in the main heap table (unless it is > > > clustered on the index), so a prefetch would help here a lot. > > > > > > That is where we need async i/o. I am looking in BSDI, and I don't see > > > any way to do async i/o. The only way I can think of doing it is via > > > threads. > > > > I found it. It is an fcntl option. From man fcntl: > > > > O_ASYNC Enable the SIGIO signal to be sent to the process group when > > I/O is possible, e.g., upon availability of data to be read. > > > > Who else supports this? > > > > under Irix: > > man fcntl: > > F_SETFL Set file status flags to the third argument, arg, taken as an > object of type int. Only the following flags can be set [see > fcntl(5)]: FAPPEND, FSYNC, FNDELAY, FNONBLK, FDIRECT, and > FASYNC. Since arg is used as a bit vector to set the flags, > values for all the flags must be specified in arg. (Typically, > arg may be constructed by obtaining existing values by F_GETFL > and then changing the particular flags.) FAPPEND is equivalent > to O_APPEND; FSYNC is equivalent to O_SYNC; FNDELAY is > equivalent to O_NDELAY; FNONBLK is equivalent to O_NONBLOCK; > and FDIRECT is equivalent to O_DIRECT. FASYNC is equivalent to > calling ioctl with the FIOASYNC command (except that with ioctl > all flags need not be specified). This enables the SIGIO > facilities and is currently supported only on sockets. > > ....but then I can find no details of FIOASYNC on the ioctl page or pages > referenced therein. I have found BSDI does not support async i/o. You need a separate process to do the i/o. The O_ASYNC flag only works on tty files. -- Bruce Momjian | 830 Blythe Avenue maillist@candle.pha.pa.us | Drexel Hill, Pennsylvania 19026 + If your life is a hard drive, | (610) 353-9879(w) + Christ can be your backup. | (610) 853-3000(h)