Thanks again - for some reason I thought that each page should be fsynced separately...
I am running ZFS and going to try following config on 32gb server:
shared_buffers = 512mb (previously was 6gb)
max_wal_size = 8gb
zfs_arc_max = 24gb
i.e. run with minimal shared buffers and do all the caching in ZFS. As I understand it now such config can provide better results since data will be cached once in ZFS.
On Sun, Sep 24, 2017 at 8:59 PM, Tomas Vondra <tomas.vondra@xxxxxxxxxxxxxxx> wrote:
On 09/24/2017 11:03 AM, Vladimir Mihailenco wrote:
> Thanks for your response. Ss I understand it now the difference is
> that checkpoints are synchronous but dirty pages eviction from shared
> buffers are asynchronous, correct? How then Postgres ensures that OS
> writes data to the disk so WAL can be deleted?
>
The last step in a checkpoin is fsync() on the files. Without that, the
checkpoint is considered incomplete and the database won't rely on it.
regards
--
Tomas Vondra http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services