Re: pgsql: Simplify calculation of Poisson distributed delays in pgbench --

From: Heikki Linnakangas <hlinnakangas(at)vmware(dot)com>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: pgsql-committers <pgsql-committers(at)postgresql(dot)org>
Subject: Re: pgsql: Simplify calculation of Poisson distributed delays in pgbench --
Date: 2014-09-11 12:17:54
Message-ID: 541192F2.3040500@vmware.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

On 09/11/2014 03:08 PM, Robert Haas wrote:
> On Thu, Sep 11, 2014 at 6:14 AM, Heikki Linnakangas
> <heikki(dot)linnakangas(at)iki(dot)fi> wrote:
>> Simplify calculation of Poisson distributed delays in pgbench --rate mode.
>>
>> The previous coding first generated a uniform random value between 0.0 and
>> 1.0, then converted that to an integer between 1 and 10000, and divided that
>> again by 10000. Those conversions are unnecessary; we can use the double
>> value that pg_erand48() returns directly. While we're at it, put the logic
>> into a helper function, getPoissonRand().
>>
>> The largest delay generated by the old coding was about 9.2 times the
>> average, because of the way the uniformly distributed value used for the
>> calculation was truncated to 1/10000 granularity. The new coding doesn't
>> have such clamping. With my laptop's DBL_MIN value, the maximum delay with
>> the new coding is about 700x the average. That seems acceptable - any
>> reasonable pgbench session should last long enough to average that out.
>>
>> Backpatch to 9.4.
>
> This, or the other pgbench patch you just committed, but I think this
> one, broke the pgbench build on Windows. mastodon says:
>
> .\contrib\pgbench\pgbench.c(1271): error C2065: 'usec' : undeclared identifier

Thanks, fixed. (it was the other patch)

- Heikki

In response to

Browse pgsql-committers by date

  From Date Subject
Next Message Robert Haas 2014-09-11 13:07:50 pgsql: Add missing volatile qualifier.
Previous Message Heikki Linnakangas 2014-09-11 12:17:29 pgsql: Fix Windows build.