diff options
author | Bruce Momjian <bruce@momjian.us> | 2006-10-10 00:29:15 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2006-10-10 00:29:15 +0000 |
commit | 61c91fd2d22c97fd942ca67f458af5dc364f5fab (patch) | |
tree | b25e9b354c18151dca88541ee719bab8087cc400 /doc/FAQ_Solaris | |
parent | 7cec8b4e4acedec1dbc8a576d4f862eb1c0c0759 (diff) | |
download | postgresql-61c91fd2d22c97fd942ca67f458af5dc364f5fab.tar.gz postgresql-61c91fd2d22c97fd942ca67f458af5dc364f5fab.zip |
Backpatch FAQs to 8.1.X.
Diffstat (limited to 'doc/FAQ_Solaris')
-rw-r--r-- | doc/FAQ_Solaris | 164 |
1 files changed, 123 insertions, 41 deletions
diff --git a/doc/FAQ_Solaris b/doc/FAQ_Solaris index 9d6b8f97b15..78a003120bf 100644 --- a/doc/FAQ_Solaris +++ b/doc/FAQ_Solaris @@ -1,11 +1,9 @@ ============================================================ Frequently Asked Questions (FAQ) for PostgreSQL Sun Solaris specific -to be read in conjunction with the installation instructions +To be read in conjunction with the installation instructions. ============================================================ -last updated: $Date: 2003/10/09 17:11:13 $ - -current maintainer: Peter Eisentraut <peter_e@gmx.net> +Last updated: $Date: 2006/10/10 00:29:14 $ Contents: @@ -15,73 +13,89 @@ Contents: 3) Why does configure complain about a failed test program? 4) Why does my 64-bit build sometimes crash? 5) How can I compile for optimum performance? +6) How to compile PostgreSQL with Sun Studio? +7) Where I can download prepared Solaris packages? +8) How to tune PostgreSQL and Solaris for best performance? +9) Can I use dtrace for tracing PostgreSQL? 1) What tools do I need to build and install PostgreSQL on Solaris? You will need -- GNU zip (for installing the documentation) -- GNU make -- GNU readline library (optional) -- GCC (if you don't have Sun's compiler) + GNU zip (for installing the documentation) + GNU make + GNU readline library (optional) + Sun Studio CC or GCC + +You can download Sun Studio from: +http://developers.sun.com/prodtech/cc/downloads/index.jsp + +Many of GNU tools are integrated into the Solaris 10 or they are +present on the Solaris companion CD. + +If you like packages for older version of Solaris, you can find these +tools here: -If you like Solaris packages, you can find these tools here: -http://www.sunfreeware.com + http://www.sunfreeware.com or http://www.blastwave.org If you prefer sources, look here: -http://www.gnu.org/order/ftp.html -You can build with either GCC or Sun's compiler suite. We have heard -reports of problems when using gcc 2.95.1; gcc 2.95.3 or later is -recommended. If you are using Sun's compiler, be careful *not* to -select /usr/ucb/cc; use /opt/SUNWspro/bin/cc. + http://www.gnu.org/order/ftp.html + +You can build with either GCC or Sun's compiler suite. For better code +optimalization Sun's compiler is strongly recommended on the SPARC +architecture. We have heard reports of problems when using gcc 2.95.1; +gcc 2.95.3 or later is recommended. If you are using Sun's compiler, be +careful *not* to select /usr/ucb/cc; use /opt/SUNWspro/bin/cc. 2) Why do I get problems when building with OpenSSL support? -When you build PostgreSQL with OpenSSL support you might get -compilation errors in the following files: +When you build PostgreSQL with OpenSSL support you might get compilation +errors in the following files: -src/backend/libpq/crypt.c -src/backend/libpq/password.c -src/interfaces/libpq/fe-auth.c -src/interfaces/libpq/fe-connect.c + src/backend/libpq/crypt.c + src/backend/libpq/password.c + src/interfaces/libpq/fe-auth.c + src/interfaces/libpq/fe-connect.c This is because of a namespace conflict between the standard /usr/include/crypt.h header and the header files provided by OpenSSL. Upgrading your OpenSSL installation to version 0.9.6a fixes this -problem. +problem. Solaris 9 and above already newer version of OpenSSL. 3) Why does configure complain about a failed test program? -This is probably a case of the run-time linker being unable to find -libz or some other non-standard library, such as libssl. To point it -to the right location, set the LD_LIBRARY_PATH environment variable, -e.g., - -LD_LIBRARY_PATH=/usr/local/lib:/usr/local/ssl/lib -export LD_LIBRARY_PATH +This is probably a case of the run-time linker being unable to find some +library. On solaris 8 and older it should be libz or some other +non-standard library, such as libssl. To point it to the right +location, set the LD_LIBRARY_PATH environment variable, e.g., -and restart configure. You will also have to keep this setting -whenever you run any of the installed PostgreSQL programs. + LD_LIBRARY_PATH=/usr/sfw/lib:/opt/sfw/lib:/usr/local/lib + export LD_LIBRARY_PATH -Alternatively, set the environment variable LD_RUN_PATH. See the -ld(1) man page for more information. +and restart configure. You will also have to keep this setting whenever +you run any of the installed PostgreSQL programs. Alternatively, set +the environment variable LD_RUN_PATH. See the ld(1) man page for more +information. 4) Why does my 64-bit build sometimes crash? On Solaris 7 and older, the 64-bit version of libc has a buggy vsnprintf -routine, which leads to erratic core dumps in PostgreSQL. The simplest known -workaround is to force PostgreSQL to use its own version of vsnprintf rather -than the library copy. To do this, after you run 'configure' edit a file -produced by configure: +routine, which leads to erratic core dumps in PostgreSQL. The simplest +known workaround is to force PostgreSQL to use its own version of +vsnprintf rather than the library copy. To do this, after you run +'configure' edit a file produced by configure: In src/Makefile.global, change the line + LIBOBJS = + to read + LIBOBJS = snprintf.o (There might be other files already listed in this variable. Order @@ -92,10 +106,78 @@ Then build as usual. 5) How can I compile for optimum performance? -Try using the "-fast" compile flag. The binaries might not be portable to -other Solaris systems, and you might need to compile everything that links -to PostgreSQL with "-fast", but PostgreSQL will run significantly faster, -50% faster on some tests. +On SPARC architecture Sun Studio is strongly recommended for +compilation. Try using -xO5 optimalization flag to generate +significantly faster binaries. Do not use any flags which modify +behavior of floating point operations and errno processing (e.g. +-fast). These flags should raise some nonstandard PostgreSQL behavior +for example in the date/time computing. + +If you do not reason to use 64-bit binaries on SPARC, prefer 32-bit +version. The 64-bit operations are slower and 64-bit binaries are slower +then 32-bits. And on other side a 32-bit code on the AMD64 CPU family is +not native and that is why 32-bit code is significant slower on this +CPU family. + + +6) How to compile PostgreSQL with Sun Studio? + +On Solaris 10 you can performed following steps: + + export CC=/opt/SUNWspro/bin/cc + export CFLAGS=-xO5 + export LDFLAGS=-lm + ./configure --without-readline + gmake + + +7) Where I can download prepared Solaris packages? + +The PostgreSQL is bundled with Solaris 10 (from update 2). Official +packages are too available on +http://pgfoundry.org/projects/solarispackages/. Packages for older +Solaris version (8,9) you can download from: http://www.sunfreeware.com +or http://www.blastwave.org + + +8) How to tune PostgreSQL and Solaris for best performance? + +Some tuning tricks can be found here: + + http://www.sun.com/servers/coolthreads/tnb/applications_postgresql.jsp + +This article is primary focused on T2000 platform, however, many of +recommendations are general for other hardware with Solaris. + + +9) Can I use dtrace for tracing PostgreSQL? + +The PostgreSQL 8.2 has implemented dtrace support. You can enable it by +the --enable-dtrace configure switch. If you want to compile a 64-bit +code with dtrace you must specify DTRACEFLAGS='-64', e.g. + +Using gcc compiler: + + $ ./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGS='-64' ... + +Using Sun compiler: + + $ configure CC='/opt/SUNWspro/bin/cc -xtarget=native64' --enable-dtrace DTRACEFLAGS='-64' + + +If you have some problem with postgres linking, looks like: + + Undefined first referenced + symbol in file + AbortTransaction utils/probes.o + CommitTransaction utils/probes.o + ld: fatal: Symbol referencing errors. No output written to postgres + collect2: ld returned 1 exit status + gmake: *** [postgres] Error 1 + +check if you have Solaris 10u3 or newer installed on your box. You can +also find more information here: + http://blogs.sun.com/robertlor/entry/user_level_dtrace_probes_in |