All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mel Gorman <mel@csn.ul.ie>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Shaohua Li <shaohua.li@intel.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Christoph Lameter <cl@linux.com>,
	David Rientjes <rientjes@google.com>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>
Subject: Re: [PATCH 2/2] mm: vmstat: Use a single setter function and callback for adjusting percpu thresholds
Date: Fri, 29 Oct 2010 11:17:19 +0100	[thread overview]
Message-ID: <20101029101718.GH4896@csn.ul.ie> (raw)
In-Reply-To: <20101028150904.79fe9beb.akpm@linux-foundation.org>

On Thu, Oct 28, 2010 at 03:09:04PM -0700, Andrew Morton wrote:
> On Thu, 28 Oct 2010 16:13:36 +0100
> Mel Gorman <mel@csn.ul.ie> wrote:
> 
> > reduce_pgdat_percpu_threshold() and restore_pgdat_percpu_threshold()
> > exist to adjust the per-cpu vmstat thresholds while kswapd is awake to
> > avoid errors due to counter drift. The functions duplicate some code so
> > this patch replaces them with a single set_pgdat_percpu_threshold() that
> > takes a callback function to calculate the desired threshold as a
> > parameter.
> 
> hm.  Could have passed in some silly flag rather than a function
> pointer but whatever.
> 
> >
> > ...
> >
> > -void reduce_pgdat_percpu_threshold(pg_data_t *pgdat)
> > +void set_pgdat_percpu_threshold(pg_data_t *pgdat,
> > +				int (*calculate_pressure)(struct zone *))
> >  {
> >  	struct zone *zone;
> >  	int cpu;
> > @@ -196,28 +197,7 @@ void reduce_pgdat_percpu_threshold(pg_data_t *pgdat)
> >  		if (!zone->percpu_drift_mark)
> >  			continue;
> >  
> > -		threshold = calculate_pressure_threshold(zone);
> > -		for_each_online_cpu(cpu)
> > -			per_cpu_ptr(zone->pageset, cpu)->stat_threshold
> > -							= threshold;
> > -	}
> > -	put_online_cpus();
> > -}
> > -
> > -void restore_pgdat_percpu_threshold(pg_data_t *pgdat)
> > -{
> > -	struct zone *zone;
> > -	int cpu;
> > -	int threshold;
> > -	int i;
> > -
> > -	get_online_cpus();
> > -	for (i = 0; i < pgdat->nr_zones; i++) {
> > -		zone = &pgdat->node_zones[i];
> > -		if (!zone->percpu_drift_mark)
> > -			continue;
> > -
> > -		threshold = calculate_threshold(zone);
> > +		threshold = calculate_pressure(zone);
> 
> Readability nit: it's better to use the
> 
> 		threshold = (*calculate_pressure)(zone);
> 
> syntax here.  So the code reader doesn't go running around trying to
> find the function "calculate_pressure".  I've been fooled that way
> plenty of times.
> 

Fair point, I'll know for future reference. Thanks

> 
> >  		for_each_online_cpu(cpu)
> >  			per_cpu_ptr(zone->pageset, cpu)->stat_threshold
> >  							= threshold;
> 

-- 
Mel Gorman
Part-time Phd Student                          Linux Technology Center
University of Limerick                         IBM Dublin Software Lab

WARNING: multiple messages have this Message-ID (diff)
From: Mel Gorman <mel@csn.ul.ie>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Shaohua Li <shaohua.li@intel.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Christoph Lameter <cl@linux.com>,
	David Rientjes <rientjes@google.com>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>
Subject: Re: [PATCH 2/2] mm: vmstat: Use a single setter function and callback for adjusting percpu thresholds
Date: Fri, 29 Oct 2010 11:17:19 +0100	[thread overview]
Message-ID: <20101029101718.GH4896@csn.ul.ie> (raw)
In-Reply-To: <20101028150904.79fe9beb.akpm@linux-foundation.org>

On Thu, Oct 28, 2010 at 03:09:04PM -0700, Andrew Morton wrote:
> On Thu, 28 Oct 2010 16:13:36 +0100
> Mel Gorman <mel@csn.ul.ie> wrote:
> 
> > reduce_pgdat_percpu_threshold() and restore_pgdat_percpu_threshold()
> > exist to adjust the per-cpu vmstat thresholds while kswapd is awake to
> > avoid errors due to counter drift. The functions duplicate some code so
> > this patch replaces them with a single set_pgdat_percpu_threshold() that
> > takes a callback function to calculate the desired threshold as a
> > parameter.
> 
> hm.  Could have passed in some silly flag rather than a function
> pointer but whatever.
> 
> >
> > ...
> >
> > -void reduce_pgdat_percpu_threshold(pg_data_t *pgdat)
> > +void set_pgdat_percpu_threshold(pg_data_t *pgdat,
> > +				int (*calculate_pressure)(struct zone *))
> >  {
> >  	struct zone *zone;
> >  	int cpu;
> > @@ -196,28 +197,7 @@ void reduce_pgdat_percpu_threshold(pg_data_t *pgdat)
> >  		if (!zone->percpu_drift_mark)
> >  			continue;
> >  
> > -		threshold = calculate_pressure_threshold(zone);
> > -		for_each_online_cpu(cpu)
> > -			per_cpu_ptr(zone->pageset, cpu)->stat_threshold
> > -							= threshold;
> > -	}
> > -	put_online_cpus();
> > -}
> > -
> > -void restore_pgdat_percpu_threshold(pg_data_t *pgdat)
> > -{
> > -	struct zone *zone;
> > -	int cpu;
> > -	int threshold;
> > -	int i;
> > -
> > -	get_online_cpus();
> > -	for (i = 0; i < pgdat->nr_zones; i++) {
> > -		zone = &pgdat->node_zones[i];
> > -		if (!zone->percpu_drift_mark)
> > -			continue;
> > -
> > -		threshold = calculate_threshold(zone);
> > +		threshold = calculate_pressure(zone);
> 
> Readability nit: it's better to use the
> 
> 		threshold = (*calculate_pressure)(zone);
> 
> syntax here.  So the code reader doesn't go running around trying to
> find the function "calculate_pressure".  I've been fooled that way
> plenty of times.
> 

Fair point, I'll know for future reference. Thanks

> 
> >  		for_each_online_cpu(cpu)
> >  			per_cpu_ptr(zone->pageset, cpu)->stat_threshold
> >  							= threshold;
> 

-- 
Mel Gorman
Part-time Phd Student                          Linux Technology Center
University of Limerick                         IBM Dublin Software Lab

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

  reply	other threads:[~2010-10-29 10:17 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-28 15:13 [PATCH 0/2] Reduce the amount of time spent in watermark-related functions V4 Mel Gorman
2010-10-28 15:13 ` Mel Gorman
2010-10-28 15:13 ` [PATCH 1/2] mm: page allocator: Adjust the per-cpu counter threshold when memory is low Mel Gorman
2010-10-28 15:13   ` Mel Gorman
2010-10-28 22:04   ` Andrew Morton
2010-10-28 22:04     ` Andrew Morton
2010-10-29 10:12     ` Mel Gorman
2010-10-29 10:12       ` Mel Gorman
2010-10-29 19:40       ` Andrew Morton
2010-10-29 19:40         ` Andrew Morton
2010-11-02  0:53         ` Shaohua Li
2010-11-02  0:53           ` Shaohua Li
2010-11-09 11:33         ` Mel Gorman
2010-11-09 11:33           ` Mel Gorman
2010-11-09 16:48         ` Christoph Lameter
2010-11-09 16:48           ` Christoph Lameter
2010-10-29 14:58     ` Christoph Lameter
2010-10-29 14:58       ` Christoph Lameter
2010-10-29 18:25       ` Andrew Morton
2010-10-29 18:25         ` Andrew Morton
2010-10-29 19:33         ` Christoph Lameter
2010-10-29 19:33           ` Christoph Lameter
2010-10-28 15:13 ` [PATCH 2/2] mm: vmstat: Use a single setter function and callback for adjusting percpu thresholds Mel Gorman
2010-10-28 15:13   ` Mel Gorman
2010-10-28 22:09   ` Andrew Morton
2010-10-28 22:09     ` Andrew Morton
2010-10-29 10:17     ` Mel Gorman [this message]
2010-10-29 10:17       ` Mel Gorman
  -- strict thread matches above, loose matches on Subject: below --
2010-10-27  8:47 [PATCH 0/2] Reduce the amount of time spent in watermark-related functions Mel Gorman
2010-10-27  8:47 ` [PATCH 2/2] mm: vmstat: Use a single setter function and callback for adjusting percpu thresholds Mel Gorman
2010-10-27  8:47   ` Mel Gorman
2010-10-27 20:13   ` Christoph Lameter
2010-10-27 20:13     ` Christoph Lameter
2010-10-28  1:10   ` KAMEZAWA Hiroyuki
2010-10-28  1:10     ` KAMEZAWA Hiroyuki
2010-11-01  7:06   ` KOSAKI Motohiro
2010-11-01  7:06     ` 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=20101029101718.GH4896@csn.ul.ie \
    --to=mel@csn.ul.ie \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=rientjes@google.com \
    --cc=shaohua.li@intel.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.