cgroups.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mm/hugetlb_cgroup: Add list_del to remove unused page from hugepage_activelist when hugepage migration
@ 2012-07-11  3:51 Wanpeng Li
  2012-07-11  8:32 ` Aneesh Kumar K.V
  0 siblings, 1 reply; 5+ messages in thread
From: Wanpeng Li @ 2012-07-11  3:51 UTC (permalink / raw)
  To: linux-mm
  Cc: Andrew Morton, Li Zefan, Tejun Heo, Aneesh Kumar K.V, cgroups,
	linux-kernel, Wanpeng Li

From: Wanpeng Li <liwp@linux.vnet.ibm.com>

hugepage_activelist is used to track currently used HugeTLB pages.
We can find the in-use HugeTLB pages to support HugeTLB cgroup
removal. Don't keep unused page in hugetlb_activelist too long.
Otherwise, on cgroup removal we should update the unused page's 
charge to parent count. To reduce this overhead, remove unused page 
from hugepage_activelist immediately.

Signed-off-by: Wanpeng Li <liwp.linux@gmail.com>
---
 mm/hugetlb_cgroup.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/mm/hugetlb_cgroup.c b/mm/hugetlb_cgroup.c
index b834e8d..d819d66 100644
--- a/mm/hugetlb_cgroup.c
+++ b/mm/hugetlb_cgroup.c
@@ -398,6 +398,7 @@ void hugetlb_cgroup_migrate(struct page *oldhpage, struct page *newhpage)
 	spin_lock(&hugetlb_lock);
 	h_cg = hugetlb_cgroup_from_page(oldhpage);
 	set_hugetlb_cgroup(oldhpage, NULL);
+	list_del(&oldhpage->lru);
 
 	/* move the h_cg details to new cgroup */
 	set_hugetlb_cgroup(newhpage, h_cg);
-- 
1.7.5.4

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

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] mm/hugetlb_cgroup: Add list_del to remove unused page from hugepage_activelist when hugepage migration
  2012-07-11  3:51 [PATCH] mm/hugetlb_cgroup: Add list_del to remove unused page from hugepage_activelist when hugepage migration Wanpeng Li
@ 2012-07-11  8:32 ` Aneesh Kumar K.V
       [not found]   ` <87wr2aitpk.fsf-6yE53ggjAfyqSkle7U1LjlaTQe2KTcn/@public.gmane.org>
  0 siblings, 1 reply; 5+ messages in thread
From: Aneesh Kumar K.V @ 2012-07-11  8:32 UTC (permalink / raw)
  To: Wanpeng Li, linux-mm
  Cc: Andrew Morton, Li Zefan, Tejun Heo, cgroups, linux-kernel,
	Wanpeng Li

Wanpeng Li <liwp.linux@gmail.com> writes:

> From: Wanpeng Li <liwp@linux.vnet.ibm.com>
>
> hugepage_activelist is used to track currently used HugeTLB pages.
> We can find the in-use HugeTLB pages to support HugeTLB cgroup
> removal. Don't keep unused page in hugetlb_activelist too long.
> Otherwise, on cgroup removal we should update the unused page's 
> charge to parent count. To reduce this overhead, remove unused page 
> from hugepage_activelist immediately.
>
> Signed-off-by: Wanpeng Li <liwp.linux@gmail.com>
> ---
>  mm/hugetlb_cgroup.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/mm/hugetlb_cgroup.c b/mm/hugetlb_cgroup.c
> index b834e8d..d819d66 100644
> --- a/mm/hugetlb_cgroup.c
> +++ b/mm/hugetlb_cgroup.c
> @@ -398,6 +398,7 @@ void hugetlb_cgroup_migrate(struct page *oldhpage, struct page *newhpage)
>  	spin_lock(&hugetlb_lock);
>  	h_cg = hugetlb_cgroup_from_page(oldhpage);
>  	set_hugetlb_cgroup(oldhpage, NULL);
> +	list_del(&oldhpage->lru);
>
>  	/* move the h_cg details to new cgroup */
>  	set_hugetlb_cgroup(newhpage, h_cg);

put_page on the oldhpage will do that. If we do list_del here
free_huge_page() will have error list_move().

-aneesh

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] mm/hugetlb_cgroup: Add list_del to remove unused page from hugepage_activelist when hugepage migration
       [not found]   ` <87wr2aitpk.fsf-6yE53ggjAfyqSkle7U1LjlaTQe2KTcn/@public.gmane.org>
@ 2012-07-11  9:17     ` Wanpeng Li
  2012-07-11  9:45       ` Aneesh Kumar K.V
  0 siblings, 1 reply; 5+ messages in thread
From: Wanpeng Li @ 2012-07-11  9:17 UTC (permalink / raw)
  To: Aneesh Kumar K.V
  Cc: Andrew Morton, Li Zefan, Tejun Heo,
	cgroups-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Wanpeng Li

On Wed, Jul 11, 2012 at 02:02:23PM +0530, Aneesh Kumar K.V wrote:
>Wanpeng Li <liwp.linux-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes:
>
>> From: Wanpeng Li <liwp-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
>>
>> hugepage_activelist is used to track currently used HugeTLB pages.
>> We can find the in-use HugeTLB pages to support HugeTLB cgroup
>> removal. Don't keep unused page in hugetlb_activelist too long.
>> Otherwise, on cgroup removal we should update the unused page's 
>> charge to parent count. To reduce this overhead, remove unused page 
>> from hugepage_activelist immediately.
>>
>> Signed-off-by: Wanpeng Li <liwp.linux-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>> ---
>>  mm/hugetlb_cgroup.c |    1 +
>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>
>> diff --git a/mm/hugetlb_cgroup.c b/mm/hugetlb_cgroup.c
>> index b834e8d..d819d66 100644
>> --- a/mm/hugetlb_cgroup.c
>> +++ b/mm/hugetlb_cgroup.c
>> @@ -398,6 +398,7 @@ void hugetlb_cgroup_migrate(struct page *oldhpage, struct page *newhpage)
>>  	spin_lock(&hugetlb_lock);
>>  	h_cg = hugetlb_cgroup_from_page(oldhpage);
>>  	set_hugetlb_cgroup(oldhpage, NULL);
>> +	list_del(&oldhpage->lru);
>>
>>  	/* move the h_cg details to new cgroup */
>>  	set_hugetlb_cgroup(newhpage, h_cg);
>
>put_page on the oldhpage will do that. If we do list_del here
>free_huge_page() will have error list_move().

I don't know if move the page to other lists when migration in order 
to reduce overhead I mentioned make sense. :-)

Regards,
Wanpeng Li

>
>-aneesh

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] mm/hugetlb_cgroup: Add list_del to remove unused page from hugepage_activelist when hugepage migration
  2012-07-11  9:17     ` Wanpeng Li
@ 2012-07-11  9:45       ` Aneesh Kumar K.V
       [not found]         ` <87txxeiqc0.fsf-6yE53ggjAfyqSkle7U1LjlaTQe2KTcn/@public.gmane.org>
  0 siblings, 1 reply; 5+ messages in thread
From: Aneesh Kumar K.V @ 2012-07-11  9:45 UTC (permalink / raw)
  To: Wanpeng Li
  Cc: Andrew Morton, Li Zefan, Tejun Heo, cgroups, linux-kernel,
	Wanpeng Li

Wanpeng Li <liwp.linux@gmail.com> writes:

> On Wed, Jul 11, 2012 at 02:02:23PM +0530, Aneesh Kumar K.V wrote:
>>Wanpeng Li <liwp.linux@gmail.com> writes:
>>
>>> From: Wanpeng Li <liwp@linux.vnet.ibm.com>
>>>
>>> hugepage_activelist is used to track currently used HugeTLB pages.
>>> We can find the in-use HugeTLB pages to support HugeTLB cgroup
>>> removal. Don't keep unused page in hugetlb_activelist too long.
>>> Otherwise, on cgroup removal we should update the unused page's 
>>> charge to parent count. To reduce this overhead, remove unused page 
>>> from hugepage_activelist immediately.
>>>
>>> Signed-off-by: Wanpeng Li <liwp.linux@gmail.com>
>>> ---
>>>  mm/hugetlb_cgroup.c |    1 +
>>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/mm/hugetlb_cgroup.c b/mm/hugetlb_cgroup.c
>>> index b834e8d..d819d66 100644
>>> --- a/mm/hugetlb_cgroup.c
>>> +++ b/mm/hugetlb_cgroup.c
>>> @@ -398,6 +398,7 @@ void hugetlb_cgroup_migrate(struct page *oldhpage, struct page *newhpage)
>>>  	spin_lock(&hugetlb_lock);
>>>  	h_cg = hugetlb_cgroup_from_page(oldhpage);
>>>  	set_hugetlb_cgroup(oldhpage, NULL);
>>> +	list_del(&oldhpage->lru);
>>>
>>>  	/* move the h_cg details to new cgroup */
>>>  	set_hugetlb_cgroup(newhpage, h_cg);
>>
>>put_page on the oldhpage will do that. If we do list_del here
>>free_huge_page() will have error list_move().
>
> I don't know if move the page to other lists when migration in order 
> to reduce overhead I mentioned make sense. :-)
>

Even if we are in the active_list, we don't get anything wrong because
hugetlb cgroup is set to NULL for the old hugetlb page. The above patch is
wrong and will result in crash when we try to put_page the oldhpage.

-aneesh

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] mm/hugetlb_cgroup: Add list_del to remove unused page from hugepage_activelist when hugepage migration
       [not found]         ` <87txxeiqc0.fsf-6yE53ggjAfyqSkle7U1LjlaTQe2KTcn/@public.gmane.org>
