Обсуждение: Postgresql-8.4.6, 64bit, Solaris 10u9, dtrace

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

Postgresql-8.4.6, 64bit, Solaris 10u9, dtrace

От
dennis jenkins
Дата:
Hello Everyone,

    My goal is to install a 64-bit build of the latest Postgresql 8.4
(not ready for 9.0 yet) onto a Solaris 10u9 server (Intel chips,
X4270), with dtrace support.  Postgresql compiles just fine when
configured with "--disable-dtrace".  Attempting to compile when
configured with "--enable-dtrace" fails.  Specifically, the dtrace
compiler utility fails to compile "src/backend/utils/probes.d":

$ ./configure CC="gcc -m64" MAKE=gmake DTRACEFLAGS='-64'
--prefix=/opt/local/x64/postgresql-8.4.6 --enable-dtrace
--with-openssl --with-pam --enable-thread-safety --enable-debug
--with-libraries=/opt/local/x64/openssl-1.0.0c/lib:/opt/local/x64/readline-6.1/lib
--with-includes=/opt/local/x64/openssl-1.0.0c/include:/opt/local/x64/readline-6.1/include

$ gmake
(lots of output omitted)
dtrace: failed to link script utils/probes.d: an error was encountered
while processing access/transam/clog.o
gmake[2]: *** [utils/probes.o] Error 1

  Google reveals very little about this error.  Others reported
problems compiling Postgresql-8.2 with dtrace on Solaris 10u3.  A fix
was promised for 10u4.  I can only surmise that the fix failed.  The
reported issue was that dtrace was unable to create probes to
statically defined functions.

  Someone suggested building postgresql on Solaris Express (what will
become Solaris 11), and then installing the binaries on Solaris 10.
So I tried that.  I build Postgresql without dtrace and installed it
on Solaris 10.  I build a virtual machine with Oracle Solaris Express,
installed the gcc compiler and a few other tools.  I then build and
installed "readline", "openssl", "postgresql" and "slony" following my
build instructions, except that I did "--enable-dtrace" on postgresql.
 It built and installed just fine.  So I tarred up
"/opt/local/x64/postgresql-8.4.6" and copied the tarball to the
Solaris-10 server, renamed the existing install to
".../no-dtrace-postgresql", untarred the build with dtrace.  I then
fired up postgresql using my SMF script and it worked GREAT!!!!!

   Awesome I thought... Until I tried to use the same dtrace script
provided in section 26.4.3 "Using Probes" on the postgresql.org web
site (http://www.postgresql.org/docs/8.4/static/dynamic-trace.html).
I got this error:

# ./script.d 4759
dtrace: failed to compile script ./exp-1.d: line 3: probe description
postgresql4759:::transaction-start does not match any probes

  So I checked to see if there were ANY dtrace providers listed...

# dtrace -l
   ID   PROVIDER            MODULE                          FUNCTION NAME

  None.... "dtrace -l" on Solaris-11 lists 66,218 of them.

root@solaris-11:~# dtrace -l | wc -l
66218


  My questions are as follows:

1) Has anyone else successfully built Postgresql (v8 or v9) on
Solaris-10 with dtrace support?  If so, what did I do wrong?

2) Has anyone else successfully used dtrace on Postgresql (any build)
on SOlaris-10?

3) Any idea why dtrace itself is bjorked on Solaris-10?

Re: Postgresql-8.4.6, 64bit, Solaris 10u9, dtrace

От
dennis jenkins
Дата:
On Fri, Jan 28, 2011 at 1:19 PM, dennis jenkins
<dennis.jenkins.75@gmail.com> wrote:
> Hello Everyone,
>
>    My goal is to install a 64-bit build of the latest Postgresql 8.4
> (not ready for 9.0 yet) onto a Solaris 10u9 server (Intel chips,
> X4270), with dtrace support.

> ".../no-dtrace-postgresql", untarred the build with dtrace.  I then
> fired up postgresql using my SMF script and it worked GREAT!!!!!
>
>   Awesome I thought... Until I tried to use the same dtrace script
> provided in section 26.4.3 "Using Probes" on the postgresql.org web
> site (http://www.postgresql.org/docs/8.4/static/dynamic-trace.html).
>

    It occurred to me that since I was building and executing
postgresql in a local zone that I might not be able to use dtrace from
the local zone.  So I tried from the global zone.  I made a small bit
of progress.  I can list the dtrace providers, but unfortunately,
postgresql is not listed among them.

(root@server: <~>) # dtrace -l | wc -l
   51584

(root@server: <~>) # dtrace -l | grep postgresql | wc -l
       0

(root@server: <~>) # pgrep postgres
4754
4757
4760
4759
4758

(root@server: <~>) # ./exp-1.d 4754
dtrace: failed to compile script ./exp-1.d: line 3: probe description
postgresql4754:::transaction-start does not match any probes

(root@server: <~>) # ./exp-1.d 4757
dtrace: failed to compile script ./exp-1.d: line 3: probe description
postgresql4757:::transaction-start does not match any probes