Re: floppy.c soft lockup

Mark Hounschell
2007-06-06T13:12:26Z

Mark Hounschell wrote:
> Oleg Nesterov wrote:
>> On 06/02, Mark Hounschell wrote:
>>> Jun 2 16:36:11 harley kernel: ERR!! events/1 flush hang: c201dbc0
>>> c201dbc0 10012 10012
>>> Jun 2 16:36:11 harley kernel: CURR: 7974 7974 vrsx 93 26
>>> Jun 2 16:36:11 harley kernel: wq_barrier_func+0x0/0x8
>>> Jun 2 16:36:11 harley kernel: vmstat_update+0x0/0x24
>>> Jun 2 16:36:11 harley kernel: ----
>>> Jun 2 16:36:11 harley kernel: cache_reap+0x0/0xf4
>> As expected.
>>
>> Note that ->nivcsw/->nvcsw doesn't change. There is no "spare time"
>> on CPU 1, "vrsx" monopolizes CPU. events/1->cache_reap() was preempted
>> by vrsx, it had no chance to run since then. Note that jobs == 7974
>> doesn't change too. I forgot to print cwq->thread->state, but it should
>> be TASK_RUNNING. It would not be possible to kill vrsx if cache_reap()
>> stalled.
>>
>> I don't think this is a kernel problem, vrsx breaks flush_workqueue().
>> Ingo can answer authoritatively, but I think SCHED_RR/SCHED_FIFO were
>> not designed to be 100% cpu-bound.
>>
>> That said, I think it makes sense to get rid of flush_scheduled_work()
>> in floppy.c.
>>
>
> Oleg, thanks for your time in diagnosing this.
>
> As far as a 100% CPU bound task being a valid thing to do, it has been
> done for many years on SMP machines. Any kernel limitation on this
> surely must be considered a bug?
>

Could someone authoritatively comment on this? Is a SCHED_RR/SCHED_FIFO
100% Cpu bound process supported in an SMP env on Linux? (vanilla or -rt)

Thanks and Regards
Mark