Re: [RFC][2/3] Account and control virtual address space allocations

From: Balbir Singh
Date: Sun Mar 16 2008 - 22:59:27 EST


Paul Menage wrote:
> On Mon, Mar 17, 2008 at 1:30 AM, Balbir Singh <balbir@xxxxxxxxxxxxxxxxxx> wrote:
>> /*
>> + * Check if the current cgroup exceeds its address space limit.
>> + * Returns 0 on success and 1 on failure.
>> + */
>> +int mem_cgroup_update_as(struct mm_struct *mm, long nr_pages)
>> +{
>> + int ret = 0;
>> + struct mem_cgroup *mem;
>> + if (mem_cgroup_subsys.disabled)
>> + return ret;
>> +
>> + rcu_read_lock();
>> + mem = rcu_dereference(mm->mem_cgroup);
>> + css_get(&mem->css);
>> + rcu_read_unlock();
>> +
>
> How about if this function avoided charging the root cgroup? You'd
> save 4 atomic operations on a global data structure on every
> mmap/munmap when the virtual address limit cgroup wasn't in use, which
> could be significant on a large system. And I don't see situations
> where you really need to limit the address space of the root cgroup.

4 atomic operations is very tempting, but we want to account for root usage due
to the following reasons:

1. We want to be able to support hierarchial accounting and control
2. We want to track usage of the root cgroup and report it back to the user
3. We don't want to treat the root cgroup as a special case.



--
Warm Regards,
Balbir Singh
Linux Technology Center
IBM, ISTL
--
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/