Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitbe58282

Browse files
committed
Tom Lane wrote:
> > For a while I though it might be because we are using an alpha TAS in> > the spinlock rather than the old semaphore. I replaced our spinlock> > with the standard one and it made no difference. We have been running> > with our spinlock implementation for nearly 2 months on a production> > database now without a hitch, so I think it is ok. Did I ever submit> > any patches for the Alpha spinlock?>> Not that I recall. We did get some advice from some Alpha gurus at DEC> who seemed to think the existing TAS code is OK. What was it that you> felt needed to be improved?The current code uses semaphores, which has the advantage that it workswell even on multi-processor machines, but the disadvantage that it is notthe fastest way possible. Writing a spinlock on Alpha for SMP machines isvery difficult, as you need to deal with memory barriers. A real mess. Butthen one of the people at Compaq pointed out to us that there is aready-made routine on Alpha. We implemented it with the two patches below.I ran tests with lots of parallel back-ends and got around a 10% speedincrease. I include the two patches. Perhaps some of the other peoplerunning Tru64 can have a look at these as well.Cheers,Adriaan Joubert
1 parente5e5de8 commitbe58282

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

‎src/include/port/osf.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
#defineUSE_POSIX_TIME
22
#defineDISABLE_XOPEN_NLS
33
#defineHAS_TEST_AND_SET
4-
#include<sys/mman.h>/* for msemaphore */
5-
typedefmsemaphoreslock_t;
4+
/*#include <sys/mman.h>*//* for msemaphore */
5+
/*typedef msemaphore slock_t;*/
6+
#include<alpha/builtins.h>
7+
typedefvolatilelongslock_t;
68

79
/* some platforms define __alpha, but not __alpha__ */
810
#if defined(__alpha)&& !defined(__alpha__)

‎src/include/storage/s_lock.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.71 2000/07/05 16:09:31 momjian Exp $
11+
* $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.72 2000/10/08 04:38:21 momjian Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -270,10 +270,15 @@ tas(slock_t *s_lock)
270270
* Note that slock_t on the Alpha AXP is msemaphore instead of char
271271
* (see storage/ipc.h).
272272
*/
273+
#include<alpha/builtins.h>
274+
#if0
273275
#defineTAS(lock) (msem_lock((lock), MSEM_IF_NOWAIT) < 0)
274276
#defineS_UNLOCK(lock) msem_unlock((lock), 0)
275277
#defineS_INIT_LOCK(lock)msem_init((lock), MSEM_UNLOCKED)
276278
#defineS_LOCK_FREE(lock) (!(lock)->msem_state)
279+
#else
280+
#defineTAS(lock) (__INTERLOCKED_TESTBITSS_QUAD((lock),0))
281+
#endif
277282

278283
#else/* i.e. not __osf__ */
279284

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp