Re: [PATCH] cpuacct: add a branch prediction

From: KAMEZAWA Hiroyuki
Date: Thu Feb 26 2009 - 03:42:08 EST


On Thu, 26 Feb 2009 16:35:33 +0800
Li Zefan <lizf@xxxxxxxxxxxxxx> wrote:

> ca is not checked before hierarchy support, and it's a side-effect.
>
> Before cpuacct is initialized, css == task->cgroups->subsys[cpuacct_subsys] == NULL,
> but ca = task_ca(tsk) is not necessarily NULL, unless struct cgroup_subsys_state is the
> first member of struct cpuacct.
>
> And the above code actually should be:
>
> do {
> ...
> } while (ca->parent);
>
I'll send no more objections to this patch itself.

But IMHO, this loop is tooo bad, I think. The hierarchy information should be gathered by
read-side and the total code should be

void charge_statistics(tsk, cputime)
{
ca = task_ca(tsk)
/* ca can be null while init */
if (likely(ca)) {
u64 *cpuusage = percpu_ptr(ca->cpuusage, task_cpu(tsk))
*cpuusage += cputime
}
}
(Need changes to read-side and create/destroy of cpuacct cgroups.)

Thanks,
-Kame

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