Re: pgbench --latency-limit option

From: Fabien COELHO <coelho(at)cri(dot)ensmp(dot)fr>
To: Robert Haas <robertmhaas(at)gmail(dot)com>, Tatsuo Ishii <ishii(at)postgresql(dot)org>
Cc: "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: pgbench --latency-limit option
Date: 2015-12-23 14:52:18
Message-ID: alpine.DEB.2.10.1512231536090.22350@sto
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


Hello Robert & Tatsuo,

Some paraphrasing and additional comments.

>> $ pgbench -p 11002 --rate 2 --latency-limit 1 -c 10 -T 10 test

You are targetting 2 tps over 10 connections, so that is about one
transaction every 5 seconds for each connection, the target is about 20
transactions in 10 seconds. You want transaction latency below 1 *ms*.

>> number of transactions actually processed: 16

The stochastic process scheduled 16 transactions during the 10 seconds,
1.6 tps. In the long run it should be close to 2 tps, if the stochastic
process does its job as expected.

>> number of transactions skipped: 0 (0.000 %)

All transactions were started (i.e. no transaction was skipped).

>> number of transactions above the 1.0 ms latency limit: 16 (100.000 %)

But none responded within 1 ms, they were all late.

>> latency average: 5.518 ms
>> latency stddev: 1.834 ms

Indeed, unlikely to be under 1 ms.

>> In my understanding, this says: any transaction takes longer than the
>> duration specified by --latency-limit (in this case 1.0 ms) will not
>> be sent the sever.

We cannot know that a transaction will take longer before running it.

> I don't think that's what it says. There seem to be three points here:
>
> 1. If the transaction is sent to the server, we'll check whether it
> runs for longer than the amount of time specified by the limit; if so,
> it will be reported separately. This is true with or without --rate.

Yes.

> 2. If --rate is used, we'll calculate the latency for each statement
> based on the time it was due to be sent, rather than the time it
> actually got sent. (This is further clarified in the documentation
> for --rate.)

Yes. The idea is that the client wanted (say a web server) to send a
transaction a time t, but due to the load or whatever it may not have been
able to send it at that time, but it sends it later.

> 3. If --rate is used and the server is so far behind that
> --latency-limit cannot possibly be met, then we'll skip sending the
> query at all.

Yes. The time when the client finally get to send the transaction, the
current time is beyond schedule + delay limit, no way to get an answer
in time, this simulates a client timeout, where the client gives up
getting an answer.

> In your example, you've got 10 connections and are trying to run at 2
> tps, so to avoid having to start skipping things you need transaction
> response times to be <~ 5 ms. The actual response time is ~5.5ms, so
> if you ran the test for longer I think you would see some skips.

Probably no skips though, because the response time needed is below 5
*seconds*, not ms : 2 tps on 10 connections, 1 transaction every 5 seconds
for each connection.

--
Fabien.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Dmitry Ivanov 2015-12-23 14:58:51 Re: [PROPOSAL] Backup and recovery of pg_statistic
Previous Message Robert Haas 2015-12-23 14:38:08 Re: Let PostgreSQL's On Schedule checkpoint write buffer smooth spread cycle by tuning IsCheckpointOnSchedule?