NUMA: expose correct NUMA distances in sysfs
This commit is contained in:
@ -243,9 +243,12 @@ struct cpu_topology {
|
||||
struct list_head cache_list;
|
||||
};
|
||||
|
||||
#define NODE_DISTANCE_S_SIZE 1024
|
||||
|
||||
struct node_topology {
|
||||
struct ihk_node_topology *saved;
|
||||
int mckernel_numa_id;
|
||||
char mckernel_numa_distance_s[NODE_DISTANCE_S_SIZE];
|
||||
cpumask_t cpumap;
|
||||
|
||||
struct list_head chain;
|
||||
|
||||
@ -680,9 +680,31 @@ static int setup_node_files(struct mcctrl_usrdata *udp)
|
||||
list_for_each_entry(p, &udp->node_topology_list, chain) {
|
||||
struct sysfs_handle handle;
|
||||
int cpu;
|
||||
int node;
|
||||
size_t offset = 0;
|
||||
param.nbits = nr_cpumask_bits;
|
||||
param.ptr = &p->cpumap;
|
||||
|
||||
for (node = 0; node < udp->mem_info->n_numa_nodes; ++node) {
|
||||
if (node > 0) {
|
||||
offset += snprintf(&p->mckernel_numa_distance_s[offset],
|
||||
NODE_DISTANCE_S_SIZE - offset, "%s", " ");
|
||||
}
|
||||
offset += snprintf(&p->mckernel_numa_distance_s[offset],
|
||||
NODE_DISTANCE_S_SIZE - offset, "%d",
|
||||
node_distance(
|
||||
mckernel_numa_2_linux_numa(udp, p->mckernel_numa_id),
|
||||
mckernel_numa_2_linux_numa(udp, node)
|
||||
));
|
||||
}
|
||||
offset += snprintf(&p->mckernel_numa_distance_s[offset],
|
||||
NODE_DISTANCE_S_SIZE - offset, "%s", "\n");
|
||||
|
||||
sysfsm_createf(udp->os, SYSFS_SNOOPING_OPS_s,
|
||||
p->mckernel_numa_distance_s, 0444,
|
||||
"/sys/devices/system/node/node%d/distance",
|
||||
p->mckernel_numa_id);
|
||||
|
||||
sysfsm_createf(udp->os, SYSFS_SNOOPING_OPS_pb, ¶m, 0444,
|
||||
"/sys/devices/system/node/node%d/cpumap",
|
||||
p->mckernel_numa_id);
|
||||
|
||||
@ -171,6 +171,7 @@ uint64_t ihk_mc_pt_virt_to_pagemap(struct page_table *pt, unsigned long virt);
|
||||
int ihk_mc_get_nr_numa_nodes(void);
|
||||
struct smp_coreset;
|
||||
int ihk_mc_get_numa_node(int id, int *linux_numa_id, int *type);
|
||||
int ihk_mc_get_numa_distance(int i, int j);
|
||||
int ihk_mc_get_nr_memory_chunks(void);
|
||||
int ihk_mc_get_memory_chunk(int id,
|
||||
unsigned long *start,
|
||||
|
||||
Reference in New Issue
Block a user