在 VM 播放器自定義 Linux 來賓作業系統中啟用 NUMA 節點
我正在嘗試在自定義 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)。有很多連結可以作為從頭建構核心的參考
- 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
是其中一些