Sun Solaris specific
To be read in conjunction with the installation instructions.
============================================================
-Last updated: $Date: 2006/10/10 22:19:08 $
+Last updated: $Date: 2006/12/02 09:29:51 $
Contents:
8) Can I use DTrace for tracing PostgreSQL?
-PostgreSQL 8.2 has implemented DTrace support. You can enable it by
-the --enable-dtrace configure switch. If you want to build 64-bit
-binaries 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'
-
+Yes, see the chapter "Monitoring Database Activity" in the documentation
+for further information.
If you see the linking of the postgres executable abort with an error
message like
-<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.267 2006/12/01 21:17:51 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.268 2006/12/02 09:29:51 petere Exp $ -->
<chapter id="installation">
<title><![%standalone-include[<productname>PostgreSQL</>]]>
specified in the environment variable
<envar>DTRACEFLAGS</envar>.
</para>
+
+ <para>
+ To include DTrace support in a 64-bit binary, specify
+ <literal>DTRACEFLAGS="-64"</> to configure. For example,
+ using the GCC compiler:
+<screen>
+./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGS='-64' ...
+</screen>
+ Using Sun's compiler:
+<screen>
+./configure CC='/opt/SUNWspro/bin/cc -xtarget=native64' --enable-dtrace DTRACEFLAGS='-64' ...
+</screen>
+ </para>
</listitem>
</varlistentry>
-<!-- $PostgreSQL: pgsql/doc/src/sgml/monitoring.sgml,v 1.40 2006/12/02 00:42:54 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/monitoring.sgml,v 1.41 2006/12/02 09:29:51 petere Exp $ -->
<chapter id="monitoring">
<title>Monitoring Database Activity</title>
</para>
<sect2 id="compiling-for-trace">
- <title>Compiling for Dynamic Trace</title>
+ <title>Compiling for Dynamic Tracing</title>
<para>
By default, trace points are disabled, so you will need to
explicitly tell the configure script to make the probes available
in <productname>PostgreSQL</productname>. To include DTrace support
- in a 32-bit binary, specify <option>--enable-dtrace</> to configure.
- For example:
-<programlisting>
- $ ./configure --enable-dtrace ...
-</programlisting>
- To include DTrace support in a 64-bit binary, specify
- <option>--enable-dtrace</>
- and <literal>DTRACEFLAGS="-64"</> to configure. For example,
- using the gcc compiler:
-<programlisting>
- $ ./configure CC='gcc -m64' --enable-dtrace DTRACEFLAGS='-64' ...
-</programlisting>
- Using Sun's compiler:
-<programlisting>
- $ ./configure CC='/path_to_sun_compiler/cc -xtarget=native64' --enable-dtrace DTRACEFLAGS='-64' ...
-</programlisting>
- </para>
+ specify <option>--enable-dtrace</> to configure. See <xref
+ linkend="install-procedure"> for further information.
</sect2>
<sect2 id="trace-points">
<para>
A few standard trace points are provided in the source code
(of course, more can be added as needed for a particular problem).
- These are:
+ These are shown in <xref linkend="trace-point-table">.
</para>
<table id="trace-point-table">
Note how the double underline in trace point names needs to
be replaced by a hyphen when using D script.
When executed, the example D script gives output such as:
-<programlisting>
+<screen>
# ./txn_count.d `pgrep -n postgres`
^C
Start 71
Commit 70
-Abort 1
Total time (ns) 2312105013
-</programlisting>
+</screen>
</para>
<para>
You should remember that trace programs need to be carefully written and
<para>
New trace points can be defined within the code wherever the developer
- desires, though this will require a re-compile.
+ desires, though this will require a recompilation.
</para>
<para>
occurrence of an event can be achieved with a single line, using
just the trace point name, e.g.
<programlisting>
- PG_TRACE (my__new__trace__point);
+PG_TRACE (my__new__trace__point);
</programlisting>
More complex trace points can be provided with one or more variables
for inspection by the dynamic tracing utility by using the
<literal>PG_TRACE</><replaceable>n</> macro that corresponds to the number
of parameters after the trace point name:
<programlisting>
- PG_TRACE3 (my__complex__event, varX, varY, varZ);
+PG_TRACE3 (my__complex__event, varX, varY, varZ);
</programlisting>
The definition of the transaction__start trace point is shown below:
<programlisting>
</para>
<para>
- You should take care that the datatypes specified for the probe arguments
+ You should take care that the data types specified for the probe arguments
match the datatypes of the variables used in the <literal>PG_TRACE</>
macro. This is not checked at compile time. You can check that your newly
added trace point is available by recompiling, then running the new binary,