Re: [reiserfs-list] Re: [PATCH] Significant performace improvements on reiserfs systems

Nikita Danilov
2001-09-21T12:33:19Z

Alan Cox writes:
> > In Solaris, before spinning on a busy spin-lock, thread checks whether
> > spin-lock holder runs on the same processor. If so, thread goes to sleep
> > and holder wakes it up on spin-lock release. The same, I guess is going
>
>
> > for interrupts that are served as separate threads. This way, one can
> > re-schedule with spin-locks held.
>
> This is one of the things interrupt handling by threads gives you, but the
> performance cost is not nice. When you consider that ksoftirqd when it
> kicks in (currently far too often) takes up to 10% off gigabit ethernet
> performance, you can appreciate why we don't want to go that path.

I guess, reasoning behind Solaris design was that you have to disable
interrupts during critical sections more frequently than they would
actually block in them. So, you lose on interrupt thread creation and
when interrupts really block on a lock, but you gain because there is no
more need to disable interrupts when accessing data shared between
interrupt handler and the rest of the kernel. This can ultimately amount
to some net advantage especially when coupled with some sort of lazy
interrupt thread creation.

>
> Our spinlock paths are supposed to be very small and predictable. Where
> there is sleeping involved we have semaphores.
>
> As lockmeter shows we still have a few io_request_lock cases at least where
> we lock for far too long

Reiserfs also likes to keep BKL while doing binary searches within nodes
of a tree.

>
> Alan

Nikita.

> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/