Re: explain analyze timings

Lists: pgsql-hackers-win32pgsql-patches
From: "Magnus Hagander" <mha(at)sollentuna(dot)net>
To: "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: <pgsql-hackers-win32(at)postgresql(dot)org>, "PostgreSQL-patches" <pgsql-patches(at)postgresql(dot)org>
Subject: Re: explain analyze timings
Date: 2005-03-20 13:42:24
Message-ID: 6BCB9D8A16AC4241919521715F4D8BCE6C70E5@algol.sollentuna.se
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers-win32 pgsql-patches

>> There is. I beleive QueryPerformanceCounter has sub-mirosecond
>> resolution.
>
>> Can we just replace gettimeofday() with a version that's basically:
>
>No, because it's also used for actual time-of-day calls. It'd be
>necessary to hack executor/instrument.c in particular.

Here's a patch that does just this.

On my system, the counter resolution is 3192090000 ticks per second
(Intel Xeon CPU). On a AMD Athlon XP system, it's 3579545 ticks per
second (a lot less, but still way way way better than gettimeofday has
on win32).

I also hacked commands/explain.c to get the total runtime of the query
correct.

//Magnus

Attachment Content-Type Size
win32_instr.patch application/octet-stream 6.4 KB

From: Simon Riggs <simon(at)2ndquadrant(dot)com>
To: Magnus Hagander <mha(at)sollentuna(dot)net>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-hackers-win32(at)postgresql(dot)org, PostgreSQL-patches <pgsql-patches(at)postgresql(dot)org>
Subject: Re: explain analyze timings
Date: 2005-03-20 15:31:48
Message-ID: 1111332708.11750.362.camel@localhost.localdomain
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers-win32 pgsql-patches

On Sun, 2005-03-20 at 14:42 +0100, Magnus Hagander wrote:
> >> There is. I beleive QueryPerformanceCounter has sub-mirosecond
> >> resolution.
> >
> >> Can we just replace gettimeofday() with a version that's basically:
> >
> >No, because it's also used for actual time-of-day calls. It'd be
> >necessary to hack executor/instrument.c in particular.
>
> Here's a patch that does just this.
>
> On my system, the counter resolution is 3192090000 ticks per second
> (Intel Xeon CPU). On a AMD Athlon XP system, it's 3579545 ticks per
> second (a lot less, but still way way way better than gettimeofday has
> on win32).

Is this just a Win32 hack?

I've been looking for a sub-millisecond counter on other OS for a while
now...anybody know of any port specific counters elsewhere?

Thanks,

Best Regards, Simon Riggs


From: John A Meinel <john(at)arbash-meinel(dot)com>
To: Simon Riggs <simon(at)2ndquadrant(dot)com>
Cc: pgsql-hackers-win32(at)postgresql(dot)org
Subject: Re: explain analyze timings
Date: 2005-03-20 16:01:39
Message-ID: 423D9E63.2060008@arbash-meinel.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers-win32 pgsql-patches

Simon Riggs wrote:

>On Sun, 2005-03-20 at 14:42 +0100, Magnus Hagander wrote:
>
>
>>>>There is. I beleive QueryPerformanceCounter has sub-mirosecond
>>>>resolution.
>>>>
>>>>
>>>>Can we just replace gettimeofday() with a version that's basically:
>>>>
>>>>
>>>No, because it's also used for actual time-of-day calls. It'd be
>>>necessary to hack executor/instrument.c in particular.
>>>
>>>
>>Here's a patch that does just this.
>>
>>On my system, the counter resolution is 3192090000 ticks per second
>>(Intel Xeon CPU). On a AMD Athlon XP system, it's 3579545 ticks per
>>second (a lot less, but still way way way better than gettimeofday has
>>on win32).
>>
>>
>
>Is this just a Win32 hack?
>
>I've been looking for a sub-millisecond counter on other OS for a while
>now...anybody know of any port specific counters elsewhere?
>
>Thanks,
>
>
>
gettimeofday has microsecond resolution. And on most platforms you
actually do get good resolution from it.
QueryPerformanceCounter is win32 only, and it has variable resolution,
as determined by QueryPerformanceFrequency. (obviously as above the Xeon
claims 3B/s while Athlon is only 3.5M/s)
But that is just the finest resolution they can show, you still need to
test to see what the resolution they can give you.
On my dual Xeon I get Freq=2399360000 =2.4B/s In testing, the call
overhead seems to be about .35us, so the resolution is just < 1us.

>Best Regards, Simon Riggs
>
>
John
=:->


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Magnus Hagander" <mha(at)sollentuna(dot)net>
Cc: pgsql-hackers-win32(at)postgresql(dot)org, "PostgreSQL-patches" <pgsql-patches(at)postgresql(dot)org>
Subject: Re: explain analyze timings
Date: 2005-03-20 17:42:58
Message-ID: 8032.1111340578@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers-win32 pgsql-patches

"Magnus Hagander" <mha(at)sollentuna(dot)net> writes:
> Here's a patch that does just this.

This seems about the ugliest and most intrusive way you could have
done it :-(. A judicious typedef and macro or two could eliminate
most of the #ifdefs and code duplication, thereby preserving
readability...

regards, tom lane