Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: [vmlocking] src/sys/kern



On Mon, Sep 10, 2007 at 02:12:19PM -0700, Jason Thorpe wrote:

> Sun didn't seem to think that a lock would be too terrible in this  
> case.  Why not take their advice?

Because I think we can do better than that! Take a ficticious example: an
i386 system doing 50,000 alloc / free pairs a second that can be handled
purely by the CPU local part of its caches. Since it's x86 it doesn't need
to do memory barriers beyond the interlocked cmpxchg in mutex_enter(), and
it can do mutex_exit() with a non-interlocked cmpxchg. It depends on the CPU
you're using but say it's about 150 cycles to grab a lock. There will be an
aborted trip through mutex_enter() half of the time because some of the
caches are spinlocked. So each alloc / free pair spends perhaps 450 cycles
on locking, times 50,000 that's a lot of cycles, and it doesn't take into
account the serializing properties of the interlocked instructions.

Andrew



Home | Main Index | Thread Index | Old Index