The code seems to be in good condition. All the tests are running ok with no errors.
I like the whole idea of shifting additional checkpointer jobs as much as possible to another worker. In my view, it is more appropriate to call this worker "bg cleaner" or "bg file cleaner" or smth. It could be useful for systems with high load, which may deal with deleting many files at once, but I'm not sure about "small" installations. Extra bg worker need more resources to do occasional deletion of small amounts of files. I really do not know how to do it better, maybe to have two different code paths switched by GUC? Should we also think about adding WAL preallocation into custodian worker from the patch "Pre-alocationg WAL files" [1] ? [1] https://www.postgresql.org/message-id/flat/20201225200953.jjkrytlrzojbn...@alap3.anarazel.de -- Best regards, Maxim Orlov.