All of lore.kernel.org
 help / color / mirror / Atom feed
From: Balbir Singh <balbir@linux.vnet.ibm.com>
To: Pavel Emelyanov <xemul@openvz.org>
Cc: linux-mm@kvack.org, Hugh Dickins <hugh@veritas.com>,
	Sudhir Kumar <skumar@linux.vnet.ibm.com>,
	YAMAMOTO Takashi <yamamoto@valinux.co.jp>,
	Paul Menage <menage@google.com>,
	lizf@cn.fujitsu.com, linux-kernel@vger.kernel.org,
	taka@valinux.co.jp, David Rientjes <rientjes@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Subject: Re: [RFC][2/3] Account and control virtual address space allocations
Date: Mon, 17 Mar 2008 18:21:41 +0530	[thread overview]
Message-ID: <47DE695D.3080605@linux.vnet.ibm.com> (raw)
In-Reply-To: <47DE66BE.30904@openvz.org>

Pavel Emelyanov wrote:
> Balbir Singh wrote:
>> Pavel Emelyanov wrote:
>>> [snip]
>>>
>>>> +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();
>>>> +
>>>> +	if (nr_pages > 0) {
>>>> +		if (res_counter_charge(&mem->as_res, (nr_pages * PAGE_SIZE)))
>>>> +			ret = 1;
>>>> +	} else
>>>> +		res_counter_uncharge(&mem->as_res, (-nr_pages * PAGE_SIZE));
>>> No, please, no. Let's make two calls - mem_cgroup_charge_as and mem_cgroup_uncharge_as.
>>>
>>> [snip]
>>>
>> Yes, sure :)
> 
> Thanks :)
> 
>>>> @@ -1117,6 +1117,9 @@ munmap_back:
>>>>  		}
>>>>  	}
>>>>  
>>>> +	if (mem_cgroup_update_as(mm, len >> PAGE_SHIFT))
>>>> +		return -ENOMEM;
>>>> +
>>> Why not use existintg cap_vm_enough_memory and co?
>>>
>> I thought about it and almost used may_expand_vm(), but there is a slight catch
>> there. With cap_vm_enough_memory() or security_vm_enough_memory(), they are
>> called after total_vm has been calculated. In our case we need to keep the
>> cgroups equivalent of total_vm up to date, and we do this in mem_cgorup_update_as.
> 
> So? What prevents us from using these hooks? :)

1. We need to account total_vm usage of the task anyway. So why have two places,
   one for accounting and second for control?
2. These hooks are activated for conditionally invoked for vma's with VM_ACCOUNT
   set.


-- 
	Warm Regards,
	Balbir Singh
	Linux Technology Center
	IBM, ISTL

WARNING: multiple messages have this Message-ID (diff)
From: Balbir Singh <balbir@linux.vnet.ibm.com>
To: Pavel Emelyanov <xemul@openvz.org>
Cc: linux-mm@kvack.org, Hugh Dickins <hugh@veritas.com>,
	Sudhir Kumar <skumar@linux.vnet.ibm.com>,
	YAMAMOTO Takashi <yamamoto@valinux.co.jp>,
	Paul Menage <menage@google.com>,
	lizf@cn.fujitsu.com, linux-kernel@vger.kernel.org,
	taka@valinux.co.jp, David Rientjes <rientjes@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Subject: Re: [RFC][2/3] Account and control virtual address space allocations
Date: Mon, 17 Mar 2008 18:21:41 +0530	[thread overview]
Message-ID: <47DE695D.3080605@linux.vnet.ibm.com> (raw)
In-Reply-To: <47DE66BE.30904@openvz.org>

Pavel Emelyanov wrote:
> Balbir Singh wrote:
>> Pavel Emelyanov wrote:
>>> [snip]
>>>
>>>> +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();
>>>> +
>>>> +	if (nr_pages > 0) {
>>>> +		if (res_counter_charge(&mem->as_res, (nr_pages * PAGE_SIZE)))
>>>> +			ret = 1;
>>>> +	} else
>>>> +		res_counter_uncharge(&mem->as_res, (-nr_pages * PAGE_SIZE));
>>> No, please, no. Let's make two calls - mem_cgroup_charge_as and mem_cgroup_uncharge_as.
>>>
>>> [snip]
>>>
>> Yes, sure :)
> 
> Thanks :)
> 
>>>> @@ -1117,6 +1117,9 @@ munmap_back:
>>>>  		}
>>>>  	}
>>>>  
>>>> +	if (mem_cgroup_update_as(mm, len >> PAGE_SHIFT))
>>>> +		return -ENOMEM;
>>>> +
>>> Why not use existintg cap_vm_enough_memory and co?
>>>
>> I thought about it and almost used may_expand_vm(), but there is a slight catch
>> there. With cap_vm_enough_memory() or security_vm_enough_memory(), they are
>> called after total_vm has been calculated. In our case we need to keep the
>> cgroups equivalent of total_vm up to date, and we do this in mem_cgorup_update_as.
> 
> So? What prevents us from using these hooks? :)

