Re: [PERFORM] Sun performance - Major discovery! - Mailing list pgsql-hackers
From | Neil Conway |
---|---|
Subject | Re: [PERFORM] Sun performance - Major discovery! |
Date | |
Msg-id | 1065758093.23683.420.camel@tokyo Whole thread Raw |
In response to | Re: [PERFORM] Sun performance - Major discovery! (Bruce Momjian <pgman@candle.pha.pa.us>) |
Responses |
Re: [PERFORM] Sun performance - Major discovery!
|
List | pgsql-hackers |
On Wed, 2003-10-08 at 21:44, Bruce Momjian wrote: > Agreed. Do we set them all to -O2, then remove it from the ones we > don't get successful reports on? I took the time to compile CVS tip with a few different machines from HP's TestDrive program, to see if there were any regressions using the new optimization flags: (1) (my usual dev machine) $ uname -a Linux tokyo 2.4.19-xfs #1 Mon Jan 20 19:12:29 EST 2003 i686 GNU/Linux $ gcc --version gcc (GCC) 3.3.2 20031005 (Debian prerelease) 'make check' passes (2) $ uname -a Linux spe161 2.4.18-smp #1 SMP Sat Apr 6 21:42:22 EST 2002 alpha unknown $ gcc --version gcc (GCC) 3.3.1 'make check' passes (3) $ uname -a Linux spe170 2.4.17-64 #1 Sat Mar 16 17:31:44 MST 2002 parisc64 unknown $ gcc --version 3.0.4 'make check' passes BTW, this platform doesn't have any code written for native spinlocks. (4) $ uname -a Linux spe156 2.4.18-mckinley-smp #1 SMP Thu Jul 11 12:51:02 MDT 2002 ia64 unknown $ gcc --version When you compile PostgreSQL without changing the CFLAGS configure picks, the initdb required for 'make check' fails with: [...] initializing pg_depend... ok creating system views... ok loading pg_description... ok creating conversions... ERROR: could not identify operator 679 I tried to compile PostgreSQL with CFLAGS='-O0' to see if the above resulted from an optimization-induced compiler error, but I got the following error: $ gcc -O0 -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../../src/include -D_GNU_SOURCE -c -o xlog.o xlog.c ../../../../src/include/storage/s_lock.h: In function `tas': ../../../../src/include/storage/s_lock.h:125: error: inconsistent operand constraints in an `asm' Whereas this works fine: $ gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -I../../../../src/include -D_GNU_SOURCE -c -o xlog.o xlog.c $ BTW, line 138 of s_lock.h is: #if defined(__arm__) || defined(__arm__) That seems a little redundant. Anyway, I tried running initdb after compiling all of pgsql with "-O0', except for the files that included s_lock.h, but make check still failed: creating information schema... ok vacuuming database template1... /house/neilc/pgsql/src/test/regress/./tmp_check/install//usr/local/pgsql/bin/initdb: line 882: 22035 Segmentation fault (core dumped) "$PGPATH"/postgres $PGSQL_OPT template1 >/dev/null <<EOF ANALYZE; VACUUM FULL FREEZE; EOF The core file seems to indicate a stack overflow due to an infinitely recursive function: (gdb) bt 25 #0 0x4000000000645dc0 in hash_search () #1 0x4000000000616930 in RelationSysNameCacheGetRelation () #2 0x4000000000616db0 in RelationSysNameGetRelation () #3 0x4000000000082e40 in relation_openr () #4 0x4000000000083910 in heap_openr () #5 0x400000000060e6b0 in ScanPgRelation () #6 0x4000000000611d60 in RelationBuildDesc () #7 0x4000000000616e70 in RelationSysNameGetRelation () #8 0x4000000000082e40 in relation_openr () #9 0x4000000000083910 in heap_openr () #10 0x400000000060e6b0 in ScanPgRelation () #11 0x4000000000611d60 in RelationBuildDesc () #12 0x4000000000616e70 in RelationSysNameGetRelation () #13 0x4000000000082e40 in relation_openr () #14 0x4000000000083910 in heap_openr () #15 0x400000000060e6b0 in ScanPgRelation () #16 0x4000000000611d60 in RelationBuildDesc () #17 0x4000000000616e70 in RelationSysNameGetRelation () #18 0x4000000000082e40 in relation_openr () #19 0x4000000000083910 in heap_openr () #20 0x400000000060e6b0 in ScanPgRelation () #21 0x4000000000611d60 in RelationBuildDesc () #22 0x4000000000616e70 in RelationSysNameGetRelation () #23 0x4000000000082e40 in relation_openr () #24 0x4000000000083910 in heap_openr () (More stack frames follow...) (It also dumps core in the same place during initdb if CFLAGS='-O' is specified.) So it looks like the Itanium port is a little broken. Does anyone have an idea what needs to be done to fix it? -Neil
pgsql-hackers by date: