Re: Fixing pgbench's logging of transaction timestamps

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Fabien COELHO <coelho@cri.ensmp.fr>
Cc: PostgreSQL Developers <pgsql-hackers@postgresql.org>
Date: 2017-01-01T20:22:13Z
Lists: pgsql-hackers
Fabien COELHO <coelho@cri.ensmp.fr> writes:
>> 3. Forget about using the instr_time result and just have doLog() execute
>> gettimeofday() to obtain the timestamp to print.  This is kind of
>> conceptually ugly, but realistically the added overhead is probably
>> insignificant.  A larger objection might be that on Windows, the result
>> of gettimeofday() isn't very high precision ... but it'd still be a huge
>> improvement over the non-answer you get now.

> Yep.

>> I'm inclined to think that #2 isn't a very good choice; it appears to
>> preserve the current behavior but really doesn't.  So we should either
>> change the behavior as in #1 or expend an extra system call as in #3.
>> Preferences?

> Marginal preference for #3 for KIS? Otherwise any three options seems 
> better than the current status.

OK, done that way.

BTW, why is it that the --aggregate-interval option is unsupported on
Windows?  Is that an artifact of the same disease of assuming too much
about how instr_time is represented?  I don't see any very good reason
for it other than the weird decision to store the result of
INSTR_TIME_GET_DOUBLE in a "long", which seems rather broken in any case.

			regards, tom lane


Commits

  1. In pgbench logging, avoid assuming that instr_times match Unix timestamps.

  2. Avoid assuming that instr_time == struct timeval in pgbench logging.