Re: [Announce] [patch] Modular Scheduler Core and Completely Fair Scheduler [CFS]

Eric W. Biederman
2007-04-14T18:42:30Z

Willy Tarreau <w@1wt.eu> writes:

> On Sat, Apr 14, 2007 at 07:54:33PM +0200, Ingo Molnar wrote:
>>
>> * Eric W. Biederman <ebiederm@xmission.com> wrote:
>>
>> > > Thinking about it, I don't know if there are calls to schedule()
>> > > while switching from tty1 to tty2. Alt-F2 had no effect anymore, and
>> > > "chvt 2" simply blocked. It would have been possible that a
>> > > schedule() call somewhere got starved due to the load, I don't know.
>> >
>> > It looks like there is a call to schedule_work.
>>
>> so this goes over keventd, right?
>>
>> > There are two pieces of the path. If you are switching in and out of a
>> > tty controlled by something like X. User space has to grant
>> > permission before the operation happens. Where there isn't a gate
>> > keeper I know it is cheaper but I don't know by how much, I suspect
>> > there is still a schedule happening in there.
>>
>> Could keventd perhaps be starved? Willy, to exclude this possibility,
>> could you perhaps chrt keventd to RT priority? If events/0 is PID 5 then
>> the command to set it to SCHED_FIFO:50 would be:
>>
>> chrt -f -p 50 5
>>
>> but ... events/0 is reniced to -5 by default, so it should definitely
>> not be starved.
>
> Well, since I merged the fair-fork patch, I cannot reproduce (in fact,
> bash forks 1000 processes, then progressively execs scheddos, but it
> takes some time). So I'm rebuilding right now. But I think that Linus
> has an interesting clue about GPM and notification before switching
> the terminal. I think it was enabled in console mode. I don't know
> how that translates to frozen xterms, but let's attack the problems
> one at a time.

I think it is a good clue. However the intention of the mechanism is
that only processes that change the video mode on a VT are supposed to
use it. So I really don't think gpm is the culprit. However it easily could
be something else that has similar characteristics.

I just realized we do have proof that schedule_work is actually working
because SAK works, and we can't sanely do SAK from interrupt context
so we call schedule work.

Eric