From: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
To: Dave Hansen <dave@linux.vnet.ibm.com>
Cc: Ankita Garg <ankita@in.ibm.com>,
linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org,
linux-pm@lists.linux-foundation.org, thomas.abraham@linaro.org
Subject: Re: [PATCH 01/10] mm: Introduce the memory regions data structure
Date: Fri, 27 May 2011 23:50:41 +0530 [thread overview]
Message-ID: <20110527182041.GM5654@dirshya.in.ibm.com> (raw)
In-Reply-To: <1306510203.22505.69.camel@nimitz>
* Dave Hansen <dave@linux.vnet.ibm.com> [2011-05-27 08:30:03]:
> On Fri, 2011-05-27 at 18:01 +0530, Ankita Garg wrote:
> > +typedef struct mem_region_list_data {
> > + struct zone zones[MAX_NR_ZONES];
> > + int nr_zones;
> > +
> > + int node;
> > + int region;
> > +
> > + unsigned long start_pfn;
> > + unsigned long spanned_pages;
> > +} mem_region_t;
> > +
> > +#define MAX_NR_REGIONS 16
>
> Don't do the foo_t thing. It's out of style and the pg_data_t is a
> dinosaur.
>
> I'm a bit surprised how little discussion of this there is in the patch
> descriptions. Why did you choose this structure? What are the
> downsides of doing it this way? This effectively breaks up the zone's
> LRU in to MAX_NR_REGIONS LRUs. What effects does that have?
This data structure is one of the option, but definitely has
overheads. One alternative was to use fake-numa nodes that has more
overhead and user visible quirks.
The overheads is based on the number of regions actually defined in
the platform. It may be 2-4 in smaller systems. This split is what
makes the allocations and reclaims work withing these boundaries using
the zone's active, inactive lists on a per memory regions basis.
An external structure to just capture the boundaries would have less
overheads, but does not provide enough hooks to influence the zone
level allocators and reclaim operations.
> How big _is_ a 'struct zone' these days? This patch will increase their
> effective size by 16x.
Yes, this is not good, we should to a runtime allocation for the exact
number of regions that we need. This can be optimized later once we
design the data structure hierarchy with least overhead for the
purpose.
> Since one distro kernel basically gets run on *EVERYTHING*, what will
> MAX_NR_REGIONS be in practice? How many regions are there on the
> largest systems that will need this? We're going to be doing many
> linear searches and iterations over it, so it's pretty darn important to
> know. What does this do to lmbench numbers sensitive to page
> allocations?
Yep, agreed, we are generally looking at 2-4 regions per-node for most
purposes. Also regions need not be of equal size, they can be large
and small based on platform characteristics so that we need not
fragment the zones below the level required.
The overall idea is to have a VM data structure that can capture
various boundaries of memory, and enable the allocations and reclaim
logic to target certain areas based on the boundaries and properties
required. NUMA node and pgdat is the example of capturing memory
distances. The proposed memory regions should capture other
orthogonal properties and boundaries of memory addresses similar to
zone type.
Thanks for the quick feedback.
--Vaidy
--
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-05-27 18:21 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-27 12:31 [PATCH 00/10] mm: Linux VM Infrastructure to support Memory Power Management Ankita Garg
2011-05-27 12:31 ` [PATCH 01/10] mm: Introduce the memory regions data structure Ankita Garg
2011-05-27 15:30 ` Dave Hansen
2011-05-27 18:20 ` Vaidyanathan Srinivasan [this message]
2011-05-27 21:31 ` Dave Hansen
2011-05-29 8:16 ` Ankita Garg
2011-05-31 17:34 ` Dave Hansen
2011-06-02 8:54 ` Ankita Garg
2011-05-27 12:31 ` [PATCH 02/10] mm: Helper routines Ankita Garg
2011-05-27 12:31 ` [PATCH 03/10] mm: Init zones inside memory regions Ankita Garg
2011-05-27 12:31 ` [PATCH 04/10] mm: Refer to zones from " Ankita Garg
2011-05-27 12:31 ` [PATCH 05/10] mm: Create zonelists Ankita Garg
2011-05-27 12:31 ` [PATCH 06/10] mm: Verify zonelists Ankita Garg
2011-05-27 12:31 ` [PATCH 07/10] mm: Modify vmstat Ankita Garg
2011-05-27 12:31 ` [PATCH 08/10] mm: Modify vmscan Ankita Garg
2011-05-27 12:31 ` [PATCH 09/10] mm: Reflect memory region changes in zoneinfo Ankita Garg
2011-05-27 12:31 ` [PATCH 10/10] mm: Create memory regions at boot-up Ankita Garg
2011-05-28 14:39 ` Jean-Christophe PLAGNIOL-VILLARD
2011-05-28 7:56 ` [PATCH 00/10] mm: Linux VM Infrastructure to support Memory Power Management Andrew Morton
2011-05-28 13:16 ` Ankita Garg
2011-06-09 18:52 ` Paul E. McKenney
2011-06-10 0:51 ` Kyungmin Park
2011-06-10 15:11 ` Paul E. McKenney
2011-06-10 15:59 ` Matthew Garrett
2011-06-10 16:55 ` Paul E. McKenney
2011-06-10 17:05 ` Matthew Garrett
2011-06-10 17:19 ` Paul E. McKenney
2011-06-10 17:23 ` Matthew Garrett
2011-06-10 17:52 ` Paul E. McKenney
2011-06-10 18:08 ` Matthew Garrett
2011-06-10 18:47 ` Paul E. McKenney
2011-06-10 19:23 ` Matthew Garrett
2011-06-10 19:37 ` Paul E. McKenney
2011-06-10 20:12 ` Matthew Garrett
2011-06-11 3:02 ` Arjan van de Ven
2011-06-11 17:06 ` Paul E. McKenney
2011-06-11 17:26 ` Arjan van de Ven
2011-06-12 23:07 ` Paul E. McKenney
2011-06-13 14:28 ` Arjan van de Ven
2011-06-13 23:04 ` Paul E. McKenney
2011-06-14 8:51 ` Ankita Garg
2011-06-15 16:53 ` Ankita Garg
2011-06-18 4:08 ` Arjan van de Ven
2011-06-10 17:33 ` Ankita Garg
2011-06-11 17:08 ` Paul E. McKenney
2011-07-12 5:31 ` amit kachhap
2011-06-13 4:47 ` KAMEZAWA Hiroyuki
2011-06-16 4:20 ` Ankita Garg
2011-06-16 9:12 ` KAMEZAWA Hiroyuki
2011-06-17 15:28 ` Ankita Garg
2011-06-19 23:53 ` KAMEZAWA Hiroyuki
2011-06-16 16:04 ` Dave Hansen
2011-06-17 10:03 ` Ankita Garg
2011-06-29 13:00 ` Ankita Garg
2011-06-29 17:06 ` Dave Hansen
2011-06-29 17:42 ` Ankita Garg
2011-06-29 17:59 ` Dave Hansen
2011-06-29 18:17 ` Vaidyanathan Srinivasan
2011-06-30 4:37 ` Ankita Garg
2011-06-29 20:11 ` Andi Kleen
2011-06-30 5:11 ` Ankita Garg
2011-06-29 18:07 ` Vaidyanathan Srinivasan
2011-07-06 8:45 ` Pekka Enberg
2011-07-06 9:01 ` Pekka Enberg
2011-07-06 16:50 ` Vaidyanathan Srinivasan
2011-07-06 16:41 ` Vaidyanathan Srinivasan
2011-07-06 20:20 ` david
2011-07-07 4:54 ` Ankita Garg
2011-07-07 18:00 ` Pekka Enberg
2011-07-08 1:32 ` david
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=20110527182041.GM5654@dirshya.in.ibm.com \
--to=svaidy@linux.vnet.ibm.com \
--cc=ankita@in.ibm.com \
--cc=dave@linux.vnet.ibm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=thomas.abraham@linaro.org \
/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).