Re: [HACKERS] Safe/Fast I/O ...
От | Bruce Momjian |
---|---|
Тема | Re: [HACKERS] Safe/Fast I/O ... |
Дата | |
Msg-id | 199804221415.KAA23945@candle.pha.pa.us обсуждение исходный текст |
Ответ на | Re: [HACKERS] Safe/Fast I/O ... (Andrew Martin <martin@biochemistry.ucl.ac.uk>) |
Список | 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 по дате отправления: