From: Bruce Momjian <maillist@candle.pha.pa.us>
To: martin@biochemistry.ucl.ac.uk
Cc: pgsql-hackers@postgreSQL.org
Subject: Re: [HACKERS] Safe/Fast I/O ...
Date: Wed, 22 Apr 1998 10:15:08 -0400 (EDT)
Message-ID: <199804221415.KAA23945@candle.pha.pa.us> (raw)
In-Reply-To: <199804221121.LAA00813@bsmir06.biochem.ucl.ac.uk>
>
> > > 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)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: maillist@candle.pha.pa.us, martin@biochemistry.ucl.ac.uk
Subject: Re: [HACKERS] Safe/Fast I/O ...
In-Reply-To: <199804221415.KAA23945@candle.pha.pa.us>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox