linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] memcg: make threshold index in the right position
@ 2012-02-02  7:58 Sha Zhengju
  0 siblings, 0 replies; 8+ messages in thread
From: Sha Zhengju @ 2012-02-02  7:58 UTC (permalink / raw)
  To: linux-mm, cgroups; +Cc: Sha Zhengju, Kirill A. Shutemov

From: Sha Zhengju <handai.szj@taobao.com>

Index current_threshold may point to threshold that just equal to
usage after __mem_cgroup_threshold is triggerd. But after registering
a new event, it will change (pointing to threshold just below usage). 
So make it consistent here.

Cc: Kirill A. Shutemov <kirill@shutemov.name>
Signed-off-by: Sha Zhengju <handai.szj@taobao.com>
---
 mm/memcontrol.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 22d94f5..ba46a01 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -183,7 +183,7 @@ struct mem_cgroup_threshold {
 
 /* For threshold */
 struct mem_cgroup_threshold_ary {
-	/* An array index points to threshold just below usage. */
+	/* An array index points to threshold just below or equal to usage. */
 	int current_threshold;
 	/* Size of entries[] */
 	unsigned int size;
@@ -4319,7 +4319,7 @@ static int mem_cgroup_usage_register_event(struct cgroup *cgrp,
 	/* Find current threshold */
 	new->current_threshold = -1;
 	for (i = 0; i < size; i++) {
-		if (new->entries[i].threshold < usage) {
+		if (new->entries[i].threshold <= usage) {
 			/*
 			 * new->current_threshold will not be used until
 			 * rcu_assign_pointer(), so it's safe to increment
-- 
1.7.4.1

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* [PATCH] memcg: make threshold index in the right position
@ 2012-02-02  9:45 Sha Zhengju
  2012-02-02 10:14 ` Kirill A. Shutemov
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Sha Zhengju @ 2012-02-02  9:45 UTC (permalink / raw)
  To: linux-mm, cgroups; +Cc: Sha Zhengju, KAMEZAWA Hiroyuki, Kirill A. Shutemov

From: Sha Zhengju <handai.szj@taobao.com>

Index current_threshold may point to threshold that just equal to
usage after __mem_cgroup_threshold is triggerd. But after registering
a new event, it will change (pointing to threshold just below usage).
So make it consistent here.

Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Kirill A. Shutemov <kirill@shutemov.name>
Signed-off-by: Sha Zhengju <handai.szj@taobao.com>
---
 mm/memcontrol.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 22d94f5..79f4a58 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -183,7 +183,7 @@ struct mem_cgroup_threshold {
 
 /* For threshold */
 struct mem_cgroup_threshold_ary {
-	/* An array index points to threshold just below usage. */
+	/* An array index points to threshold just below or equal to usage. */
 	int current_threshold;
 	/* Size of entries[] */
 	unsigned int size;
@@ -4319,14 +4319,15 @@ static int mem_cgroup_usage_register_event(struct cgroup *cgrp,
 	/* Find current threshold */
 	new->current_threshold = -1;
 	for (i = 0; i < size; i++) {
-		if (new->entries[i].threshold < usage) {
+		if (new->entries[i].threshold <= usage) {
 			/*
 			 * new->current_threshold will not be used until
 			 * rcu_assign_pointer(), so it's safe to increment
 			 * it here.
 			 */
 			++new->current_threshold;
-		}
+		} else
+			break;
 	}
 
 	/* Free old spare buffer and save old primary buffer as spare */
-- 
1.7.4.1

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* Re: [PATCH] memcg: make threshold index in the right position
  2012-02-02  9:45 [PATCH] memcg: make threshold index in the right position Sha Zhengju
@ 2012-02-02 10:14 ` Kirill A. Shutemov
  2012-02-02 10:54   ` Sha Zhengju
  2012-02-03  1:35 ` KAMEZAWA Hiroyuki
  2012-02-03  2:49 ` Sha Zhengju
  2 siblings, 1 reply; 8+ messages in thread
From: Kirill A. Shutemov @ 2012-02-02 10:14 UTC (permalink / raw)
  To: Sha Zhengju; +Cc: linux-mm, cgroups, Sha Zhengju, KAMEZAWA Hiroyuki

On Thu, Feb 02, 2012 at 05:45:19PM +0800, Sha Zhengju wrote:
> From: Sha Zhengju <handai.szj@taobao.com>
> 
> Index current_threshold may point to threshold that just equal to
> usage after __mem_cgroup_threshold is triggerd.

I don't see it. Could you describe conditions?

> But after registering
> a new event, it will change (pointing to threshold just below usage).
> So make it consistent here.
> 
> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
> Cc: Kirill A. Shutemov <kirill@shutemov.name>
> Signed-off-by: Sha Zhengju <handai.szj@taobao.com>
> ---
>  mm/memcontrol.c |    7 ++++---
>  1 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> index 22d94f5..79f4a58 100644
> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -183,7 +183,7 @@ struct mem_cgroup_threshold {
>  
>  /* For threshold */
>  struct mem_cgroup_threshold_ary {
> -	/* An array index points to threshold just below usage. */
> +	/* An array index points to threshold just below or equal to usage. */
>  	int current_threshold;
>  	/* Size of entries[] */
>  	unsigned int size;
> @@ -4319,14 +4319,15 @@ static int mem_cgroup_usage_register_event(struct cgroup *cgrp,
>  	/* Find current threshold */
>  	new->current_threshold = -1;
>  	for (i = 0; i < size; i++) {
> -		if (new->entries[i].threshold < usage) {
> +		if (new->entries[i].threshold <= usage) {
>  			/*
>  			 * new->current_threshold will not be used until
>  			 * rcu_assign_pointer(), so it's safe to increment
>  			 * it here.
>  			 */
>  			++new->current_threshold;
> -		}
> +		} else
> +			break;
>  	}
>  
>  	/* Free old spare buffer and save old primary buffer as spare */
> -- 
> 1.7.4.1
> 

-- 
 Kirill A. Shutemov

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* Re: [PATCH] memcg: make threshold index in the right position
  2012-02-02 10:14 ` Kirill A. Shutemov
@ 2012-02-02 10:54   ` Sha Zhengju
  2012-02-02 11:08     ` Sha Zhengju
  0 siblings, 1 reply; 8+ messages in thread
From: Sha Zhengju @ 2012-02-02 10:54 UTC (permalink / raw)
  To: Kirill A. Shutemov; +Cc: linux-mm, cgroups, KAMEZAWA Hiroyuki

On 02/02/2012 06:14 PM, Kirill A. Shutemov wrote:
> On Thu, Feb 02, 2012 at 05:45:19PM +0800, Sha Zhengju wrote:
>> From: Sha Zhengju<handai.szj@taobao.com>
>>
>> Index current_threshold may point to threshold that just equal to
>> usage after __mem_cgroup_threshold is triggerd.
> I don't see it. Could you describe conditions?
>
It is because of the following code path in __mem_cgroup_threshold:
{
     ...
         i = t->current_threshold;

         for (; i >= 0 && unlikely(t->entries[i].threshold > usage); i--)
                 eventfd_signal(t->entries[i].eventfd, 1);
         i++;

         for (; i < t->size && unlikely(t->entries[i].threshold <= 
usage); i++)
                 eventfd_signal(t->entries[i].eventfd, 1);

         t->current_threshold = i - 1;
     ...
}

For example:
now:
     threshold array:  3  5  7  9   (usage = 6)
                                    ^
                                 index

next turn:
     threshold array:  3  5  7  9   (usage = 7)
                                        ^
                                     index

after registering a new event(threshold = 10):
     threshold array:  3  5  7  9  10 (usage = 7)
                                    ^
                                 index
>> But after registering
>> a new event, it will change (pointing to threshold just below usage).
>> So make it consistent here.
>>
>> Cc: KAMEZAWA Hiroyuki<kamezawa.hiroyu@jp.fujitsu.com>
>> Cc: Kirill A. Shutemov<kirill@shutemov.name>
>> Signed-off-by: Sha Zhengju<handai.szj@taobao.com>
>> ---
>>   mm/memcontrol.c |    7 ++++---
>>   1 files changed, 4 insertions(+), 3 deletions(-)
>>
>> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
>> index 22d94f5..79f4a58 100644
>> --- a/mm/memcontrol.c
>> +++ b/mm/memcontrol.c
>> @@ -183,7 +183,7 @@ struct mem_cgroup_threshold {
>>
>>   /* For threshold */
>>   struct mem_cgroup_threshold_ary {
>> -	/* An array index points to threshold just below usage. */
>> +	/* An array index points to threshold just below or equal to usage. */
>>   	int current_threshold;
>>   	/* Size of entries[] */
>>   	unsigned int size;
>> @@ -4319,14 +4319,15 @@ static int mem_cgroup_usage_register_event(struct cgroup *cgrp,
>>   	/* Find current threshold */
>>   	new->current_threshold = -1;
>>   	for (i = 0; i<  size; i++) {
>> -		if (new->entries[i].threshold<  usage) {
>> +		if (new->entries[i].threshold<= usage) {
>>   			/*
>>   			 * new->current_threshold will not be used until
>>   			 * rcu_assign_pointer(), so it's safe to increment
>>   			 * it here.
>>   			 */
>>   			++new->current_threshold;
>> -		}
>> +		} else
>> +			break;
>>   	}
>>
>>   	/* Free old spare buffer and save old primary buffer as spare */
>> -- 
>> 1.7.4.1
>>

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* Re: [PATCH] memcg: make threshold index in the right position
  2012-02-02 10:54   ` Sha Zhengju
@ 2012-02-02 11:08     ` Sha Zhengju
  2012-02-02 12:27       ` Kirill A. Shutemov
  0 siblings, 1 reply; 8+ messages in thread
From: Sha Zhengju @ 2012-02-02 11:08 UTC (permalink / raw)
  To: Kirill A. Shutemov; +Cc: linux-mm, cgroups, KAMEZAWA Hiroyuki

On 02/02/2012 06:54 PM, Sha Zhengju wrote:
> On 02/02/2012 06:14 PM, Kirill A. Shutemov wrote:
>> On Thu, Feb 02, 2012 at 05:45:19PM +0800, Sha Zhengju wrote:
>>> From: Sha Zhengju<handai.szj@taobao.com>
>>>
>>> Index current_threshold may point to threshold that just equal to
>>> usage after __mem_cgroup_threshold is triggerd.
>> I don't see it. Could you describe conditions?
>>
> It is because of the following code path in __mem_cgroup_threshold:
> {
>     ...
>         i = t->current_threshold;
>
>         for (; i >= 0 && unlikely(t->entries[i].threshold > usage); i--)
>                 eventfd_signal(t->entries[i].eventfd, 1);
>         i++;
>
>         for (; i < t->size && unlikely(t->entries[i].threshold <= 
> usage); i++)
>                 eventfd_signal(t->entries[i].eventfd, 1);
>
>         t->current_threshold = i - 1;
>     ...
> }
>
> For example:
> now:
>     threshold array:  3  5  7  9   (usage = 6)
>                                    ^
>                                 index
>
> next turn:
>     threshold array:  3  5  7  9   (usage = 7)
>                                        ^
>                                     index
>
> after registering a new event(threshold = 10):
>     threshold array:  3  5  7  9  10 (usage = 7)
>                                    ^
>                                 index
Err.. Sorry for showing inaccurate index position... (may because of the 
mail format)

now:
     threshold array:  3  [5]  7  9   (usage = 6, index = 5)

next turn:
     threshold array:  3  5  [7]  9   (usage = 7, index = 7)

after registering a new event(threshold = 10):
     threshold array:  3  [5]  7  9  10 (usage = 7, index = 5)

>>> But after registering
>>> a new event, it will change (pointing to threshold just below usage).
>>> So make it consistent here.
>>>
>>> Cc: KAMEZAWA Hiroyuki<kamezawa.hiroyu@jp.fujitsu.com>
>>> Cc: Kirill A. Shutemov<kirill@shutemov.name>
>>> Signed-off-by: Sha Zhengju<handai.szj@taobao.com>
>>> ---
>>>   mm/memcontrol.c |    7 ++++---
>>>   1 files changed, 4 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
>>> index 22d94f5..79f4a58 100644
>>> --- a/mm/memcontrol.c
>>> +++ b/mm/memcontrol.c
>>> @@ -183,7 +183,7 @@ struct mem_cgroup_threshold {
>>>
>>>   /* For threshold */
>>>   struct mem_cgroup_threshold_ary {
>>> -    /* An array index points to threshold just below usage. */
>>> +    /* An array index points to threshold just below or equal to 
>>> usage. */
>>>       int current_threshold;
>>>       /* Size of entries[] */
>>>       unsigned int size;
>>> @@ -4319,14 +4319,15 @@ static int 
>>> mem_cgroup_usage_register_event(struct cgroup *cgrp,
>>>       /* Find current threshold */
>>>       new->current_threshold = -1;
>>>       for (i = 0; i<  size; i++) {
>>> -        if (new->entries[i].threshold<  usage) {
>>> +        if (new->entries[i].threshold<= usage) {
>>>               /*
>>>                * new->current_threshold will not be used until
>>>                * rcu_assign_pointer(), so it's safe to increment
>>>                * it here.
>>>                */
>>>               ++new->current_threshold;
>>> -        }
>>> +        } else
>>> +            break;
>>>       }
>>>
>>>       /* Free old spare buffer and save old primary buffer as spare */
>>> -- 
>>> 1.7.4.1
>>>
>

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* Re: [PATCH] memcg: make threshold index in the right position
  2012-02-02 11:08     ` Sha Zhengju
@ 2012-02-02 12:27       ` Kirill A. Shutemov
  0 siblings, 0 replies; 8+ messages in thread
From: Kirill A. Shutemov @ 2012-02-02 12:27 UTC (permalink / raw)
  To: Sha Zhengju; +Cc: linux-mm, cgroups, KAMEZAWA Hiroyuki

On Thu, Feb 02, 2012 at 07:08:44PM +0800, Sha Zhengju wrote:
> On 02/02/2012 06:54 PM, Sha Zhengju wrote:
> >On 02/02/2012 06:14 PM, Kirill A. Shutemov wrote:
> >>On Thu, Feb 02, 2012 at 05:45:19PM +0800, Sha Zhengju wrote:
> >>>From: Sha Zhengju<handai.szj@taobao.com>
> >>>
> >>>Index current_threshold may point to threshold that just equal to
> >>>usage after __mem_cgroup_threshold is triggerd.
> >>I don't see it. Could you describe conditions?
> >>
> >It is because of the following code path in __mem_cgroup_threshold:
> >{
> >    ...
> >        i = t->current_threshold;
> >
> >        for (; i >= 0 && unlikely(t->entries[i].threshold > usage); i--)
> >                eventfd_signal(t->entries[i].eventfd, 1);
> >        i++;
> >
> >        for (; i < t->size && unlikely(t->entries[i].threshold <=
> >usage); i++)
> >                eventfd_signal(t->entries[i].eventfd, 1);
> >
> >        t->current_threshold = i - 1;
> >    ...
> >}
> >
> >For example:
> >now:
> >    threshold array:  3  5  7  9   (usage = 6)
> >                                   ^
> >                                index
> >
> >next turn:
> >    threshold array:  3  5  7  9   (usage = 7)
> >                                       ^
> >                                    index
> >
> >after registering a new event(threshold = 10):
> >    threshold array:  3  5  7  9  10 (usage = 7)
> >                                   ^
> >                                index
> Err.. Sorry for showing inaccurate index position... (may because of
> the mail format)
> 
> now:
>     threshold array:  3  [5]  7  9   (usage = 6, index = 5)
> 
> next turn:
>     threshold array:  3  5  [7]  9   (usage = 7, index = 7)
> 
> after registering a new event(threshold = 10):
>     threshold array:  3  [5]  7  9  10 (usage = 7, index = 5)

Good catch! Thank you.

Reviewed-by: Kirill A. Shutemov <kirill@shutemov.name>

-- 
 Kirill A. Shutemov

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* Re: [PATCH] memcg: make threshold index in the right position
  2012-02-02  9:45 [PATCH] memcg: make threshold index in the right position Sha Zhengju
  2012-02-02 10:14 ` Kirill A. Shutemov
@ 2012-02-03  1:35 ` KAMEZAWA Hiroyuki
  2012-02-03  2:49 ` Sha Zhengju
  2 siblings, 0 replies; 8+ messages in thread
From: KAMEZAWA Hiroyuki @ 2012-02-03  1:35 UTC (permalink / raw)
  To: Sha Zhengju; +Cc: linux-mm, cgroups, Sha Zhengju, Kirill A. Shutemov

On Thu,  2 Feb 2012 17:45:19 +0800
Sha Zhengju <handai.szj@gmail.com> wrote:

> From: Sha Zhengju <handai.szj@taobao.com>
> 
> Index current_threshold may point to threshold that just equal to
> usage after __mem_cgroup_threshold is triggerd. But after registering
> a new event, it will change (pointing to threshold just below usage).
> So make it consistent here.
> 
> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
> Cc: Kirill A. Shutemov <kirill@shutemov.name>
> Signed-off-by: Sha Zhengju <handai.szj@taobao.com>

Could you add the explanation you did to Kirill into the patch description ?

Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Thanks,
-Kame


> ---
>  mm/memcontrol.c |    7 ++++---
>  1 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> index 22d94f5..79f4a58 100644
> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -183,7 +183,7 @@ struct mem_cgroup_threshold {
>  
>  /* For threshold */
>  struct mem_cgroup_threshold_ary {
> -	/* An array index points to threshold just below usage. */
> +	/* An array index points to threshold just below or equal to usage. */
>  	int current_threshold;
>  	/* Size of entries[] */
>  	unsigned int size;
> @@ -4319,14 +4319,15 @@ static int mem_cgroup_usage_register_event(struct cgroup *cgrp,
>  	/* Find current threshold */
>  	new->current_threshold = -1;
>  	for (i = 0; i < size; i++) {
> -		if (new->entries[i].threshold < usage) {
> +		if (new->entries[i].threshold <= usage) {
>  			/*
>  			 * new->current_threshold will not be used until
>  			 * rcu_assign_pointer(), so it's safe to increment
>  			 * it here.
>  			 */
>  			++new->current_threshold;
> -		}
> +		} else
> +			break;
>  	}
>  
>  	/* Free old spare buffer and save old primary buffer as spare */
> -- 
> 1.7.4.1
> 
> 

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* [PATCH] memcg: make threshold index in the right position
  2012-02-02  9:45 [PATCH] memcg: make threshold index in the right position Sha Zhengju
  2012-02-02 10:14 ` Kirill A. Shutemov
  2012-02-03  1:35 ` KAMEZAWA Hiroyuki
@ 2012-02-03  2:49 ` Sha Zhengju
  2 siblings, 0 replies; 8+ messages in thread
From: Sha Zhengju @ 2012-02-03  2:49 UTC (permalink / raw)
  To: linux-mm, cgroups; +Cc: kamezawa.hiroyu, kirill, Sha Zhengju

From: Sha Zhengju <handai.szj@taobao.com>

Index current_threshold may point to threshold that just equal to
usage after last call of __mem_cgroup_threshold. But after registering
a new event, it will change (pointing to threshold just below usage).
So make it consistent here.

For example:
now:
	threshold array:  3  [5]  7  9   (usage = 6, [index] = 5)

next turn (after calling __mem_cgroup_threshold):
	threshold array:  3   5  [7]  9   (usage = 7, [index] = 7)

after registering a new event (threshold = 10):
	threshold array:  3  [5]  7  9  10 (usage = 7, [index] = 5)  

Signed-off-by: Sha Zhengju <handai.szj@taobao.com>
Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Reviewed-by: Kirill A. Shutemov <kirill@shutemov.name>

---
 mm/memcontrol.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 22d94f5..95fc9f07 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -183,7 +183,7 @@ struct mem_cgroup_threshold {
 
 /* For threshold */
 struct mem_cgroup_threshold_ary {
-	/* An array index points to threshold just below usage. */
+	/* An array index points to threshold just below or equal to usage. */
 	int current_threshold;
 	/* Size of entries[] */
 	unsigned int size;
@@ -4193,7 +4193,7 @@ static void __mem_cgroup_threshold(struct mem_cgroup *memcg, bool swap)
 	usage = mem_cgroup_usage(memcg, swap);
 
 	/*
-	 * current_threshold points to threshold just below usage.
+	 * current_threshold points to threshold just below or equal to usage.
 	 * If it's not true, a threshold was crossed after last
 	 * call of __mem_cgroup_threshold().
 	 */
@@ -4319,14 +4319,15 @@ static int mem_cgroup_usage_register_event(struct cgroup *cgrp,
 	/* Find current threshold */
 	new->current_threshold = -1;
 	for (i = 0; i < size; i++) {
-		if (new->entries[i].threshold < usage) {
+		if (new->entries[i].threshold <= usage) {
 			/*
 			 * new->current_threshold will not be used until
 			 * rcu_assign_pointer(), so it's safe to increment
 			 * it here.
 			 */
 			++new->current_threshold;
-		}
+		} else
+			break;
 	}
 
 	/* Free old spare buffer and save old primary buffer as spare */
-- 
1.7.4.1

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

end of thread, other threads:[~2012-02-03  2:50 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-02  9:45 [PATCH] memcg: make threshold index in the right position Sha Zhengju
2012-02-02 10:14 ` Kirill A. Shutemov
2012-02-02 10:54   ` Sha Zhengju
2012-02-02 11:08     ` Sha Zhengju
2012-02-02 12:27       ` Kirill A. Shutemov
2012-02-03  1:35 ` KAMEZAWA Hiroyuki
2012-02-03  2:49 ` Sha Zhengju
  -- strict thread matches above, loose matches on Subject: below --
2012-02-02  7:58 Sha Zhengju

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