我正在尝试在自定义 Linux 发行版中运行 DPDK helloworld 示例。我在 VMware 播放器中安装了自定义 Linux。由于不支持 NUMA 节点,该程序失败。当我尝试执行grep NUMA /boot/config-
uname -a` 时,没有得到任何结果。
另一方面,我在 VMware Player 中的 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 节点。
答案1
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)。
有许多链接可以作为从头开始构建内核的参考
- https://www.itdev.co.uk/blog/building-linux-kernel-cross-compiling-beaglebone-black
- https://raspberrypi.stackexchange.com/questions/192/how-do-i-cross-compile-the-kernel-on-a-ubuntu-host
- https://gist.github.com/lategoodbye/c7317a42bf7f9c07f5a91baed8c68f75
是其中一些