Re: [RFC -v2 PATCH 2/3] sched: add yield_to function

From: Avi Kivity
Date: Fri Dec 17 2010 - 10:09:57 EST


On 12/17/2010 08:56 AM, Mike Galbraith wrote:
> Surely that makes it a reasonable idea to call yield, and
> get one of the other tasks on the current CPU running for
> a bit?

There's nothing wrong with trying to give up the cpu. It's the concept
of a cross cpu yield_to() that I find mighty strange.

What's so strange about it? From a high level there are N runnable tasks contending for M cpus. If task X really needs task Y to run, what does it matter if task Y last ran on the same cpu as task X or not?

Do I correctly read between the lines that CFS maintains complete fairness only on a cpu, but not globally? I hope I'm wrong, but

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ P COMMAND
8648 avi 20 0 106m 1092 148 R 80.4 0.0 0:26.03 1 bash
8656 avi 20 0 106m 1080 136 R 47.3 0.0 0:14.73 0 bash
8652 avi 20 0 106m 1080 136 R 47.0 0.0 0:15.36 0 bash

doesn't look too good (three infinite loops in bash started at the roughly same time)

--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.

--
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/