Documentation patch by Kevin L. McBride explaining LOCK_DEBUG options
in detail.

-- 
Greg Sabino Mullane
End Point Corporation 
Index: config.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/config.sgml,v
retrieving revision 1.179
diff -c -c -r1.179 config.sgml
*** config.sgml	19 May 2008 18:08:15 -0000	1.179
--- config.sgml	21 May 2008 00:03:09 -0000
***************
*** 5084,5098 ****
  
       <varlistentry>
        <term><varname>trace_locks</varname> (<type>boolean</type>)</term>
        <term><varname>trace_lwlocks</varname> (<type>boolean</type>)</term>
        <term><varname>trace_userlocks</varname> (<type>boolean</type>)</term>
!       <term><varname>trace_lock_oidmin</varname> (<type>boolean</type>)</term>
!       <term><varname>trace_lock_table</varname> (<type>boolean</type>)</term>
        <term><varname>debug_deadlocks</varname> (<type>boolean</type>)</term>
        <term><varname>log_btree_build_stats</varname> (<type>boolean</type>)</term>
        <listitem>
         <para>
!         Various other code tracing and debugging options.
         </para>
        </listitem>
       </varlistentry>
--- 5084,5244 ----
  
       <varlistentry>
        <term><varname>trace_locks</varname> (<type>boolean</type>)</term>
+       <indexterm>
+        <primary><varname>trace_locks</> configuration parameter</primary>
+       </indexterm>
+       <listitem>
+        <para>
+         If on, emit information about lock usage.  Information dumped
+         includes the type of lock operation, the type of lock and the unique
+         identifier of the object being locked or unlocked.  Also included
+         are bitmasks for the lock types already granted on this object as
+         well as for the lock types awaited on this object.  For each lock
+         type a count of the number of granted locks and waiting locks is
+         also dumped as well as the totals.  An example of the log file output
+         is shown here:
+        </para>
+        <para>
+         LOG:  LockAcquire: new: lock(0xb7acd844) id(24688,24696,0,0,0,1)
+               grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0
+               wait(0) type(AccessShareLock)
+        </para>
+        <para>
+         LOG:  GrantLock: lock(0xb7acd844) id(24688,24696,0,0,0,1)
+               grantMask(2) req(1,0,0,0,0,0,0)=1 grant(1,0,0,0,0,0,0)=1
+               wait(0) type(AccessShareLock)
+ 
+        </para>
+        <para>
+         LOG:  UnGrantLock: updated: lock(0xb7acd844) id(24688,24696,0,0,0,1)
+               grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0
+               wait(0) type(AccessShareLock)
+        </para>
+        <para>
+         LOG:  CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1)
+               grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0
+               wait(0) type(INVALID)
+        </para>
+        <para>
+         Details of the structure being dumped may be found in
+         src/include/storage/lock.h
+        </para>
+        <para>
+         This parameter is only available if the <symbol>LOCK_DEBUG</symbol>
+         macro was defined when <productname>PostgreSQL</productname> was
+         compiled.
+        </para>
+       </listitem>
+      </varlistentry>
+ 
+      <varlistentry>
        <term><varname>trace_lwlocks</varname> (<type>boolean</type>)</term>
+       <indexterm>
+        <primary><varname>trace_lwlocks</> configuration parameter</primary>
+       </indexterm>
+       <listitem>
+        <para>
+         If on, emit information about lightweight lock usage.  Lightweight
+         locks are intended primarily to provide mutual exclusion of access
+         to shared-memory data structures.
+        </para>
+        <para>
+         This parameter is only available if the <symbol>LOCK_DEBUG</symbol>
+         macro was defined when <productname>PostgreSQL</productname> was
+         compiled.
+        </para>
+       </listitem>
+      </varlistentry>
+ 
+      <varlistentry>
        <term><varname>trace_userlocks</varname> (<type>boolean</type>)</term>
!       <indexterm>
!        <primary><varname>trace_userlocks</> configuration parameter</primary>
!       </indexterm>
!       <listitem>
!        <para>
!         If on, emit information about user lock usage.  Output is the same
!         as for <symbol>trace_locks</symbol>, only for user locks.
!        </para>
!        <para>
!         User locks were removed as of PostgreSQL version 8.2.  This option
!         currently has no effect.
!        </para>
!        <para>
!         This parameter is only available if the <symbol>LOCK_DEBUG</symbol>
!         macro was defined when <productname>PostgreSQL</productname> was
!         compiled.
!        </para>
!       </listitem>
!      </varlistentry>
! 
!      <varlistentry>
!       <term><varname>trace_lock_oidmin</varname> (<type>integer</type>)</term>
!       <indexterm>
!        <primary><varname>trace_lock_oidmin</> configuration parameter</primary>
!       </indexterm>
!       <listitem>
!        <para>
!         If set, do not trace locks for tables below this OID. (use to avoid
!         output on system tables)
!        </para>
!        <para>
!         This parameter is only available if the <symbol>LOCK_DEBUG</symbol>
!         macro was defined when <productname>PostgreSQL</productname> was
!         compiled.
!        </para>
!       </listitem>
!      </varlistentry>
! 
!      <varlistentry>
!       <term><varname>trace_lock_table</varname> (<type>integer</type>)</term>
!       <indexterm>
!        <primary><varname>trace_lock_table</> configuration parameter</primary>
!       </indexterm>
!       <listitem>
!        <para>
!         Unconditionally trace locks on this table (OID).
!        </para>
!        <para>
!         This parameter is only available if the <symbol>LOCK_DEBUG</symbol>
!         macro was defined when <productname>PostgreSQL</productname> was
!         compiled.
!        </para>
!       </listitem>
!      </varlistentry>
! 
!      <varlistentry>
        <term><varname>debug_deadlocks</varname> (<type>boolean</type>)</term>
+       <indexterm>
+        <primary><varname>debug_deadlocks</> configuration parameter</primary>
+       </indexterm>
+       <listitem>
+        <para>
+         If set, dumps information about all current locks when a
+         DeadLockTimeout occurs.
+        </para>
+        <para>
+         This parameter is only available if the <symbol>LOCK_DEBUG</symbol>
+         macro was defined when <productname>PostgreSQL</productname> was
+         compiled.
+        </para>
+       </listitem>
+      </varlistentry>
+ 
+      <varlistentry>
        <term><varname>log_btree_build_stats</varname> (<type>boolean</type>)</term>
+       <indexterm>
+        <primary><varname>log_btree_build_stats</> configuration parameter</primary>
+       </indexterm>
        <listitem>
         <para>
!         If set, logs system resource usage statistics (memory and CPU) on
!         various btree operations.
!        </para>
!        <para>
!         This parameter is only available if the <symbol>BTREE_BUILD_STATS</symbol>
!         macro was defined when <productname>PostgreSQL</productname> was
!         compiled.
         </para>
        </listitem>
       </varlistentry>
-- 
Sent via pgsql-patches mailing list (pgsql-patches@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-patches

Reply via email to