console.error(`Unable to load nonexistent manifest entry ‘islands/voting-prompt’. Check that your file path is correct.`)

我有一个带有两个插槽的 NUMA 系统,我很好奇为什么 NUMA0 中的核心 ID 是 0-15&32-47,而不是 0-31。

附加信息:BIOS 中禁用超线程;

一些相关的启动参数:numa_balancing=disable。

没有使用 nosmt 启动参数。

lscpu 的完整输出:

 lscpu
Architecture:             x86_64
  CPU op-mode(s):         32-bit, 64-bit
  Address sizes:          46 bits physical, 57 bits virtual
  Byte Order:             Little Endian
CPU(s):                   64
  On-line CPU(s) list:    0-63
Vendor ID:                GenuineIntel
  Model name:             Intel(R) Xeon(R) Gold 6458Q
    CPU family:           6
    Model:                143
    Thread(s) per core:   1
    Core(s) per socket:   32
    Socket(s):            2
    Stepping:             8
    CPU(s) scaling MHz:   22%
    CPU max MHz:          4000.0000
    CPU min MHz:          800.0000
    BogoMIPS:             6200.00
    Flags:                fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni
                          pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cat_l2 cdp_l3 cdp_l2 ssbd mba ibrs ibpb stibp
                           ibrs_enhanced tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc
                          cqm_occup_llc cqm_mbm_total cqm_mbm_local split_lock_detect avx_vnni avx512_bf16 wbnoinvd dtherm ida arat pln pts hwp hwp_act_window hwp_pkg_req hfi vnmi avx512vbmi umip pku ospke waitpkg avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg tme avx512_v
                          popcntdq la57 rdpid bus_lock_detect cldemote movdiri movdir64b enqcmd fsrm md_clear serialize tsxldtrk pconfig arch_lbr ibt amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities
Virtualization features:
  Virtualization:         VT-x
Caches (sum of all):
  L1d:                    3 MiB (64 instances)
  L1i:                    2 MiB (64 instances)
  L2:                     128 MiB (64 instances)
  L3:                     120 MiB (2 instances)
NUMA:
  NUMA node(s):           2
  NUMA node0 CPU(s):      0-15,32-47
  NUMA node1 CPU(s):      16-31,48-63


最佳答案
1

Linux 不保证 CPU 的编号方式。

各种平台实施细节可能会改变编号。芯片上的芯片实施导致一半的报告略有不同。CPU 脱机和联机作为 RAS 或硬件许可功能。可能前者在这款 Xeon x86 上比后者更重要,但这只是猜测。

实际上,我会运行支持 NUMA 的软件分发版。并且默认不干预 CPU 调度程序。这是一个具有 NUMA 的 32 核插槽。Linux 知道这一点,并将尽可能在同一插槽上安排相关任务。当单个共享数据工作负载(数据库、虚拟机)超过 32 个 CPU 时,请检查用户软件是否支持 NUMA 并且可以针对远程内存访问进行调整。

手动绑定到特定 CPU(任务集亲和性)是可能的,但很难比调度程序做得更好。如果您必须干预特定 CPU,请查询 CPU 编号并按节点分组。 lscpu --parse 以获取列表。

1

  • 很好的观点,我需要手动绑定 CPU 以减少该 CPU 上的中断。我将使用 lscpu –parse 来实现它。


    –