Re: [HACKERS] Safe/Fast I/O ... - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: [HACKERS] Safe/Fast I/O ...
Date
Msg-id 199804221415.KAA23945@candle.pha.pa.us
Whole thread Raw
In response to Re: [HACKERS] Safe/Fast I/O ...  (Andrew Martin <martin@biochemistry.ucl.ac.uk>)
List pgsql-hackers
>
> > > 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)

pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] LOCK TABLE statement
Next
From: "Göran Thyni"
Date:
Subject: Re: [HACKERS] Re: [QUESTIONS] How to use memory instead of hd?