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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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;
> 
-
: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Sparc Linux]     [DCCP]     [Linux ARM]     [Yosemite News]     [Linux SCSI]     [Linux x86_64]     [Linux for Ham Radio]

  Powered by Linux