Re: Background Processes and reporting - Mailing list pgsql-hackers
From | Robert Haas |
---|---|
Subject | Re: Background Processes and reporting |
Date | |
Msg-id | CA+Tgmoanw2mNZRFBNdjWghL7ZF1EoJ99FqEYDFrp5xY+eQf_9A@mail.gmail.com Whole thread Raw |
In response to | Re: Background Processes and reporting (Andres Freund <andres@anarazel.de>) |
Responses |
Re: Background Processes and reporting
|
List | pgsql-hackers |
On Mon, Mar 14, 2016 at 4:42 PM, Andres Freund <andres@anarazel.de> wrote: > On 2016-03-14 16:16:43 -0400, Robert Haas wrote: >> > I have already shown [0, 1] the overhead of measuring timings in linux on >> > representative workload. AFAIK, these tests were the only one that showed >> > any numbers. All other statements about terrible performance have been and >> > remain unconfirmed. >> >> Of course, those numbers are substantial regressions which would >> likely make it impractical to turn this on on a heavily-loaded >> production system. > > A lot of people operating production systems are fine with trading a <= > 10% impact for more insight into the system; especially if that > configuration can be changed without a restart. I know a lot of systems > that use pg_stat_statements, track_io_timing = on, etc; just to get > that. In fact there's people running perf more or less continuously in > production environments; just to get more insight. > > I think it's important to get as much information out there without > performance overhead, so it can be enabled by default. But I don't think > it makes sense to not allow features in that cannot be enabled by > default, *if* we tried to make them cheap enough beforehand. Hmm, OK. I would have expected you to be on the other side of this question, so maybe I'm all wet. One point I am concerned about is that, right now, we have only a handful of types of wait events. I'm very interested in seeing us add more, like I/O and client wait. So any overhead we pay here is likely to eventually be paid in a lot of places - thus it had better be extremely small. >> I tend to think that there's not much point in allowing >> pg_stat_get_progress_info('checkpointer') because we can just have a >> dedicated view for that sort of thing, cf. pg_stat_bgwriter, which >> seems better. > > But that infrastructure isn't really suitable for exposing quickly > changing counters imo. And given that we now have a relatively generic > framework, it seems like a pain to add a custom implementation just for > the checkpointer. Also, using custom infrastructure means it's not > extensible to custom bgworker, which doesn't seem like a good > idea. E.g. it'd be very neat to show the progress of a logical > replication catchup process that way, no? It isn't really that hard to make a purpose-built shared memory area for each permanent background process, and I think that would be a better design. Then you can have whatever types you need, whatever column labels make sense, etc. You can't really do that for command progress reporting because there are so many commands, but a single-purpose backend doesn't have that issue. I do agree that having background workers report into this facility could make sense. >> Exposing the wait events from background processes >> might be worth doing, but I don't think we want to add a bunch of >> dummy lines to pg_stat_activity. > > Why are those dummy lines? It's activity in the cluster? We already show > autovacuum workers in there. And walsenders, if you query the underlying > function, instead of pg_stat_activity (due to a join to pg_database). Hmm. Well, OK, maybe. I didn't realize walsenders were showing up there ... sorta. I guess my concern was that people would complain about breaking compatibility, but since we're doing that already maybe we ought to double down on it. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
pgsql-hackers by date: