在 Linux 上使用 NUMA 是否有任何“陷阱”

在 Linux 上使用 NUMA 是否有任何“陷阱”

我有一个新系统,带有 2 个插槽 CPU。我听说,如果处理器 0 上的应用程序尝试访问连接到处理器 1 的内存,那么在使用 NUMA 系统时可能会出现瓶颈。Linux 内核如何处理在 NUMA 系统上运行的软件?

  • 如果可能的话,内核是否会(自动)优先考虑将所有应用程序线程和内存放在一个 CPU 上?
  • 如果应用程序占用大量 CPU,并且创建的线程多于一个 CPU 上可用的内核,该怎么办?
  • 虚拟机呢?
    • 如果您创建的 KVM 虚拟机所使用的资源少于单个 CPU 可以访问的资源(如果内核和内存都小于可用资源),那么它是否会以开箱即用的最佳方式工作,或者您是否需要手动设置虚拟机亲和力什么的?
    • 如果您想要一个使用多个 CPU 资源的 VM,但您模拟了 NUMA,该怎么办?它也能按预期工作吗?
  • 如果我安装了 bog-standard Ubuntu 或 centos,我需要做些什么来使其支持 NUMA

我想这个问题很笼统,但我确实不太了解 NUMA 的工作原理,而且我发现很少有关于它的文档。

相关内容