On Thu, Aug 27, 2020 at 8:48 PM Jakub Wartak <jakub.war...@tomtom.com> wrote: > >> 29.62% postgres [kernel.kallsyms] [k] > >> copy_user_enhanced_fast_string > >> ---copy_user_enhanced_fast_string > >> |--17.98%--copyin > >> [..] > >> | __pwrite_nocancel > >> | FileWrite > >> | mdwrite > >> | FlushBuffer > >> | ReadBuffer_common > >> | ReadBufferWithoutRelcache > >> | XLogReadBufferExtended > >> | XLogReadBufferForRedoExtended > >> | --17.57%--btree_xlog_insert > > > > To move these writes out of recovery's way, we should probably just > > run the bgwriter process during crash recovery. I'm going to look > > into that. > > Sounds awesome.
I wrote a quick and dirty experimental patch to try that. I can't see any benefit from it on pgbench with default shared buffers, but maybe it would do better with your append test due to locality, especially if you can figure out how to tune bgwriter to pace itself optimally. https://github.com/macdice/postgres/tree/bgwriter-in-crash-recovery