et al I was wondering why it's a good idea for pgbench to do
        srandom((unsigned int) INSTR_TIME_GET_MICROSEC(start_time));
to initialize randomness and then
        for (i = 0; i < nthreads; i++)
                thread->random_state[0] = random();
                thread->random_state[1] = random();
                thread->random_state[2] = random();
to initialize the individual thread random state which is then used by

To me it seems better to instead initialize srandom() with a known value
(say, uh, 0). Or even better don't use random() at all, and fill a
global pg_erand48() with a known state; and use pg_erand48() to
initialize the thread states.

Obviously that doesn't make pgbench entirely reproducible, but it seems
a lot better than now. Individual threads would do work in a
reproducible order.

I see very little reason to have the current behaviour, or at the very
least not by default.


Andres Freund

Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:

Reply via email to