Re: bogosort (was Re: Re: [RFC][PATCH -mm 5/6] Freezer: Use freezing timeout more efficiently)

Oleg Nesterov
2007-07-10T21:38:36Z

On 07/10, Pavel Machek wrote:
>
> > > > No, we can't do that:
> > > >
> > > > Imagine we have single uninterruptible task that waits for disk. It
> > > > would exit uninterruptible state in 10msec, *but* you give up and
> > > > unfreeze all. Now, another task goes uninterruptible waiting for
> > > > disk and situation repeats. Livelock.
> > >
> > > For how many times would that have to repeat before 30s of timeout expires?
> > >
> > > Sorry, but I don't buy this argument. :-)
> > >
> > > > Yes, this might play with races in interresting ways and help fuse,
> > > > but we do not want the livelock in the first place.
> > >
> > > I think that the "livelock" will never happen.
> > >
> > > Besides, we can add another timeout for breaking the loop from a "locked up"
> > > state.
> >
> > Actually I like this idea. :-)
> >
> > I have updated the patch to use the additional timeout, please have a look
> > (below).
>
> Yes, this one could actually work... _really_ inefficiently.

Why inefficiently?

I am asking because I am curious (I never used freezer for myself): how long
does it take to freeze all tasks? I can't believe we need 20 seconds unless
something goes wrong. It looks very natural to do what Rafael suggests.

Oleg.