> > NOTICE: LockRelease: no such lock
> >
> > I'm afraid now the locking is broken. Will look into more.
>
> Next try would be _check_lock (found in sys/atomic_op.h):
>
> Description (from man page)
>
> The _check_lock subroutine performs an atomic (uninterruptible) sequence of
> operations. The compare_and_swap subroutine is similar, but does not issue
> synchronization instructions and therefore is inappropriate for updating lock
> words.
>
> replace the TAS define with:
> #define TAS(lock) _check_lock(lock, 0, 1)
>
> > with LinuxPPC asm: 2m9.340s
> > with cs: 10m11.15s
> > with fetch_and_or: 3m55.19s
>
> with _check_lock: 3m29.990s
>
> I think that the culprit may also be the S_UNLOCK (use _clear_lock) ?
Thanks. I will try with it.
BTW, I'm still wondering why 7.2 is slower than 7.1 on AIX. Tom said
cs() is responsible for that. But not only 7.2 but 7.1 uses cs(). It
seems cs() does not explain the difference of the performance.
--
Tatsuo Ishii