All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Mel Gorman <mel@csn.ul.ie>
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: Thu, 28 Oct 2010 15:09:04 -0700	[thread overview]
Message-ID: <20101028150904.79fe9beb.akpm@linux-foundation.org> (raw)
In-Reply-To: <1288278816-32667-3-git-send-email-mel@csn.ul.ie>

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.


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


WARNING: multiple messages have this Message-ID (diff)
From: Andrew Morton <akpm@linux-foundation.org>
To: Mel Gorman <mel@csn.ul.ie>
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: Thu, 28 Oct 2010 15:09:04 -0700	[thread overview]
Message-ID: <20101028150904.79fe9beb.akpm@linux-foundation.org> (raw)
In-Reply-To: <1288278816-32667-3-git-send-email-mel@csn.ul.ie>

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.


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

--
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-28 22:09 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 [this message]
2010-10-28 22:09     ` Andrew Morton
2010-10-29 10:17     ` Mel Gorman
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=20101028150904.79fe9beb.akpm@linux-foundation.org \
    --to=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=mel@csn.ul.ie \
    --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.