On 05/03/2012 09:00 PM, Takuya Yoshikawa wrote: > On Thu, 03 May 2012 14:29:10 +0200 > Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: > >> On Thu, 2012-05-03 at 21:22 +0900, Takuya Yoshikawa wrote: >>> Although the real use case is out of this RFC patch, we are now discussing >>> a case in which we may hold a spin_lock for long time, ms order, depending >>> on workload; and in that case, other threads -- VCPU threads -- should be >>> given higher priority for that problematic lock. >> >> Firstly, if you can hold a lock that long, it shouldn't be a spinlock, > > I agree with you in principle, but isn't cond_resched_lock() there for that? > >> secondly why isn't TIF_RESCHED being set if its running that long? That >> should still make cond_resched_lock() break. > > I see. > > I did some tests using spin_is_contended() and need_resched() and saw > that need_resched() was called as often as spin_is_contended(), so > experimentally I understand your point. > > But as I could not see why spin_needbreak() was differently implemented > depending on CONFIG_PREEMPT, I wanted to understand the meaning. I think enable CONFIG_PREEMPT means allow preemption in kernel, so if disabled, we can't reschedule a task if it is running in kernel not the user space at a given time. As the cond_resched_lock() was invoked in kernel, and looks like cpu_relax() will give up cpu(I'm not sure whether this will invoke schedule on some arch, just because that name...), so we can't do break if CONFIG_PREEMPT disabled, because that will cause kernel preemption while not allowed. May be that's the reason why we need to consider CONFIG_PREEMPT in spin_needbreak(). Regards, Michael Wang > > Thanks, > Takuya > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html