From: Balbir Singh <balbir@linux.vnet.ibm.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm@kvack.org, npiggin@kernel.dk, kvm@vger.kernel.org,
linux-kernel@vger.kernel.org, kosaki.motohiro@jp.fujitsu.com,
cl@linux.com, kamezawa.hiroyu@jp.fujitsu.com
Subject: Re: [PATCH 3/3][RESEND] Provide control over unmapped pages (v4)
Date: Wed, 09 Feb 2011 16:46:04 +0530 [thread overview]
Message-ID: <4D527774.1090509@linux.vnet.ibm.com> (raw)
In-Reply-To: <20110208155756.e149c3b6.akpm@linux-foundation.org>
On 02/09/2011 05:27 AM, Andrew Morton wrote:
> On Tue, 01 Feb 2011 22:25:45 +0530
> Balbir Singh <balbir@linux.vnet.ibm.com> wrote:
>
>> Changelog v4
>> 1. Add max_unmapped_ratio and use that as the upper limit
>> to check when to shrink the unmapped page cache (Christoph
>> Lameter)
>>
>> Changelog v2
>> 1. Use a config option to enable the code (Andrew Morton)
>> 2. Explain the magic tunables in the code or at-least attempt
>> to explain them (General comment)
>> 3. Hint uses of the boot parameter with unlikely (Andrew Morton)
>> 4. Use better names (balanced is not a good naming convention)
>>
>> Provide control using zone_reclaim() and a boot parameter. The
>> code reuses functionality from zone_reclaim() to isolate unmapped
>> pages and reclaim them as a priority, ahead of other mapped pages.
>> A new sysctl for max_unmapped_ratio is provided and set to 16,
>> indicating 16% of the total zone pages are unmapped, we start
>> shrinking unmapped page cache.
>
> We'll need some documentation for sysctl_max_unmapped_ratio, please.
> In Documentation/sysctl/vm.txt, I suppose.
>
> It will be interesting to find out what this ratio refers to. it
> apears to be a percentage. We've had problem in the past where 1% was
> way too much and we had to change the kernel to provide much
> finer-grained control.
>
Sure, I'll update the Documentation as a part of this patchset. Yes, the current
min_unmapped_ratio is a percentage and so is max_unmapped_ratio. min_unmapped_ratio
already exists, adding max_ should not affect granularity of control. It
will be worth relooking at the granularity based on user feedback and
experience. We won't break ABI if we add additional interfaces to help
granularity.
>>
>> ...
>>
>> --- a/include/linux/mmzone.h
>> +++ b/include/linux/mmzone.h
>> @@ -306,7 +306,10 @@ struct zone {
>> /*
>> * zone reclaim becomes active if more unmapped pages exist.
>> */
>> +#if defined(CONFIG_UNMAPPED_PAGE_CONTROL) || defined(CONFIG_NUMA)
>> unsigned long min_unmapped_pages;
>> + unsigned long max_unmapped_pages;
>> +#endif
>
> This change breaks the connection between min_unmapped_pages and its
> documentation, and fails to document max_unmapped_pages.
>
I'll fix that
> Also, afacit if CONFIG_NUMA=y and CONFIG_UNMAPPED_PAGE_CONTROL=n,
> max_unmapped_pages will be present in the kernel image and will appear
> in /proc but it won't actually do anything. Seems screwed up and
> misleading.
>
Good catch! In one of the emails Christoph mentioned that max_unmapped_ratio
might be helpful even in the general case (but we need to work on that later).
For now, I'll fix this and repose.
>> ...
>>
>> +#if defined(CONFIG_UNMAPPED_PAGECACHE_CONTROL)
>> +/*
>> + * Routine to reclaim unmapped pages, inspired from the code under
>> + * CONFIG_NUMA that does unmapped page and slab page control by keeping
>> + * min_unmapped_pages in the zone. We currently reclaim just unmapped
>> + * pages, slab control will come in soon, at which point this routine
>> + * should be called reclaim cached pages
>> + */
>> +unsigned long reclaim_unmapped_pages(int priority, struct zone *zone,
>> + struct scan_control *sc)
>> +{
>> + if (unlikely(unmapped_page_control) &&
>> + (zone_unmapped_file_pages(zone) > zone->min_unmapped_pages)) {
>> + struct scan_control nsc;
>> + unsigned long nr_pages;
>> +
>> + nsc = *sc;
>> +
>> + nsc.swappiness = 0;
>> + nsc.may_writepage = 0;
>> + nsc.may_unmap = 0;
>> + nsc.nr_reclaimed = 0;
>> +
>> + nr_pages = zone_unmapped_file_pages(zone) -
>> + zone->min_unmapped_pages;
>> + /*
>> + * We don't want to be too aggressive with our
>> + * reclaim, it is our best effort to control
>> + * unmapped pages
>> + */
>> + nr_pages >>= 3;
>> +
>> + zone_reclaim_pages(zone, &nsc, nr_pages);
>> + return nsc.nr_reclaimed;
>> + }
>> + return 0;
>> +}
>
> This returns an undocumented ulong which is never used by callers.
>
Good catch! I;ll remove the return value, I don't expect it to be used
to check how much we could reclaim.
Thanks for the review!
--
Three Cheers,
Balbir
--
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>
next prev parent reply other threads:[~2011-02-09 11:30 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-01 16:54 [PATCH 0/3][RESEND] Provide unmapped page cache control (v4) Balbir Singh
2011-02-01 16:55 ` [PATCH 1/3][RESEND] Move zone_reclaim() outside of CONFIG_NUMA (v4) Balbir Singh
2011-02-01 16:55 ` [PATCH 2/3][RESEND] Refactor zone_reclaim code (v4) Balbir Singh
2011-02-01 16:55 ` [PATCH 3/3][RESEND] Provide control over unmapped pages (v4) Balbir Singh
2011-02-08 23:57 ` Andrew Morton
2011-02-09 11:16 ` Balbir Singh [this message]
2011-02-24 17:08 ` Satoru Moriya
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=4D527774.1090509@linux.vnet.ibm.com \
--to=balbir@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=cl@linux.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=npiggin@kernel.dk \
/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 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).