Re: pgbench: allow to exit immediately when any client is aborted

From: Yugo NAGATA <nagata(at)sraoss(dot)co(dot)jp>
To: Tatsuo Ishii <ishii(at)sraoss(dot)co(dot)jp>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: pgbench: allow to exit immediately when any client is aborted
Date: 2023-08-07 02:02:48
Message-ID: 20230807110248.32ddf963ac41e4970e2a9078@sraoss.co.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, 05 Aug 2023 12:16:11 +0900 (JST)
Tatsuo Ishii <ishii(at)sraoss(dot)co(dot)jp> wrote:

> > Hi,
> >
> > I would like to propose to add an option to pgbench so that benchmark
> > can quit immediately when any client is aborted. Currently, when a
> > client is aborted due to some error, for example, network trouble,
> > other clients continue their run until a certain number of transactions
> > specified -t is reached or the time specified by -T is expired. At the
> > end, the results are printed, but they are not useful, as the message
> > "Run was aborted; the above results are incomplete" shows.
>
> Sounds like a good idea. It's a waste of resources waiting for
> unusable benchmark results until t/T expired. If we graze on the
> screen, then it's easy to cancel the pgbench run. But I frequently let
> pgbench run without sitting in front of the screen especially when t/T
> is large (it's recommended that running pgbench with large enough t/T
> to get usable results).

Thank you for your agreement.

> > For precise benchmark purpose, we would not want to wait to get such
> > incomplete results, rather we would like to know some trouble happened
> > to allow a quick retry. Therefore, it would be nice to add an option to
> > make pgbench exit instead of continuing run in other clients when any
> > client is aborted. I think adding the optional is better than whole
> > behavioural change because some users that use pgbench just in order
> > to stress on backends for testing purpose rather than benchmark might
> > not want to stop pgbench even a client is aborted.
> >
> > Attached is the patch to add the option --exit-on-abort.
> > If this option is specified, when any client is aborted, pgbench
> > immediately quit by calling exit(2).
> >
> > What do you think about it?
>
> I think aborting pgbench by calling exit(2) is enough. It's not worth
> the trouble to add more codes for this purpose.

In order to stop pgbench more gracefully, it might be better to make
each thread exit at more proper timing after some cleaning-up like
connection close. However, pgbench code doesn't provide such functions
for inter-threads communication. If we would try to make this, both
pthread and Windows versions would be needed. I don't think it is necessary
to make such effort for --exit-on-abort option, as you said.

Regards,
Yugo Nagata

>
> Best reagards,
> --
> Tatsuo Ishii
> SRA OSS LLC
> English: http://www.sraoss.co.jp/index_en/
> Japanese:http://www.sraoss.co.jp

--
Yugo NAGATA <nagata(at)sraoss(dot)co(dot)jp>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Yugo NAGATA 2023-08-07 02:26:00 Re: pgbench: allow to exit immediately when any client is aborted
Previous Message Tom Lane 2023-08-07 00:55:36 Re: Sync scan & regression tests