首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >numactl:这个系统不支持NUMA策略

numactl:这个系统不支持NUMA策略
EN

Unix & Linux用户
提问于 2020-03-28 02:41:22
回答 1查看 817关注 0票数 0

当我使用numactl的时候,我看到

代码语言:javascript
运行
复制
numactl: this system does not support NUMA policy.

是因为某些内核配置没有启用吗?

已确认BIOS启用NUMA。

lscpu显示有NUMA节点。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-03-28 21:25:42

短答案

NUMA ACPI可能是从(A) BIOS或(B) cmdline或(C)内核配置中禁用的。详情见下文。

详细信息

查看numactl源代码(来自github),我看到上面的错误来自于checknuma()函数:

代码语言:javascript
运行
复制
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失败时,才会发生这种情况:

代码语言:javascript
运行
复制
int numa_available(void)
{
    if (get_mempolicy(NULL, NULL, 0, 0, 0) < 0 && errno == ENOSYS)
            return -1;

ENOSYS错误与“未实现的功能”相关,因此您的系统似乎不支持NUMA。由于这种支持早在很久以前就添加到内核中(内核版本2.6.7),所以它可能是一个配置问题:

  1. NUMA支持在BIOS中被禁用(您提到已经验证了这一点)。
  2. NUMA被禁用,可以从:
    1. cmdline -检查/prco/cmdline中的acpi=off
    2. 内核配置-检查CONFIG_X86_64_ACPI_NUMA=y和CONFIG_ACPI_NUMA=y。

确保CONFIG_NUMA=y也设置好了。请参阅这篇文章中的详细信息。

希望这能有所帮助。

PS -您没有提到您正在运行哪个内核,如果这是裸金属或VM/docker。如果是后者,get_mempolicy() sysctl可能会被阻塞。请参阅更多信息这里

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/575470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档