Обсуждение: PostgreSQL performance on 64 bit as compared to 32 bit

Поиск
Список
Период
Сортировка

PostgreSQL performance on 64 bit as compared to 32 bit

От
Umesh Kirdat
Дата:
Hello All,
 
We are migrating our product from 32 bit CentOS version 5.0 (kernel 2.6.18) to 64 bit CentOS version 6.0 (kernel 2.6.32)
So we decided to upgrade the PostgreSQL version from 8.2.2 to 9.0.4
 
We are compiling the PostgreSQL source on our build machine to create an RPM before using it in our product.
 
The issue we have noticed is the 9.0.4 (64 bit) version of PostgreSQL has slower performance as compared to 8.2.2 (32 bit) version on an identical hardware.
 
To investigate further we tried monitoring the PostgreSQL process using strace and found that the earlier version of PostgreSQL was using _llseek() system call whereas the later version is using lseek() system call.
 
Will this impact the PostgreSQL performance? When the timing is on we found every query executed on 9.0.4 was taking longer than the query executed on 8.2.2
 
Please guide me what should I see while compiling the PostgreSQL 9.0.4 version to improve its performance.
 
Thank you,
Umesh

Re: PostgreSQL performance on 64 bit as compared to 32 bit

От
Claudio Freire
Дата:
On Sun, Sep 16, 2012 at 12:48 AM, Umesh Kirdat <umesh.kirdat@yahoo.com> wrote:
> The issue we have noticed is the 9.0.4 (64 bit) version of PostgreSQL has
> slower performance as compared to 8.2.2 (32 bit) version on an identical
> hardware.

First of all, that's comparing apples and oranges. Compare the same
version in 32-vs-64, and different versions on same-arch.

> To investigate further we tried monitoring the PostgreSQL process using
> strace and found that the earlier version of PostgreSQL was using _llseek()
> system call whereas the later version is using lseek() system call.

Second, I doubt that's the problem. It's most likely increase memory
footprint due to 64-bit pointers, a known overhead of the 64-bit arch,
but a price you have to pay if you want access to more than 3-4GB of
RAM. You'll be better off using a profiler, like oprofile, and compare
the profile between the two arches.