1. We need to account total_vm usage of the task anyway. So why have two places,
   one for accounting and second for control?
2. These hooks are activated for conditionally invoked for vma's with VM_ACCOUNT
   set.


-- 
	Warm Regards,
	Balbir Singh
	Linux Technology Center
	IBM, ISTL

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2008-03-17 12:53 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-16 17:29 [RFC][0/3] Virtual address space control for cgroups Balbir Singh
2008-03-16 17:29 ` Balbir Singh
2008-03-16 17:29 ` [RFC][1/3] Add user interface for virtual address space control Balbir Singh
2008-03-16 17:29   ` Balbir Singh
2008-03-16 17:30 ` [RFC][2/3] Account and control virtual address space allocations Balbir Singh
2008-03-16 17:30   ` Balbir Singh
2008-03-17  2:02   ` Paul Menage
2008-03-17  2:02     ` Paul Menage
2008-03-17  2:57     ` Balbir Singh
2008-03-17  2:57       ` Balbir Singh
2008-03-17  3:03       ` Paul Menage
2008-03-17  3:03         ` Paul Menage
2008-03-17 11:36   ` Pavel Emelyanov
2008-03-17 11:36     ` Pavel Emelyanov
2008-03-17 12:29     ` Balbir Singh
2008-03-17 12:29       ` Balbir Singh
2008-03-17 12:40       ` Pavel Emelyanov
2008-03-17 12:40         ` Pavel Emelyanov
2008-03-17 12:51         ` Balbir Singh [this message]
2008-03-17 12:51           ` Balbir Singh
2008-03-17 13:01           ` Pavel Emelyanov
2008-03-17 13:01             ` Pavel Emelyanov
2008-03-17 14:39             ` Balbir Singh
2008-03-17 14:39               ` Balbir Singh
2008-03-17 16:53   ` Dave Hansen
2008-03-17 16:53     ` Dave Hansen
2008-03-18  1:14     ` Balbir Singh
2008-03-18  1:14       ` Balbir Singh
2008-03-18 17:11       ` Dave Hansen
2008-03-18 17:11         ` Dave Hansen
2008-03-18 17:58         ` Balbir Singh
2008-03-18 17:58           ` Balbir Singh
2008-03-17 23:35   ` YAMAMOTO Takashi
2008-03-17 23:35     ` YAMAMOTO Takashi
2008-03-18  1:10     ` Balbir Singh
2008-03-18  1:10       ` Balbir Singh
2008-03-16 17:30 ` [RFC][3/3] Update documentation for virtual address space control Balbir Singh
2008-03-16 17:30   ` Balbir Singh
2008-03-16 18:32   ` Randy Dunlap
2008-03-16 18:32     ` Randy Dunlap
2008-03-17  1:33     ` Balbir Singh
2008-03-17  1:33       ` Balbir Singh
2008-03-16 23:26 ` [RFC][0/3] Virtual address space control for cgroups Paul Menage
2008-03-16 23:26   ` Paul Menage
2008-03-17  1:47   ` Li Zefan
2008-03-17  1:47     ` Li Zefan
2008-03-17  1:57     ` Paul Menage
2008-03-17  1:57       ` Paul Menage
2008-03-17  5:08       ` Balbir Singh
2008-03-17  5:08         ` Balbir Singh
2008-03-17  5:22         ` Paul Menage
2008-03-17  5:22           ` Paul Menage
2008-03-17 15:15           ` Balbir Singh
2008-03-17 15:15             ` Balbir Singh
2008-03-17  1:50   ` Balbir Singh
2008-03-17  1:50     ` Balbir Singh
2008-03-17  1:55     ` Paul Menage
2008-03-17  1:55       ` Paul Menage
2008-03-17  3:12       ` Balbir Singh
2008-03-17  3:12         ` Balbir Singh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=47DE695D.3080605@linux.vnet.ibm.com \
    --to=balbir@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=hugh@veritas.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lizf@cn.fujitsu.com \
    --cc=menage@google.com \
    --cc=rientjes@google.com \
    --cc=skumar@linux.vnet.ibm.com \
    --cc=taka@valinux.co.jp \
    --cc=xemul@openvz.org \
    --cc=yamamoto@valinux.co.jp \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.