From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, Jeff Davis <pgsql(at)j-davis(dot)com>, Noah Misch <noah(at)leadboat(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andrew Dunstan <andrew(at)dunslane(dot)net> |
Subject: | Re: initdb and fsync |
Date: | 2012-03-16 15:51:04 |
Message-ID: | 201203161651.05074.andres@anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Friday, March 16, 2012 04:47:06 PM Robert Haas wrote:
> On Fri, Mar 16, 2012 at 6:25 AM, Andres Freund <andres(at)anarazel(dot)de> wrote:
> >> > How are the results with sync_file_range(fd, 0, 0,
> >> > SYNC_FILE_RANGE_WRITE)?
> >>
> >> That is much faster than using fadvise. It goes down to ~2s.
> >>
> >> Unfortunately, that's non-portable. Any other ideas? 6.5s a little on
> >> the annoying side (and causes some disconcerting sounds to come from my
> >> disk), especially when we _know_ it can be done in 2s.
> >
> > Its not like posix_fadvise is actually portable. So I personally don't
> > see a problem with that, but...
>
> Well, sync_file_range only works on Linux, and will probably never
> work anywhere else. posix_fadvise() at least has a chance of being
> supported on other platforms, being a standard and all that. Though I
> see that my Mac has neither. :-(
I would suggest adding a wrapper function like:
pg_hint_writeback_flush(fd, off, len);
which then is something like
#if HAVE_SYNC_FILE_RANGE
sync_file_range(fd, off, len, SYNC_FILE_RANGE_WRITE);
#elseif HAVE_POSIX_FADVISE
posix_fadvise(fd, off, len, POSIX_FADV_DONTNEED);
#else
#endif
To my knowledge posix_fadvise currently is only supported on linux btw...
Andres
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2012-03-16 16:26:51 | Re: Command Triggers, v16 |
Previous Message | Robert Haas | 2012-03-16 15:47:06 | Re: initdb and fsync |