Warm strategy
Neon architecture is very sensitive to fast prewarming of shared buffers, because it can not rely on file system cache. Prewarming can be done using pg_prewarm extension. But it requires manual invocation of pg_perwarm function for each relation (including indexes and TOAST) which is very inconvenient. Also Neon can restart compute at any moment of time (for example because of inactivity), so it is not clear who and when should do prewarming.
To avoid flushing of shared buffers by seqscan of huge table Postgres is using ring buffer strategies, which limit number of used buffers to some small fraction of shared buffers. So it is not possible to prewarm cache using queries performing seqscan. Also some extensions and Postgres background tasks are using BULKREAD strategy which also prevents loading all data in shared buffers even if there is enough free space.
This PR avoid use of ring buffer if there is free space in shared buffers.