pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
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)



view thread (20+ messages)

Message-ID: <199804221415.KAA23945@candle.pha.pa.us>
Permalink:  ../199804221415.KAA23945@candle.pha.pa.us/
Also on:    postgresql.org/message-id/199804221415.KAA23945@candle.pha.pa.us

 · 

reply

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