From: | Thomas Munro <thomas(dot)munro(at)gmail(dot)com> |
---|---|
To: | Peter Eisentraut <peter(at)eisentraut(dot)org> |
Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: macOS prefetching support |
Date: | 2024-08-16 22:01:42 |
Message-ID: | CA+hUKG+bmQVukP6mFOTu_D9cADgNWfM74oUeqmqb8PxyPn2rQA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Sat, Aug 17, 2024 at 6:58 AM Peter Eisentraut <peter(at)eisentraut(dot)org> wrote:
> What to do about the order of the symbols and include files. I threw
> something into src/include/port/darwin.h, but I'm not sure if that's
> good. Alternatively, we could not use __darwin__ but instead the more
> standard and predefined defined(__APPLE__) && defined(__MACH__).
Hmm. fd.h and fd.c test for F_NOCACHE, which is pretty closely
related. Now I'm wondering why we actually need this in
pg_config_manual.h at all. Who would turn it off at compile time, and
why would they not be satisfied with setting relevant GUCs to 0? Can
we just teach fd.h to define USE_PREFETCH if
defined(POSIX_FADV_WILLNEED) || defined(F_RDADVISE)?
(I have also thought multiple times about removing the configure
probes for F_FULLFSYNC, and just doing #ifdef. Oh, that's in my patch
for CF #4453.)
> How to document it. The current documentation makes references mainly
> to the availability of posix_fadvise(). That seems quite low-level.
> How could a user of a prepared package even find out about that? Should
> we just say "requires OS support" (kind of like I did here) and you can
> query the effective state by looking at the *_io_concurrency settings?
> Or do we need a read-only parameter that shows whether prefetch support
> exists (kind of along the lines of huge pages)?
I think that's fine. I don't really like the word "prefetch", could
mean many different things. What about "requires OS support for
issuing read-ahead advice", which uses a word that appears in both of
those interfaces? And yeah the GUCs being nailed to zero means you
don't have it.
> (There is also the possibility that we provide an implementation of
> posix_fadvise() for macOS that wraps the platform-specific code in this
> patch. And then Apple could just take that. ;-) )
Yeah might be simpler... as long as we make sure that we test for
having the function AND the relevant POSIX_FADV_xxx in places, which I
see that we do.
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2024-08-16 22:20:38 | Re: macOS prefetching support |
Previous Message | Thomas Munro | 2024-08-16 21:01:43 | Re: thread-safety: gmtime_r(), localtime_r() |