skb: adding query for locality information release2015-06-09
authorReto Achermann <reto.achermann@inf.ethz.ch>
Thu, 4 Jun 2015 12:20:33 +0000 (14:20 +0200)
committerReto Achermann <reto.achermann@inf.ethz.ch>
Thu, 4 Jun 2015 12:20:33 +0000 (14:20 +0200)
acpi is adding locality information now. the query allows users
to obtain a list of distances between the numa nodes

extended system topology query to return the list of distances.

Signed-off-by: Reto Achermann <reto.achermann@inf.ethz.ch>

usr/skb/programs/queries.pl

index ea48f73..646d568 100644 (file)
@@ -174,8 +174,15 @@ get_node_info(ProxDomain, RetBase, RetLimit) :-
 available_nr_nodes(Nnodes) :-
     get_system_topology(Nnodes, _, _, _).
 
+% get the system locality information
+get_system_locality(Ldistances) :-
+    ( is_predicate(node_distance/3) ->
+        findall(node_distance(I, J, E), node_distance(I, J, E), TmpL), sort(TmpL, Ldistances);
+        Ldistances = []
+    ).
+
 % get the system NUMA topology
-get_system_topology(Nnodes,Ncores, Lnodes, Lcores) :-
+get_system_topology(Nnodes,Ncores, Lnodes, Lcores, Llocalities) :-
     findall(node(ProxDomain, RetBase, RetLimit), (
         (is_predicate(memory_affinity/3) ->
             memory_affinity(_,_,ProxDomain)
@@ -185,6 +192,7 @@ get_system_topology(Nnodes,Ncores, Lnodes, Lcores) :-
         get_node_info(ProxDomain, RetBase, RetLimit)
     ), TmpN), sort(TmpN, Lnodes),
     findall(cpu(NODE,ID,APIC,ARCH), get_core_info(NODE, ID, ARCH, APIC), TmpL), sort(TmpL, Lcores),
+    get_system_locality(Llocalities),
     length(Lnodes, Nnodes),
     length(Lcores, Ncores).