2

I have two servers:

When I run hwloc-ls for the 2-socket server I see the PCIe topology with the HostBridges on each NUMANode, but the 4-socket server shows Packages instead of NUMANodes and all of the HostBridges are listed at the bottom. In addition, lscpu shows 2 NUMA nodes on the 2-socket but only 1 NUMA node on the 4-socket server.

How can I discern which PCIe device is attached to which socket on the 4-socket server?

When I run hwloc-ls on the 2-socket server I get the following:

Machine (63GB total)
  NUMANode L#0 (P#0 31GB)
    Package L#0 + L3 L#0 (20MB)
      L2 L#0 (256KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0
        PU L#0 (P#0)
        PU L#1 (P#16)
        ...
    HostBridge L#0
      PCIBridge
        PCI 17d3:1880
          Block(Disk) L#0 "sda"
  NUMANode L#1 (P#1 31GB)
    Package L#1 + L3 L#1 (20MB)
      L2 L#8 (256KB) + L1d L#8 (32KB) + L1i L#8 (32KB) + Core L#8
        PU L#16 (P#8)
        PU L#17 (P#24)
        ...
    HostBridge L#6
      PCIBridge
        PCI 8086:10fb
          Net L#8 "eth0"

... and when I run it on the 4-socket server I get the following:

Machine (126GB)
  Package L#0 + L3 L#0 (38MB)
    L2 L#0 (256KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0
      PU L#0 (P#0)
      PU L#1 (P#60)
      ...
  Package L#1 + L3 L#1 (38MB)
    L2 L#2 (256KB) + L1d L#2 (32KB) + L1i L#2 (32KB) + Core L#2
      PU L#4 (P#15)
      PU L#5 (P#75)
      ...
  Package L#2 + L3 L#2 (38MB)
    L2 L#4 (256KB) + L1d L#4 (32KB) + L1i L#4 (32KB) + Core L#4
      PU L#7 (P#30)
      PU L#8 (P#90)
      ...
  Package L#3 + L3 L#3 (38MB)
    L2 L#6 (256KB) + L1d L#6 (32KB) + L1i L#6 (32KB) + Core L#6
      PU L#10 (P#45)
      PU L#11 (P#105)
      ...
  Misc(MemoryModule)
  ...
  HostBridge L#5
    PCIBridge
      PCI 8086:10c9
        Net L#6 "ens8f0"

2-socket lscpu:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                32
On-line CPU(s) list:   0-31
Thread(s) per core:    2
Core(s) per socket:    8
Socket(s):             2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 62
Model name:            Intel(R) Xeon(R) CPU E5-2450 v2 @ 2.50GHz
Stepping:              4
CPU MHz:               2804.841
CPU max MHz:           3300.0000
CPU min MHz:           1200.0000
BogoMIPS:              5000.25
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              20480K
NUMA node0 CPU(s):     0-7,16-23
NUMA node1 CPU(s):     8-15,24-31

4-socket lscpu:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                120
On-line CPU(s) list:   0-119
Thread(s) per core:    2
Core(s) per socket:    15
Socket(s):             4
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 62
Model name:            Intel(R) Xeon(R) CPU E7-4890 v2 @ 2.80GHz
Stepping:              7
CPU MHz:               1199.953
CPU max MHz:           3400.0000
CPU min MHz:           1200.0000
BogoMIPS:              5600.25
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              38400K
NUMA node0 CPU(s):     0-119

1 Answer 1

0

I saw an upvote and remembered we solved this, so here is the answer at least for our Supermicro X10QBI motherboard (see the motherboard manual linked from that page).

  • Page 94: Memory Interleaving: "Use this feature to set the DIMM memory interleaving mood [mode]. The options are NUMA (1-way) Node Interleave; 2-way Node Interleave; 4-way Node Interleave; 8 Way Interleaving, inter-socket; and Auto."

    • If it interleaves then it sees a flat memory model, so set this to NUMA (1-way) Node Interleave (or maybe Auto)
  • Page 95: Device Tagging:

    • Enable Device Tagging. This tags each device with its NUMA location (I think).

... and now we see correct NUMA assignments. Also, hwloc-ls shows the PCIe devices where they are physically attached:

]# lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              120
On-line CPU(s) list: 0-119
Thread(s) per core:  2
Core(s) per socket:  15
Socket(s):           4
NUMA node(s):        4
Vendor ID:           GenuineIntel
BIOS Vendor ID:      Intel
CPU family:          6
Model:               62
Model name:          Intel(R) Xeon(R) CPU E7-4890 v2 @ 2.80GHz
BIOS Model name:     Intel(R) Xeon(R) CPU E7-4890 v2 @ 2.80GHz
Stepping:            7
CPU MHz:             3400.000
CPU max MHz:         3400.0000
CPU min MHz:         1200.0000
BogoMIPS:            5599.89
Virtualization:      VT-x
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            38400K
NUMA node0 CPU(s):   0-14,60-74
NUMA node1 CPU(s):   15-29,75-89
NUMA node2 CPU(s):   30-44,90-104
NUMA node3 CPU(s):   45-59,105-119
...

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .