Linux-Kernel

在 VM 播放器自定義 Linux 來賓作業系統中啟用 NUMA 節點

  • September 28, 2020

我正在嘗試在自定義 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)。

有很多連結可以作為從頭建構核心的參考

  1. https://www.itdev.co.uk/blog/building-linux-kernel-cross-compiling-beaglebone-black
  2. https://raspberrypi.stackexchange.com/questions/192/how-do-i-cross-compile-the-kernel-on-a-ubuntu-host
  3. https://gist.github.com/lategoodbye/c7317a42bf7f9c07f5a91baed8c68f75

是其中一些

引用自:https://serverfault.com/questions/1035413