Re: [RFC PATCH] Add /proc/<pid>/numa_vamaps for numa node information

From: Prakash Sangappa
Date: Thu May 10 2018 - 12:37:45 EST




On 5/10/18 12:42 AM, Michal Hocko wrote:
On Fri 04-05-18 09:18:11, Prakash Sangappa wrote:

On 5/4/18 4:12 AM, Michal Hocko wrote:
On Thu 03-05-18 15:39:49, prakash.sangappa wrote:
On 05/03/2018 11:03 AM, Christopher Lameter wrote:
On Tue, 1 May 2018, Prakash Sangappa wrote:

For analysis purpose it is useful to have numa node information
corresponding mapped address ranges of the process. Currently
/proc/<pid>/numa_maps provides list of numa nodes from where pages are
allocated per VMA of the process. This is not useful if an user needs to
determine which numa node the mapped pages are allocated from for a
particular address range. It would have helped if the numa node information
presented in /proc/<pid>/numa_maps was broken down by VA ranges showing the
exact numa node from where the pages have been allocated.
Cant you write a small script that scans the information in numa_maps and
then displays the total pages per NUMA node and then a list of which
ranges have how many pages on a particular node?
Don't think we can determine which numa node a given user process
address range has pages from, based on the existing 'numa_maps' file.
yes we have. See move_pages...
Sure using move_pages, not based on just 'numa_maps'.

reading this file will not be restricted(i.e requiring CAP_SYS_ADMIN).
So a prime motivator here is security restricted access to numa_maps?
No it is the opposite. A regular user should be able to determine
numa node information.
Well, that breaks the layout randomization, doesn't it?
Exposing numa node information itself should not break randomization right?
I thought you planned to expose address ranges for each numa node as
well. /me confused.

Yes, are you suggesting this information should not be available to a regular
user?

Is it not possible to get that same information using the move_pages() api as a regular
user, although one / set of pages at a time?


It would be upto the application. In case of randomization, the application
could generate address range traces of interest for debugging and then
using numa node information one could determine where the memory is laid
out for analysis.
... even more confused