Re: How to make get_mempolicy return a node id list for an address range?

Andi Kleen <[email protected]> Tue, 10 Jan 2012 23:04:12 +0100
Newsgroups org.kernel.vger.linux-numa
Message-ID <[email protected]>
On Mon, Jan 09, 2012 at 09:09:30AM +0000, Ananya Muddukrishna wrote:
> Hi,
> 
> Given a range of virtual addresses (begin and end) which are allocated using 
> MPOL_INTERLEAVE, is there a quick way to know how this range is mapped to 
> different NUMA nodes? In particular, I would like to have a weighted node-id 
> list, where each node id in the list indicates how many address (or pages) are 
> mapped to it, similar to what is seen in /proc/<proc_id>/numa_maps.

You could just parse that?

> 
> I am thinking of doing this by using get_mempolicy(MPOL_F_NODE|MPOL_F_ADDR) for 
> every address in the range. This can be optimized for full correctness if I know 
> the starting address of all pages contained in the range. Can you give me some 
> tips on how to obtain that?

You could use mincore(), but it won't handle the case of the memory being
swapped out.

-Andi