Re: RFC: cgroups aware proc

From: Marian Marinov
Date: Mon Jan 13 2014 - 19:59:04 EST


On 01/13/2014 07:12 PM, Peter Zijlstra wrote:
On Mon, Jan 13, 2014 at 06:23:50PM +0200, Marian Marinov wrote:
Hello Peter,

I need help with the scheduler.

I'm currently trying to patch the /proc/loadavg to show the load that is
only related to the processes from the current cgroup.

I looked trough the code and I was hoping that tsk->sched_task_group->cfs_rq
struct will give me the needed information, but unfortunately for me, it did
not.

Can you advise me, how to approach this problem?

Yeah, don't :-) Really, loadavg is a stupid metric.

Yes... stupid, but unfortunately everyone is looking at it :(


I'm totally new to the scheduler code.

Luckily you won't actually have to touch much of it. Most of the actual
loadavg code lives in the first ~400 lines of kernel/sched/proc.c, read
and weep. Its one of the best documented bits around.

I looked trough it but I don't understand how to introduce the per cgroup calculation.

I looked trough the headers and found the following, which is already implemented.

task->sched_task_group->load_avg
task->sched_task_group->cfs_rq->load_avg
task->sched_task_group->cfs_rq->load.weight
task->sched_task_group->cfs_rq->runnable_load_avg

Unfortunately there is almost no documentation for these elements of the cfs_rq and task_group structs.

It seams to me that part of the per task group loadavg code is already present.


Your proposition however is extremely expensive, you turn something
that's already expensive O(nr_cpus) into something O(nr_cpus *
nr_cgroups).

I'm fairly sure people will not like that, esp. for something of such
questionable use as the loadavg -- its really only a pretty number that
doesn't mean all that much.

I know that its use is questionable but in my case I need to have it, or I will not be able to offer correct loadavg values in the containers.



-------- Original Message --------
From: Li Zefan <lizefan@xxxxxxxxxx>

Then you should add Peter, Ingo and LKML to your Cc list. :)

You failed that, let me fix that.



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