Re: x86-64 and PostgreSQL - Mailing list pgsql-performance

From Ron Johnson
Subject Re: x86-64 and PostgreSQL
Date
Msg-id 1043064363.15592.187.camel@haggis
Whole thread Raw
In response to Re: x86-64 and PostgreSQL  ("Shridhar Daithankar" <shridhar_daithankar@persistent.co.in>)
Responses Re: x86-64 and PostgreSQL
Re: x86-64 and PostgreSQL
List pgsql-performance
On Mon, 2003-01-20 at 03:59, Shridhar Daithankar wrote:
> On 20 Jan 2003 at 3:52, Ron Johnson wrote:
>
> > On Mon, 2003-01-20 at 00:29, Shridhar Daithankar wrote:
> > > I remember reading in one of the HP guides regarding 64 bit that 64 bit is a
> > > tool provided for applications. In general no app. should be 64 bit unless
> > > required. In fact they advice that fastest performance one can get is by
> > > running 32 bit app. on 64 bit machine because registers are wide and can be
> > > filled in is less number of fetches.
> > >
> > > Sounds reasonable to me.
> >
> > Dou you, the programmer or SysAdmin, always know when 64 bits is
> > needed?
> >
> > Take, for simple example, a memcpy() of 1024 bytes.  Most CPUs don't
> > have direct core-core copy instruction.  (The RISC philosophy, after
> > all, is load-and-store.)  A 32-bit executable would need 1024/32 = 32
> > pairs of load-store operations, while a 64-bit executable would only
> > need 16.  Yes, L1 & L2 caching would help some, but not if you are
> > moving huge amounts of data...
>
> Well, that wasn't intended application aera of that remark. I was more on the
> line of, I have 16GB data of double precision which I need to shuffle thr. once
> in a while, should I use 32 bit or 64 bit?
>
> Something like that.. bit more macroscopic.
>
> I work on an application which is 32 bit on HP-UX 64 bit. It handles more than
> 15GB of data at some sites pretty gracefully..No need to move to 64 bit as
> yet..

Maybe you wouldn't get a speed boost on HP-UX, but I bet you would on
x86-64.  Why?  64 bit programs get to use the new registers that AMD
created just for 64 bit mode.  Thus, the compiler should, hopefully,
be able to generate more efficient code.

Also, since (at least on the gcc-3.2 compiler) a "long" and "int" are
still 32 bits (64 bit scalars are of type "long long"), existing
programs (that all use "long" and "int") will still only fill up 1/2
of each register (attaining the speed that HP alleges), but, as I
mentioned above, would be able to use the extra registers if recompiled
into native 64-bit apps...

$ cat test.c
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char **argv)
{
    printf("%d  %d   %d\n", sizeof(long),
                            sizeof(int),
                            sizeof(long long));
};
$ gcc-3.2 test.c && ./a.out
4  4   8

--
+------------------------------------------------------------+
| Ron Johnson, Jr.     mailto:ron.l.johnson@cox.net          |
| Jefferson, LA  USA   http://members.cox.net/ron.l.johnson  |
|                                                            |
| "Basically, I got on the plane with a bomb. Basically, I   |
|  tried to ignite it. Basically, yeah, I intended to damage |
|  the plane."                                               |
|    RICHARD REID, who tried to blow up American Airlines    |
|                  Flight 63                                 |
+------------------------------------------------------------+


pgsql-performance by date:

Previous
From: "Shridhar Daithankar"
Date:
Subject: Re: x86-64 and PostgreSQL
Next
From: "Shridhar Daithankar"
Date:
Subject: Re: x86-64 and PostgreSQL