Kann ich den NUMA-Knoten von einer Zeigeradresse beziehen (in C unter Linux)?

8

Ich habe meinen Code eingerichtet, um Daten lokal auf meinem NUMA-System sorgfältig zu laden und zu verarbeiten. Ich denke. Das heißt, zu Debugging-Zwecken möchte ich wirklich in der Lage sein, die Zeigeradressen zu verwenden, auf die innerhalb einer bestimmten Funktion zugegriffen wird, die durch viele andere Funktionen eingerichtet wurden, um direkt die NUMA-Knoten zu identifizieren, auf die der Speicher zeigte befindet sich auf, so kann ich überprüfen, ob sich alles dort befindet, wo es sich befinden soll. Ist das möglich?

Ich habe diese Anfrage auf msdn gefunden Ссылка für die gleiche Sache, aber die Antwort verwendet QueryWorkingSetEx (), die Windows-spezifisch erscheint. Kann dies unter Linux gemacht werden? Ich bin auf Debian Squeeze, um genau zu sein.

Danke.

    
Rob_before_edits 02.11.2011, 20:27
quelle

2 Antworten

17

Es gibt eine move_pages Funktion in -lnuma : Ссылка

kann den aktuellen Status der Adresse (Seite) an Knotenzuordnungen melden:

  

Knoten können auch NULL sein. In diesem Fall bewegt move_pages () keine Seiten, sondern gibt stattdessen den Knoten zurück, auf dem sich jede Seite im Statusarray befindet. Das Ermitteln des Status jeder Seite kann erforderlich sein, um Seiten zu bestimmen, die verschoben werden müssen.

Also, Aufruf könnte wie sein:

%Vor%     
osgx 04.11.2011, 20:41
quelle
6

Alternativ gibt es eine get_mempolicy Funktion in -lnuma: Ссылка

%Vor%

Somit wird der numaknoten einer Seite, auf die von ptr gezeigt wird, mit:

geprüft %Vor%     
mrlarkin 07.06.2013 08:25
quelle

Tags und Links