Re: [Lhns-devel] Merging Nonlinear and Numa style memory hotplug

Yasunori Goto
2004-06-24T03:05:26Z

> This quadruples the size of the mem_section[] array, and makes each
> mem_section entry take up a whole cache line. Are you sure all of these
> structure members are needed?

No, I'm not sure. Especially, I don't find whether hotremovable
attribute is necessary or not in the mem_section yet.

> Can they be allocated elsewhere, instead
> of directly inside the translation tables, or otherwise derived? Also,
> why does the booked/free_count have to be kept here? Can't that be
> determined by simply looping through and looking at all the pages'
> flags?

It might be OK. But there might be some other influence by it
(for example, new lock will be necessary in alloc_pages()...).
I think measurement is necessary to find which implementation
is the fastest. If I will have a time, I would like to try it.

> Also, can you provide a patch which is just your modifications to Dave's
> original nonlinear patch?

No, I don't have it (at least now).
Base of my patches is Iwamoto-san's patch which is for 2.6.5.
But Dave-san's patch is for linux-2.6.5-mm. So, I had to change
Dave-san's patch for it.

And, other difference thing is about mem_map.
Dave-san's patch divides virtual address of mem_map per mem_section.
But it is cause of increasing steps at 'buddy allocator' like this.

- buddy1 = base + (page_idx ^ -mask);
- buddy2 = base + page_idx;
+ buddy1 = pfn_to_page(base + (page_idx ^ -mask);
+ buddy2 = pfn_to_page(base + page_idx);

So, I would like to try contiguous virtual mem_map yet,
if it is possible.

> Instead of remove_from_freelist(unsigned int section), I'd hope that we
> could support a much more generic interface in the page allocator:
> allocate by physical address. remove_from_freelist() has some intimate
> knowledge of the buddy allocator that I think is a bit complex.

I don't think I understand your idea at this point.
If booked pages remain in free_list, page allocator has to
search many pages which include booked pages.
remove_from_reelist() is to avoid this.

Thank you for your responce.

Bye.

--
Yasunori Goto <ygoto at us.fujitsu.com>