Re: Fix around conn_duration in pgbench - Mailing list pgsql-hackers
From | Fujii Masao |
---|---|
Subject | Re: Fix around conn_duration in pgbench |
Date | |
Msg-id | bc2136a6-aed4-a6cc-6586-b17101d852f4@oss.nttdata.com Whole thread Raw |
In response to | Re: Fix around conn_duration in pgbench (Yugo NAGATA <nagata@sraoss.co.jp>) |
Responses |
Re: Fix around conn_duration in pgbench
|
List | pgsql-hackers |
On 2021/07/27 11:02, Yugo NAGATA wrote: > Hello Fujii-san, > > Thank you for looking at it. > > On Tue, 27 Jul 2021 03:04:35 +0900 > Fujii Masao <masao.fujii@oss.nttdata.com> wrote: > >> case CSTATE_FINISHED: >> + /* per-thread last disconnection time is not measured */ >> >> Could you tell me why we don't need to do this measurement? > > We don't need to do it because it is already done in CSTATE_END_TX state when > the transaction successfully finished. Also, we don't need it when the thread > is aborted (that it, in CSTATE_ABORTED case) because we can't report complete > results anyway in such cases. Understood. > I updated the comment. Thanks! + * Per-thread last disconnection time is not measured because it + * is already done when the transaction successfully finished. + * Also, we don't need it when the thread is aborted because we + * can't report complete results anyway in such cases. What about commenting a bit more explicitly like the following? -------------------------------------------- In CSTATE_FINISHED state, this disconnect_all() is no-op under -C/--connect because all the connections that this threadestablished should have already been closed at the end of transactions. So we don't need to measure the disconnectiondelays here. In CSTATE_ABORTED state, the measurement is no longer necessary because we cannot report complete results anyways in thiscase. -------------------------------------------- > >> - /* no connection delay to record */ >> - thread->conn_duration = 0; >> + /* connection delay is measured globally between the barriers */ >> >> This comment is really correct? I was thinking that the measurement is not necessary here because this is the case where-C option is not specified. > > This comment means that, when -C is not specified, the connection delay is > measured between the barrier point where the benchmark starts > > /* READY */ > THREAD_BARRIER_WAIT(&barrier); > > and the barrier point where all the thread finish making initial connections. > > /* GO */ > THREAD_BARRIER_WAIT(&barrier); Ok, so you're commenting about the initial connection delay that's measured when -C is not specified. But I'm not sure if this comment here is really helpful. Seem rather confusing?? > > >> done: >> start = pg_time_now(); >> disconnect_all(state, nstate); >> thread->conn_duration += pg_time_now() - start; >> >> We should measure the disconnection time here only when -C option specified (i.e., is_connect variable is true)? Though,I'm not sure how much this change is helpful to reduce the performance overhead.... > > You are right. We are measuring the disconnection time only when -C option is > specified, but it is already done at the end of transaction (i.e., CSTATE_END_TX). > We need disconnection here only when we get an error. > Therefore, we don't need the measurement here. Ok. I found another disconnect_all(). /* XXX should this be connection time? */ disconnect_all(state, nclients); The measurement is also not necessary here. So the above comment should be removed or updated? > I attached the updated patch. Thanks! Regards. -- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION
pgsql-hackers by date: