1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-11 10:01:57 +03:00

DTrace support, with a small initial set of probes

by Robert Lor
This commit is contained in:
Peter Eisentraut
2006-07-24 16:32:45 +00:00
parent 9dc34b5feb
commit e9b4969062
12 changed files with 230 additions and 11 deletions

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/storage/lmgr/lock.c,v 1.168 2006/07/23 23:08:46 tgl Exp $
* $PostgreSQL: pgsql/src/backend/storage/lmgr/lock.c,v 1.169 2006/07/24 16:32:45 petere Exp $
*
* NOTES
* A lock table is a shared memory hash table. When
@ -796,8 +796,13 @@ LockAcquire(const LOCKTAG *locktag,
/*
* Sleep till someone wakes me up.
*/
PG_TRACE2(lock__startwait, locktag->locktag_field2, lockmode);
WaitOnLock(locallock, owner);
PG_TRACE2(lock__endwait, locktag->locktag_field2, lockmode);
/*
* NOTE: do not do any material change of state between here and
* return. All required changes in locktable state must have been

View File

@ -15,7 +15,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/storage/lmgr/lwlock.c,v 1.41 2006/07/23 03:07:58 tgl Exp $
* $PostgreSQL: pgsql/src/backend/storage/lmgr/lwlock.c,v 1.42 2006/07/24 16:32:45 petere Exp $
*
*-------------------------------------------------------------------------
*/
@ -420,6 +420,8 @@ LWLockAcquire(LWLockId lockid, LWLockMode mode)
block_counts[lockid]++;
#endif
PG_TRACE2(lwlock__startwait, lockid, mode);
for (;;)
{
/* "false" means cannot accept cancel/die interrupt here. */
@ -429,6 +431,8 @@ LWLockAcquire(LWLockId lockid, LWLockMode mode)
extraWaits++;
}
PG_TRACE2(lwlock__endwait, lockid, mode);
LOG_LWDEBUG("LWLockAcquire", lockid, "awakened");
/* Now loop back and try to acquire lock again. */
@ -438,6 +442,8 @@ LWLockAcquire(LWLockId lockid, LWLockMode mode)
/* We are done updating shared state of the lock itself. */
SpinLockRelease(&lock->mutex);
PG_TRACE2(lwlock__acquire, lockid, mode);
/* Add lock to list of locks held by this backend */
held_lwlocks[num_held_lwlocks++] = lockid;
@ -507,11 +513,13 @@ LWLockConditionalAcquire(LWLockId lockid, LWLockMode mode)
/* Failed to get lock, so release interrupt holdoff */
RESUME_INTERRUPTS();
LOG_LWDEBUG("LWLockConditionalAcquire", lockid, "failed");
PG_TRACE2(lwlock__condacquire__fail, lockid, mode);
}
else
{
/* Add lock to list of locks held by this backend */
held_lwlocks[num_held_lwlocks++] = lockid;
PG_TRACE2(lwlock__condacquire, lockid, mode);
}
return !mustwait;
@ -596,6 +604,8 @@ LWLockRelease(LWLockId lockid)
/* We are done updating shared state of the lock itself. */
SpinLockRelease(&lock->mutex);
PG_TRACE1(lwlock__release, lockid);
/*
* Awaken any waiters I removed from the queue.
*/