Re: show_mem() for ia64 discontig takes a really long time on large systems.

From: Robin Holt <holt_at_sgi.com>
Date: 2006-03-29 07:56:40
On Tue, Mar 28, 2006 at 11:16:19AM -0800, Dave Hansen wrote:
> Could you explain a bit how this works on ia64?  I know about the
> vmem_map.  Is the time spent on filling TLB entries when you hit a
> 'struct page' that isn't backed by real memory?

Time is wasted trying to fill the TLB entry for the vmem_map.  When it
fails, we show_mem() advances to the next page which repeats the sequence.
Jack had thrown out a couple suggestions.  One was essentially what
you proposed below.  The other was advance i to point the next page
of pfns.  He frowned when saying the second, but I don't recall exactly
why he frowned.

> Maybe something like this in your show_mem():
> 
>         for_each_pgdat(pgdat) {
> 		...
>                 for(i = 0; i < pgdat->node_spanned_pages; i++) {
>                         struct page *page;
>                         if (pfn_valid(pgdat->node_start_pfn + i))
>                                 page = pfn_to_page(pgdat->node_start_pfn + i);
>                         else
> -				continue;
> +				/* -1 to offset i++ */
> +                              	pfn += hole_nr_pages(pfn) - 1;
> 
-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Wed Mar 29 07:57:21 2006

This archive was generated by hypermail 2.1.8 : 2006-03-29 07:57:29 EST