From: Tao Ma <tm@tao.ma>
To: KOSAKI Motohiro <kosaki.motohiro@gmail.com>
Cc: Minchan Kim <minchan@kernel.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
David Rientjes <rientjes@google.com>,
Minchan Kim <minchan.kim@gmail.com>, Mel Gorman <mel@csn.ul.ie>,
Johannes Weiner <jweiner@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH 1/2] mm,mlock: drain pagevecs asynchronously
Date: Tue, 10 Jan 2012 16:53:32 +0800 [thread overview]
Message-ID: <4F0BFC8C.7000806@tao.ma> (raw)
In-Reply-To: <4F03BBA1.7090606@gmail.com>
Hi KOSAKI,
On 01/04/2012 10:38 AM, KOSAKI Motohiro wrote:
>
>>> @@ -704,10 +747,23 @@ static void ____pagevec_lru_add_fn(struct page
>>> *page, void *arg)
>>> VM_BUG_ON(PageLRU(page));
>>>
>>> SetPageLRU(page);
>>> - if (active)
>>> - SetPageActive(page);
>>> - update_page_reclaim_stat(zone, page, file, active);
>>> - add_page_to_lru_list(zone, page, lru);
>>> + redo:
>>> + if (page_evictable(page, NULL)) {
>>> + if (active)
>>> + SetPageActive(page);
>>> + update_page_reclaim_stat(zone, page, file, active);
>>> + add_page_to_lru_list(zone, page, lru);
>>> + } else {
>>> + SetPageUnevictable(page);
>>> + add_page_to_lru_list(zone, page, LRU_UNEVICTABLE);
>>> + smp_mb();
>>
>> Why do we need barrier in here? Please comment it.
>
> To cut-n-paste a comment from putback_lru_page() is good idea? :)
>
> + /*
> + * When racing with an mlock clearing (page is
> + * unlocked), make sure that if the other thread does
> + * not observe our setting of PG_lru and fails
> + * isolation, we see PG_mlocked cleared below and move
> + * the page back to the evictable list.
> + *
> + * The other side is TestClearPageMlocked().
> + */
> + smp_mb();
>
>
>
>>> + if (page_evictable(page, NULL)) {
>>> + del_page_from_lru_list(zone, page, LRU_UNEVICTABLE);
>>> + ClearPageUnevictable(page);
>>> + goto redo;
>>> + }
>>> + }
>>
>> I am not sure it's a good idea.
>> mlock is very rare event but ____pagevec_lru_add_fn is called frequently.
>> We are adding more overhead in ____pagevec_lru_add_fn.
>> Is it valuable?
>
> dunno.
>
> Personally, I think tao's case is too artificial and I haven't observed
> any real world application do such crazy mlock/munlock repeatness. But
> he said he has a such application.
ok, I will talk more about our application here.
So it is backend of a php. And for every user request, we will have to
call libmcrypt(http://sourceforge.net/projects/mcrypt/) several times to
encrypt some information, and libmcrypt will use mlock/munlock. As a
server can finish many requests in one second, so the total
mlock/munlock counts will sum up to around 2000 and it really means some
for us.
>
> If my remember is correct, ltp or some test suite depend on current
> meminfo synching behavior. then I'm afraid simple removing bring us
> new annoying bug report.
So this is the only side effect for removing the lru_add_drain_all from
mlock/mlockall right? Is there any other know issues?
I have read Andrew's comment, and if we have decided to remove all these
lru_* stuff, it seems that we have a long way to go before this issue
can be completed resolved. So I will remove it from our production
kernel first and wait for your final cleanup. Great thanks for your time
and kindly help.
Thanks
Tao
--
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>
WARNING: multiple messages have this Message-ID (diff)
From: Tao Ma <tm@tao.ma>
To: KOSAKI Motohiro <kosaki.motohiro@gmail.com>
Cc: Minchan Kim <minchan@kernel.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
David Rientjes <rientjes@google.com>,
Minchan Kim <minchan.kim@gmail.com>, Mel Gorman <mel@csn.ul.ie>,
Johannes Weiner <jweiner@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH 1/2] mm,mlock: drain pagevecs asynchronously
Date: Tue, 10 Jan 2012 16:53:32 +0800 [thread overview]
Message-ID: <4F0BFC8C.7000806@tao.ma> (raw)
In-Reply-To: <4F03BBA1.7090606@gmail.com>
Hi KOSAKI,
On 01/04/2012 10:38 AM, KOSAKI Motohiro wrote:
>
>>> @@ -704,10 +747,23 @@ static void ____pagevec_lru_add_fn(struct page
>>> *page, void *arg)
>>> VM_BUG_ON(PageLRU(page));
>>>
>>> SetPageLRU(page);
>>> - if (active)
>>> - SetPageActive(page);
>>> - update_page_reclaim_stat(zone, page, file, active);
>>> - add_page_to_lru_list(zone, page, lru);
>>> + redo:
>>> + if (page_evictable(page, NULL)) {
>>> + if (active)
>>> + SetPageActive(page);
>>> + update_page_reclaim_stat(zone, page, file, active);
>>> + add_page_to_lru_list(zone, page, lru);
>>> + } else {
>>> + SetPageUnevictable(page);
>>> + add_page_to_lru_list(zone, page, LRU_UNEVICTABLE);
>>> + smp_mb();
>>
>> Why do we need barrier in here? Please comment it.
>
> To cut-n-paste a comment from putback_lru_page() is good idea? :)
>
> + /*
> + * When racing with an mlock clearing (page is
> + * unlocked), make sure that if the other thread does
> + * not observe our setting of PG_lru and fails
> + * isolation, we see PG_mlocked cleared below and move
> + * the page back to the evictable list.
> + *
> + * The other side is TestClearPageMlocked().
> + */
> + smp_mb();
>
>
>
>>> + if (page_evictable(page, NULL)) {
>>> + del_page_from_lru_list(zone, page, LRU_UNEVICTABLE);
>>> + ClearPageUnevictable(page);
>>> + goto redo;
>>> + }
>>> + }
>>
>> I am not sure it's a good idea.
>> mlock is very rare event but ____pagevec_lru_add_fn is called frequently.
>> We are adding more overhead in ____pagevec_lru_add_fn.
>> Is it valuable?
>
> dunno.
>
> Personally, I think tao's case is too artificial and I haven't observed
> any real world application do such crazy mlock/munlock repeatness. But
> he said he has a such application.
ok, I will talk more about our application here.
So it is backend of a php. And for every user request, we will have to
call libmcrypt(http://sourceforge.net/projects/mcrypt/) several times to
encrypt some information, and libmcrypt will use mlock/munlock. As a
server can finish many requests in one second, so the total
mlock/munlock counts will sum up to around 2000 and it really means some
for us.
>
> If my remember is correct, ltp or some test suite depend on current
> meminfo synching behavior. then I'm afraid simple removing bring us
> new annoying bug report.
So this is the only side effect for removing the lru_add_drain_all from
mlock/mlockall right? Is there any other know issues?
I have read Andrew's comment, and if we have decided to remove all these
lru_* stuff, it seems that we have a long way to go before this issue
can be completed resolved. So I will remove it from our production
kernel first and wait for your final cleanup. Great thanks for your time
and kindly help.
Thanks
Tao
next prev parent reply other threads:[~2012-01-10 8:53 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-30 6:36 [PATCH] mm: do not drain pagevecs for mlock Tao Ma
2011-12-30 6:36 ` Tao Ma
2011-12-30 8:11 ` KOSAKI Motohiro
2011-12-30 8:11 ` KOSAKI Motohiro
2011-12-30 8:48 ` Tao Ma
2011-12-30 9:31 ` KOSAKI Motohiro
2011-12-30 9:31 ` KOSAKI Motohiro
2011-12-30 9:45 ` Tao Ma
2011-12-30 9:45 ` Tao Ma
2011-12-30 10:07 ` KOSAKI Motohiro
2011-12-30 10:07 ` KOSAKI Motohiro
2012-01-01 7:30 ` [PATCH 1/2] mm,mlock: drain pagevecs asynchronously kosaki.motohiro
2012-01-01 7:30 ` kosaki.motohiro
2012-01-04 1:17 ` Minchan Kim
2012-01-04 1:17 ` Minchan Kim
2012-01-04 2:38 ` KOSAKI Motohiro
2012-01-04 2:38 ` KOSAKI Motohiro
2012-01-10 8:53 ` Tao Ma [this message]
2012-01-10 8:53 ` Tao Ma
2012-01-04 2:56 ` Hugh Dickins
2012-01-04 2:56 ` Hugh Dickins
2012-01-04 22:05 ` Andrew Morton
2012-01-04 22:05 ` Andrew Morton
2012-01-04 23:33 ` KOSAKI Motohiro
2012-01-04 23:33 ` KOSAKI Motohiro
2012-01-05 0:19 ` Hugh Dickins
2012-01-05 0:19 ` Hugh Dickins
2012-01-01 7:30 ` [PATCH 2/2] sysvshm: SHM_LOCK use lru_add_drain_all_async() kosaki.motohiro
2012-01-01 7:30 ` kosaki.motohiro
2012-01-04 1:51 ` Hugh Dickins
2012-01-04 1:51 ` Hugh Dickins
2012-01-04 2:19 ` KOSAKI Motohiro
2012-01-04 2:19 ` KOSAKI Motohiro
2012-01-04 5:17 ` Hugh Dickins
2012-01-04 5:17 ` Hugh Dickins
2012-01-04 8:34 ` KOSAKI Motohiro
2012-01-04 8:34 ` KOSAKI Motohiro
2012-01-06 6:13 ` [PATCH] mm: do not drain pagevecs for mlock Tao Ma
2012-01-06 6:13 ` Tao Ma
2012-01-06 6:18 ` KOSAKI Motohiro
2012-01-06 6:18 ` KOSAKI Motohiro
2012-01-06 6:30 ` Tao Ma
2012-01-06 6:30 ` Tao Ma
2012-01-06 6:33 ` KOSAKI Motohiro
2012-01-06 6:33 ` KOSAKI Motohiro
2012-01-06 6:46 ` Tao Ma
2012-01-06 6:46 ` Tao Ma
2012-01-09 23:58 ` KOSAKI Motohiro
2012-01-09 23:58 ` KOSAKI Motohiro
2012-01-10 2:08 ` Tao Ma
2012-01-10 2:08 ` Tao Ma
2012-01-09 7:25 ` Tao Ma
2012-01-09 7:25 ` Tao Ma
2011-12-30 10:14 ` KOSAKI Motohiro
2011-12-30 10:14 ` KOSAKI Motohiro
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=4F0BFC8C.7000806@tao.ma \
--to=tm@tao.ma \
--cc=akpm@linux-foundation.org \
--cc=jweiner@redhat.com \
--cc=kosaki.motohiro@gmail.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mel@csn.ul.ie \
--cc=minchan.kim@gmail.com \
--cc=minchan@kernel.org \
--cc=rientjes@google.com \
/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.