Re: O(n) tasks cause lengthy startups and checkpoints - Mailing list pgsql-hackers
From | Bharath Rupireddy |
---|---|
Subject | Re: O(n) tasks cause lengthy startups and checkpoints |
Date | |
Msg-id | CALj2ACVsYPxnQhp0=08aSzjdXPPbM5VXB2QDL8p-D_US1UNEqw@mail.gmail.com Whole thread Raw |
In response to | Re: O(n) tasks cause lengthy startups and checkpoints ("Bossart, Nathan" <bossartn@amazon.com>) |
Responses |
Re: O(n) tasks cause lengthy startups and checkpoints
|
List | pgsql-hackers |
On Sat, Jan 15, 2022 at 12:46 AM Bossart, Nathan <bossartn@amazon.com> wrote: > > On 1/14/22, 3:43 AM, "Maxim Orlov" <orlovmg@gmail.com> wrote: > > The code seems to be in good condition. All the tests are running ok with no errors. > > Thanks for your review. > > > I like the whole idea of shifting additional checkpointer jobs as much as possible to another worker. In my view, itis more appropriate to call this worker "bg cleaner" or "bg file cleaner" or smth. I personally prefer "background cleaner" as the new process name in line with "background writer" and "background worker". > > 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 reallydo not know how to do it better, maybe to have two different code paths switched by GUC? > > I'd personally like to avoid creating two code paths for the same > thing. Are there really cases when this one extra auxiliary process > would be too many? And if so, how would a user know when to adjust > this GUC? I understand the point that we should introduce new > processes sparingly to avoid burdening low-end systems, but I don't > think we should be afraid to add new ones when it is needed. IMO, having a GUC for enabling/disabling this new worker and it's related code would be a better idea. The reason is that if the postgres has no replication slots at all(which is quite possible in real stand-alone production environments) or if the file enumeration (directory traversal and file removal) is fast enough on the servers, there's no point having this new worker, the checkpointer itself can take care of the work as it is doing today. > That being said, if making the extra worker optional addresses the > concerns about resource usage, maybe we should consider it. Justin > suggested using something like max_parallel_maintenance_workers > upthread [0]. I don't think having this new process is built as part of max_parallel_maintenance_workers, instead I prefer to have it as an auxiliary process much like "background writer", "wal writer" and so on. I think now it's the time for us to run some use cases and get the perf reports to see how beneficial this new process is going to be, in terms of improving the checkpoint timings. > > Should we also think about adding WAL preallocation into custodian worker from the patch "Pre-alocationg WAL files" [1]? > > This was brought up in the pre-allocation thread [1]. I don't think > the custodian process would be the right place for it, and I'm also > not as concerned about it because it will generally be a small, fixed, > and configurable amount of work. In any case, I don't sense a ton of > support for a new auxiliary process in this thread, so I'm hesitant to > go down the same path for pre-allocation. > > [0] https://postgr.es/m/20211213171935.GX17618%40telsasoft.com > [1] https://postgr.es/m/B2ACCC5A-F9F2-41D9-AC3B-251362A0A254%40amazon.com I think the idea of weaving every non-critical task to a common background process is a good idea but let's not mix up with the new background cleaner process here for now, at least until we get some numbers and prove that the idea proposed here will be beneficial. Regards, Bharath Rupireddy.
pgsql-hackers by date: