多插槽 NUMA Linux 系统上的连续 CPU 编号

多插槽 NUMA Linux 系统上的连续 CPU 编号

我注意到 Linux 根据不同多插槽 NUMA 系统上的完全不同的方案对 CPU 进行编号。

我的意思是您在内核参数中使用的 CPU 编号,例如,isolcpus=或者在设置线程亲和性时。

numactl --hardware您可以使用或检查 CPU 编号lscpu -e

示例:(每个系统都有 2 个 CPU,8 个核心,无超线程)

node 0 cpus: 0 1 2 3 8  9  10 11
node 1 cpus: 4 5 6 7 12 13 14 15

=> 用 HP 看到这个,条纹距离为 4

node 0 cpus: 0 2 4 6 8 10 12 14
node 1 cpus: 1 3 5 7 9 11 13 15

=> 同样使用 HP,条带距离为 1 - 或交错 - 或循环

node 0 cpus: 0 1  2  3  4  5  6  7
node 1 cpus: 8 9 10 11 12 13 14 15

=> 与 Supermicro 一样,连续编号,即条带距离为#cores_per_cpu

最后一种方案可以说是“自然”的方案。我的意思是,如果您总共有 16 个核心和 2 个插槽,为什么您要以不同的方式对它们进行编号?

(必须处理不同的方案显然会使配置和应用程序逻辑变得复杂。)

因此我的问题是:有没有办法告诉 Linux 总是连续地对一个插槽中的 CPU 进行编号?

如果无法在 Linux 中配置这一点,那么是否有影响编号的 BIOS 选项?

不同供应商使用不同编号方案(甚至一代又一代地改变其方案)的原因是什么?

相关内容