Thread (49 messages) 49 messages, 11 authors, 2012-12-04

Re: [RFT PATCH v1 4/5] mm: provide more accurate estimation of pages occupied by memmap

From: Andrew Morton <akpm@linux-foundation.org>
Date: 2012-11-21 19:35:19
Also in: lkml

On Wed, 21 Nov 2012 22:52:29 +0800
Jiang Liu [off-list ref] wrote:
On 11/21/2012 03:19 AM, Andrew Morton wrote:
quoted
On Tue, 20 Nov 2012 23:18:34 +0800
Jiang Liu [off-list ref] wrote:
quoted
quoted
quoted
+static unsigned long calc_memmap_size(unsigned long spanned_pages,
+				      unsigned long present_pages)
+{
+	unsigned long pages = spanned_pages;
+
+	/*
+	 * Provide a more accurate estimation if there are big holes within
+	 * the zone and SPARSEMEM is in use.
+	 */
+	if (spanned_pages > present_pages + (present_pages >> 4) &&
+	    IS_ENABLED(CONFIG_SPARSEMEM))
+		pages = present_pages;
+
+	return PAGE_ALIGN(pages * sizeof(struct page)) >> PAGE_SHIFT;
+}
Please explain the ">> 4" heuristc more completely - preferably in both
the changelog and code comments.  Why can't we calculate this
requirement exactly?  That might require a second pass, but that's OK for
code like this?
Hi Andrew,
	A normal x86 platform always have some holes within the DMA ZONE,
so the ">> 4" heuristic is to avoid applying this adjustment to the DMA
ZONE on x86 platforms. 
	Because the memmap_size is just an estimation, I feel it's OK to
remove the ">> 4" heuristic, that shouldn't affect much.
Again: why can't we calculate this requirement exactly?  That might
require a second pass, but that's OK for code like this?
Hi Andrew,
	If there are holes within a zone, it may cost us one or two extra pages
for each populated region within the zone due to alignment because memmap for 
each populated regions may not naturally aligned on page boundary.
Right.  So with an additional pass across the zone and a bit of
arithmetic, we can calculate the exact space requirement for memmap?
No need for kludgy heuristics?
Originally the ">> 4" heuristic is to trade off these extra memmap pages,
especially for small zones linke DMA zone.
--
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>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help