From: Huang Shijie <shijie8@gmail.com>
To: Minchan Kim <minchan.kim@gmail.com>
Cc: akpm@linux-foundation.org, mel@csn.ul.ie,
kosaki.motohiro@jp.fujitsu.com, linux-mm@kvack.org
Subject: Re: [PATCH 4/4] mm/page_alloc : relieve zone->lock's pressure for memory free
Date: Mon, 11 Jan 2010 14:01:32 +0800 [thread overview]
Message-ID: <4B4ABEBC.9090401@gmail.com> (raw)
In-Reply-To: <20100111142059.ae4fb643.minchan.kim@barrios-desktop>
>> Move the __mod_zone_page_state out the guard region of
>> the spinlock to relieve the pressure for memory free.
>>
>> Signed-off-by: Huang Shijie<shijie8@gmail.com>
>> ---
>> mm/page_alloc.c | 26 ++++++++++++++++----------
>> 1 files changed, 16 insertions(+), 10 deletions(-)
>>
>> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
>> index 290dfc3..34b9a3a 100644
>> --- a/mm/page_alloc.c
>> +++ b/mm/page_alloc.c
>> @@ -530,12 +530,9 @@ static void free_pcppages_bulk(struct zone *zone, int count,
>> {
>> int migratetype = 0;
>> int batch_free = 0;
>> + int free_ok = 0;
>>
>> spin_lock(&zone->lock);
>> - zone_clear_flag(zone, ZONE_ALL_UNRECLAIMABLE);
>> - zone->pages_scanned = 0;
>>
>
> We don't use zone->lock to protect pages_scanned in shrink_[in]active_list.
> At least, we can move zone->pages_scanned out of lock.
>
> In addition,
> sometime we don't use lock to test ZONE_ALL_UNRECLAIMABLE,
> sometime we do use zone->lock(ex, zoneinfo_show_print).
>
> Now lock for ZONE_ALL_UNRECLAIMABLE is not consistent,
>
> I think we have to use not zone->lock but zone->lru_lock
> since it's related to reclaim.
>
>
agree.
I think zone->lru_lock is more proper.
> Few days ago, Mel and Kosaki discussed about zone->lock.
> Any thought?
>
>
>> -
>> - __mod_zone_page_state(zone, NR_FREE_PAGES, count);
>> while (count) {
>> struct page *page;
>> struct list_head *list;
>> @@ -558,23 +555,32 @@ static void free_pcppages_bulk(struct zone *zone, int count,
>> page = list_entry(list->prev, struct page, lru);
>> /* must delete as __free_one_page list manipulates */
>> list_del(&page->lru);
>> - __free_one_page(page, zone, 0, migratetype);
>> + free_ok += __free_one_page(page, zone, 0, migratetype);
>> trace_mm_page_pcpu_drain(page, 0, migratetype);
>> } while (--count&& --batch_free&& !list_empty(list));
>> }
>> +
>> + if (likely(free_ok)) {
>> + zone_clear_flag(zone, ZONE_ALL_UNRECLAIMABLE);
>> + zone->pages_scanned = 0;
>> + }
>> spin_unlock(&zone->lock);
>> + __mod_zone_page_state(zone, NR_FREE_PAGES, free_ok);
>> }
>>
>> static void free_one_page(struct zone *zone, struct page *page, int order,
>> int migratetype)
>> {
>> - spin_lock(&zone->lock);
>> - zone_clear_flag(zone, ZONE_ALL_UNRECLAIMABLE);
>> - zone->pages_scanned = 0;
>> + int free_ok;
>>
>> - __mod_zone_page_state(zone, NR_FREE_PAGES, 1<< order);
>> - __free_one_page(page, zone, order, migratetype);
>> + spin_lock(&zone->lock);
>> + free_ok = __free_one_page(page, zone, order, migratetype);
>> + if (likely(free_ok)) {
>> + zone_clear_flag(zone, ZONE_ALL_UNRECLAIMABLE);
>> + zone->pages_scanned = 0;
>> + }
>> spin_unlock(&zone->lock);
>> + __mod_zone_page_state(zone, NR_FREE_PAGES, free_ok<< order);
>> }
>>
>> static void __free_pages_ok(struct page *page, unsigned int order)
>> --
>> 1.6.5.2
>>
>> --
>> 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>
>>
>
>
--
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>
next prev parent reply other threads:[~2010-01-11 6:01 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-11 4:37 [PATCH 1/4] mm/page_alloc : rename rmqueue_bulk to rmqueue_single Huang Shijie
2010-01-11 4:37 ` [PATCH 2/4] mm/page_alloc : relieve the zone->lock's pressure for allocation Huang Shijie
2010-01-11 4:37 ` [PATCH 3/4] mm/page_alloc : modify the return type of __free_one_page Huang Shijie
2010-01-11 4:37 ` [PATCH 4/4] mm/page_alloc : relieve zone->lock's pressure for memory free Huang Shijie
2010-01-11 5:20 ` Minchan Kim
2010-01-11 6:01 ` Huang Shijie [this message]
2010-01-11 6:27 ` Huang Shijie
2010-01-11 6:38 ` Minchan Kim
2010-01-11 6:59 ` Huang Shijie
2010-01-12 0:47 ` KAMEZAWA Hiroyuki
2010-01-12 2:02 ` Huang Shijie
2010-01-12 2:07 ` KAMEZAWA Hiroyuki
2010-01-12 2:32 ` Huang Shijie
2010-01-12 2:27 ` Wu Fengguang
2010-01-12 2:56 ` KOSAKI Motohiro
2010-01-12 3:02 ` Huang Shijie
2010-01-12 4:05 ` Minchan Kim
2010-01-12 4:21 ` Wu Fengguang
2010-01-12 4:32 ` KAMEZAWA Hiroyuki
2010-01-12 4:59 ` Wu Fengguang
2010-01-12 5:09 ` Wu Fengguang
2010-01-12 5:10 ` KOSAKI Motohiro
2010-01-12 7:36 ` David Rientjes
2010-01-12 8:56 ` KOSAKI Motohiro
2010-01-12 21:39 ` David Rientjes
2010-01-13 0:01 ` KOSAKI Motohiro
2010-01-12 4:48 ` Minchan Kim
2010-01-12 2:51 ` Huang Shijie
2010-01-12 3:03 ` Wu Fengguang
2010-01-12 3:05 ` KOSAKI Motohiro
2010-01-11 5:04 ` [PATCH 3/4] mm/page_alloc : modify the return type of __free_one_page Minchan Kim
2010-01-12 2:56 ` KOSAKI Motohiro
2010-01-18 11:25 ` Mel Gorman
2010-01-19 1:49 ` Huang Shijie
2010-01-11 5:02 ` [PATCH 2/4] mm/page_alloc : relieve the zone->lock's pressure for allocation Minchan Kim
2010-01-11 5:13 ` Huang Shijie
2010-01-12 2:54 ` KOSAKI Motohiro
2010-01-18 11:24 ` Mel Gorman
2010-01-11 5:00 ` [PATCH 1/4] mm/page_alloc : rename rmqueue_bulk to rmqueue_single Minchan Kim
2010-01-12 2:52 ` KOSAKI Motohiro
2010-01-18 11:21 ` Mel Gorman
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=4B4ABEBC.9090401@gmail.com \
--to=shijie8@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-mm@kvack.org \
--cc=mel@csn.ul.ie \
--cc=minchan.kim@gmail.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.