Tom Lane wrote:
> I have thought of a further refinement to the patch I produced
> yesterday. Assume that there are multiple waiters blocked on (eg)
> BufMgrLock. After we release the first one, we want the currently
> running process to be able to continue acquiring and releasing the lock
> for as long as its time quantum holds out. But in the patch as given,
> each acquire/release cycle releases another waiter. This is probably
> not good.
>
> Attached is a modification that prevents additional waiters from being
> released until the first releasee has a chance to run and acquire the
> lock. Would you try this and see if it's better or not in your test
> cases? It doesn't seem to help on a single CPU, but maybe on multiple
> CPUs it'll make a difference.
>
> To try to make things simple, I've attached the mod in two forms:
> as a diff from current CVS, and as a diff from the previous patch.
This does seem like a nice optimization. I will try to test it tomorrow
but I doubt I will see any change on BSD/OS.
-- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610)
853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill,
Pennsylvania19026