我正在使用libnuma来增强NUMA感知分配器。有些功能无法按照“numa man-page”或libnuma API中的说明工作。确切地说,我遇到了这些功能的问题:numa_get_run_node_mask()
和numa_node_to_cpus()
关于前者,阅读API和手册,它说它返回struct bitmask *
,而编译器要求nodemask_t
。
后者应该需要两个参数,如API定义,但编译器要求三个。如果我传递三个参数 - 遵循此声明我在源代码定义中找到:numa_node_to_cpus_v1(int node, unsigned long *buffer, int bufferlen)
- 每次都得到 segfault ,无论 bufferlen 我正在使用。
简而言之,当您键入命令numa_node_to_cpus()
时,后一个函数numactl
与numactl --hardware
使用相同:它用于检索节点中的所有cpu。我仔细阅读了源代码,它适用于两个参数int node, struct bitmask *mask
。
可能存在需要修复的错误,或者通过libnuma版本更改的API和源之间的一些差异。 (顺便说一下,如何检查机器上运行的libnuma / numactl?我在服务器上远程工作,numactl
似乎没有--version
选项!)