void bind2node_id(int node_id) { struct bitmask *bmp = numa_allocate_nodemask(); numa_bitmask_setbit(bmp, node_id); numa_bind(bmp); numa_free_nodemask(bmp); }
int bind_cpu(int cpu) { struct bitmask *nodemask = numa_parse_nodestring("0"); struct bitmask *cpumask = numa_allocate_cpumask(); numa_bind(nodemask); cpumask = numa_bitmask_clearall(cpumask); return numa_sched_setaffinity( getpid(), numa_bitmask_setbit(cpumask, cpu-1) ); }
int bind2node(int core_id) { char node_str[8]; if (core_id < 0 || numa_available() == -1) return -1; snprintf(node_str, sizeof(node_str), "%u", numa_node_of_cpu(core_id)); numa_bind(numa_parse_nodestring(node_str)); return 0; }
int main(void) { #if HAVE_NUMA_H nodemask_t nodemask; void hardware(); if (numa_available() < 0) { printf("This system does not support NUMA policy\n"); numa_error("numa_available"); numa_exit_on_error = 1; exit(numa_exit_on_error); } nodemask_zero(&nodemask); nodemask_set(&nodemask, 1); numa_bind(&nodemask); hardware(); return numa_exit_on_error; #else printf("NUMA is not available\n"); return 1; #endif }