@ 2012-07-11 10:16           ` Wanpeng Li
  0 siblings, 0 replies; 5+ messages in thread
From: Wanpeng Li @ 2012-07-11 10:16 UTC (permalink / raw)
  To: Aneesh Kumar K.V
  Cc: Andrew Morton, Li Zefan, Tejun Heo,
	cgroups-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Wanpeng Li

On Wed, Jul 11, 2012 at 03:15:19PM +0530, Aneesh Kumar K.V wrote:
>Wanpeng Li <liwp.linux-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes:
>
>> On Wed, Jul 11, 2012 at 02:02:23PM +0530, Aneesh Kumar K.V wrote:
>>>Wanpeng Li <liwp.linux-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes:
>>>
>>>> From: Wanpeng Li <liwp-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
>>>>
>>>> hugepage_activelist is used to track currently used HugeTLB pages.
>>>> We can find the in-use HugeTLB pages to support HugeTLB cgroup
>>>> removal. Don't keep unused page in hugetlb_activelist too long.
>>>> Otherwise, on cgroup removal we should update the unused page's 
>>>> charge to parent count. To reduce this overhead, remove unused page 
>>>> from hugepage_activelist immediately.
>>>>
>>>> Signed-off-by: Wanpeng Li <liwp.linux-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>>>> ---
>>>>  mm/hugetlb_cgroup.c |    1 +
>>>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/mm/hugetlb_cgroup.c b/mm/hugetlb_cgroup.c
>>>> index b834e8d..d819d66 100644
>>>> --- a/mm/hugetlb_cgroup.c
>>>> +++ b/mm/hugetlb_cgroup.c
>>>> @@ -398,6 +398,7 @@ void hugetlb_cgroup_migrate(struct page *oldhpage, struct page *newhpage)
>>>>  	spin_lock(&hugetlb_lock);
>>>>  	h_cg = hugetlb_cgroup_from_page(oldhpage);
>>>>  	set_hugetlb_cgroup(oldhpage, NULL);
>>>> +	list_del(&oldhpage->lru);
>>>>
>>>>  	/* move the h_cg details to new cgroup */
>>>>  	set_hugetlb_cgroup(newhpage, h_cg);
>>>
>>>put_page on the oldhpage will do that. If we do list_del here
>>>free_huge_page() will have error list_move().
>>
>> I don't know if move the page to other lists when migration in order 
>> to reduce overhead I mentioned make sense. :-)
>>
>
>Even if we are in the active_list, we don't get anything wrong because
>hugetlb cgroup is set to NULL for the old hugetlb page. The above patch is
>wrong and will result in crash when we try to put_page the oldhpage.

Hi aneesh, I am happy we are in the same company. I am a guy in LTC
China. I want to know if there any features or works about hugetlb
cgroup I can do with you!

Regards,
Wanpeng Li

>
>-aneesh
>
>--
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-07-11 10:16 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-11  3:51 [PATCH] mm/hugetlb_cgroup: Add list_del to remove unused page from hugepage_activelist when hugepage migration Wanpeng Li
2012-07-11  8:32 ` Aneesh Kumar K.V
     [not found]   ` <87wr2aitpk.fsf-6yE53ggjAfyqSkle7U1LjlaTQe2KTcn/@public.gmane.org>
2012-07-11  9:17     ` Wanpeng Li
2012-07-11  9:45       ` Aneesh Kumar K.V
     [not found]         ` <87txxeiqc0.fsf-6yE53ggjAfyqSkle7U1LjlaTQe2KTcn/@public.gmane.org>
2012-07-11 10:16           ` Wanpeng Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).