Re: [patch 00/41] cpu alloc / cpu ops v3: Optimize per cpu access

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

 



On Fri, 30 May 2008, Peter Zijlstra wrote:

> Remember, horribly long on -rt is in the order of ~30us.
> 
> See for instance the path:
> 
>  flush_slab()
>    slab_lock() <-- bit_spinlock
>    deactive_slab()
>      loop over objects

looping over all objects is rarely ever done.

>      unfreeze_slab()
>        add_partial()
>          spin_lock(&n->list_lock) <-- another lock
> 
> all of that runs with preempt disabled, and worse it can spin for some
> indefinite amount of time.
> 
> That is totally unacceptable on -rt, so we need to make it all
> preemptible and use sleeping locks (IRQ inversion can't happen, for the
> only thing that runs in hardirq is try_to_wake_up()).

The way I thought about -rt was that it would convert the 
spinlocks to semaphores. Isnt it possible to sleep on a bit spinlock in 
-rt? Aside from that I would have thought that the simple disabling of 
rescheduling on another processor in some context would gets us there. 

Never thought about the details though.
--
To unsubscribe from this list: send the line "unsubscribe linux-arch" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux