Re: gprof SELECT COUNT(*) results - Mailing list pgsql-hackers

From Qingqing Zhou
Subject Re: gprof SELECT COUNT(*) results
Date
Msg-id Pine.LNX.4.58.0511242354580.13944@eon.cs
Whole thread Raw
In response to Re: gprof SELECT COUNT(*) results  (Qingqing Zhou <zhouqq@cs.toronto.edu>)
List pgsql-hackers

On Thu, 24 Nov 2005, Qingqing Zhou wrote:
>
> I may need to write some separate tests to see if this is what we should
> pay for bus lock instruction.
>

Here I come up with a test program to see how spinlock costs:

$/pgsql/src/backend/storage/lmgr#./a.out
Spinlock pair(2648542) duration: 143.134 ms
$/pgsql/src/backend/storage/lmgr#./a.out
Spinlock pair(2648542) duration: 143.107 ms
$/pgsql/src/backend/storage/lmgr#./a.out
Spinlock pair(2648542) duration: 143.104 ms

So seems lock instruction really costs ...

Regards,
Qingqing

---

/** spintest.c -*    Test spinlock acquire/release without concurrency.**      To compile (the -pg is to match the
gprofmake I used):*        backend/storage/lmgr#gcc -O2 -pg -Wall -I ../../../include/ spintest.c*/
 

#include "postgres.h"
#include "storage/lwlock.h"
#include "storage/spin.h"
#include <sys/time.h>

#define TIMES     2648542

int NumLocks = 0;

void
s_lock(volatile slock_t *lock, const char *file, int line)
{fprintf(stderr, "should never be here\n");abort();
}

int
main(void)
{int    i;slock_t    lock = 0;struct timeval start_t, stop_t;long usecs;
gettimeofday(&start_t, NULL);for (i = 0; i < TIMES; i ++){    SpinLockAcquire_NoHoldoff(&lock);
    /* pretend to do something */    NumLocks ++;
    SpinLockRelease_NoHoldoff(&lock);}     gettimeofday(&stop_t, NULL);

if (stop_t.tv_usec < start_t.tv_usec)      {    stop_t.tv_sec--;    stop_t.tv_usec += 1000000;}
usecs = (long) (stop_t.tv_sec - start_t.tv_sec) * 1000000    + (long) (stop_t.tv_usec - start_t.tv_usec);
fprintf (stdout, "Spinlock pair(%u) duration: %ld.%03ld ms\n",    TIMES,    (long) ((stop_t.tv_sec - start_t.tv_sec) *
1000+        (stop_t.tv_usec - start_t.tv_usec) / 1000),    (long) (stop_t.tv_usec - start_t.tv_usec) % 1000);
 
return 0;
}


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: gprof SELECT COUNT(*) results
Next
From: Olivier Thauvin
Date:
Subject: Re: PL/php in pg_pltemplate