当我使用numactl的时候,我看到
numactl: this system does not support NUMA policy.
是因为某些内核配置没有启用吗?
已确认BIOS启用NUMA。
lscpu显示有NUMA节点。
发布于 2020-03-28 21:25:42
NUMA ACPI可能是从(A) BIOS或(B) cmdline或(C)内核配置中禁用的。详情见下文。
查看numactl源代码(来自github),我看到上面的错误来自于checknuma()函数:
void checknuma(void)
{
static int numa = -1;
if (numa < 0) {
if (numa_available() < 0)
complain("This system does not support NUMA policy");
}
numa = 0;
}
当numa_available()返回值小于0时,它将失败。只有当get_mempolicy() syscall错误代码ENOSYS失败时,才会发生这种情况:
int numa_available(void)
{
if (get_mempolicy(NULL, NULL, 0, 0, 0) < 0 && errno == ENOSYS)
return -1;
ENOSYS错误与“未实现的功能”相关,因此您的系统似乎不支持NUMA。由于这种支持早在很久以前就添加到内核中(内核版本2.6.7),所以它可能是一个配置问题:
确保CONFIG_NUMA=y也设置好了。请参阅这篇文章中的详细信息。
希望这能有所帮助。
PS -您没有提到您正在运行哪个内核,如果这是裸金属或VM/docker。如果是后者,get_mempolicy() sysctl可能会被阻塞。请参阅更多信息这里。
https://unix.stackexchange.com/questions/575470
复制相似问题