Re: [HACKERS] Safe/Fast I/O ...

From: Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us>
To: martin(at)biochemistry(dot)ucl(dot)ac(dot)uk
Cc: pgsql-hackers(at)postgreSQL(dot)org
Subject: Re: [HACKERS] Safe/Fast I/O ...
Date: 1998-04-22 14:15:08
Message-ID: 199804221415.KAA23945@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)candle(dot)pha(dot)pa(dot)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)

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Good 1998-04-22 14:20:02 Re: [HACKERS] Re: [QUESTIONS] Configuration problems in PostgreSQL 6.3.2 on Linux-ELF
Previous Message Bruce Momjian 1998-04-22 13:58:12 Re: [HACKERS] Re: [QUESTIONS] How to use memory instead of hd?