我正在尝试在自定义 Linux 发行版中运行 DPDK helloworld 示例。我在 VMware 播放器中安装了自定义 Linux。由于不支持 NUMA 节点,程序失败。当我尝试执行grep NUMA /boot/config-
uname -a` 时,我没有得到任何结果。
另一方面,我在 VMware 播放器的 Ubuntu VM 中尝试了相同的活动。DPDK helloworld 没有失败。当我尝试执行grep NUMA /boot/config-
uname -a` 时,我得到了有关 NUMA 配置的详细信息。
前几天,VMplayer 为 Ubuntu 和自定义 Linux 提供了不同的默认 NIC 卡。因此我更改了 vmx 文件中的条目。
我只是想知道不同的结果是否是由于自定义 linux 中的任何设置参数或虚拟机中的 vmx 文件设置造成的。
非常感谢您对此的帮助,以了解问题的原因。
我在不同的虚拟机中尝试了以下命令
In CentOS VM
cat /etc/centos-release
centOS Linux release 8.2
uname -r
4.18.0
lscpu
NUMA node(s) :1
NUMA node0 CPU(s): 0-3
grep NUMA /boot/Config.x
CONFIG_NUMA=y
In Ubuntu VM
uname -r
4.10.0
lsb_release -a
Ubuntu 16.04
lscpu
NUMA node(s) :1
NUMA node0 CPU(s): 0-3
grep NUMA /boot/Config.x
CONFIG_NUMA=y
numactl --hardware gives output
In Custom Linux
uname -r
3.16.71
**lscpu output don't contain NUMA details**
zgrep NUMA /proc/config.gz
CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
**#CONFIG_NUMA is not set**
numactl --show
**No NUMA support available on this system**
In custom Linux source code the following line is there
sources/kernel-headers/linux-3.4.104/arch/x86/configs/x86_64_defconfig
**Config_NUMA=y**
但根据结果,它说 CONFIG_NUMA 未设置。
是否需要更新内核源代码中的任何其他部分以启用 NUMA 节点,将不胜感激。
VMplayer、Virtual box 或 KVM-QEMU 不对 NUMA 行为负责。它取决于用于构建内核的 NUMA 配置,例如
CONFIG_NUMA=y & CONFIG_AMD_NUMA=y
. 同样对于巨大的页面CONFIG_HUGETLB_PAGE=y, CONFIG_HUGETLBFS=y
检查所有这些的最简单方法是使用
libnuma & mmap for huge pages
在目标上使用的简单应用程序。因此,正如评论中所讨论的,推荐的方法是始终对目标使用交叉工具链并构建二进制文件(而不是将在 Ubuntu 上构建的二进制文件复制到 sonicwall 或自定义 Linux)。有很多链接可以作为从头构建内核的参考
是其中一些