Giả sử hệ điều hành Linux khá gần đây, có một cách dễ dàng để xác định nút NUMA nào khe cắm PCIe, nơi thiết bị được cắm, thuộc về?
Giả sử hệ điều hành Linux khá gần đây, có một cách dễ dàng để xác định nút NUMA nào khe cắm PCIe, nơi thiết bị được cắm, thuộc về?
Câu trả lời:
Ví dụ, bạn phải truy cập vào thư mục của khe cắm PCIe eth0
:
cd /sys/class/net/eth0/device
nơi bạn sẽ tìm thấy numa_node
, local_cpus
và local_cpulist
, ba tệp bạn quan tâm. Bạn chỉ có thể cat
họ, và xem dữ liệu mong muốn.
Bạn cũng có thể sử dụng hwloc ( http://www.open-mpi.de/projects/hwloc/ ) nếu bạn biết id thiết bị. Tuy nhiên, nếu bạn có 2 thiết bị giống nhau (ví dụ: GPU), cách duy nhất để biết nút NUMA nơi có khe cắm vật lý được liên kết là xem hướng dẫn sử dụng bo mạch chủ.
Đối với Asus Z9PE-D8 ( http://dlcdnet.asus.com/pub/ASUS/mb/LGA2011/Z9PE-D8-WS/Manual/e8726_z9pe-d8_ws.pdf ), nó ở trang 223.
Câu trả lời được chấp nhận chỉ hoạt động đối với thẻ mạng, theo như tôi đã tìm thấy. Theo câu trả lời của GuillermoMA, hwloc sẽ cung cấp cho bạn thỏa thuận thực sự ngay cả khi nó không dễ đọc. lstopo
được tìm thấy trong gói hwloc (ít nhất là trên RHEL 7):
# lstopo
Machine (256GB)
NUMANode L#0 (P#0 128GB)
Socket 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)
L2 L#1 (256KB) + L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1 + PU L#1 (P#2)
L2 L#2 (256KB) + L1d L#2 (32KB) + L1i L#2 (32KB) + Core L#2 + PU L#2 (P#4)
L2 L#3 (256KB) + L1d L#3 (32KB) + L1i L#3 (32KB) + Core L#3 + PU L#3 (P#6)
L2 L#4 (256KB) + L1d L#4 (32KB) + L1i L#4 (32KB) + Core L#4 + PU L#4 (P#8)
L2 L#5 (256KB) + L1d L#5 (32KB) + L1i L#5 (32KB) + Core L#5 + PU L#5 (P#10)
L2 L#6 (256KB) + L1d L#6 (32KB) + L1i L#6 (32KB) + Core L#6 + PU L#6 (P#12)
L2 L#7 (256KB) + L1d L#7 (32KB) + L1i L#7 (32KB) + Core L#7 + PU L#7 (P#14)
HostBridge L#0
PCIBridge
PCI 1000:005d
Block L#0 "sda"
PCIBridge
PCI 14e4:16a1
Net L#1 "eth0"
PCI 14e4:16a1
Net L#2 "eth1"
PCI 14e4:16a1
Net L#3 "eth2"
PCI 14e4:16a1
Net L#4 "eth3"
PCI 8086:8d62
PCIBridge
PCIBridge
PCIBridge
PCIBridge
PCI 102b:0534
PCI 8086:8d02
Block L#5 "sr0"
NUMANode L#1 (P#1 128GB)
Socket L#1 + L3 L#1 (20MB)
L2 L#8 (256KB) + L1d L#8 (32KB) + L1i L#8 (32KB) + Core L#8 + PU L#8 (P#1)
L2 L#9 (256KB) + L1d L#9 (32KB) + L1i L#9 (32KB) + Core L#9 + PU L#9 (P#3)
L2 L#10 (256KB) + L1d L#10 (32KB) + L1i L#10 (32KB) + Core L#10 + PU L#10 (P#5)
L2 L#11 (256KB) + L1d L#11 (32KB) + L1i L#11 (32KB) + Core L#11 + PU L#11 (P#7)
L2 L#12 (256KB) + L1d L#12 (32KB) + L1i L#12 (32KB) + Core L#12 + PU L#12 (P#9)
L2 L#13 (256KB) + L1d L#13 (32KB) + L1i L#13 (32KB) + Core L#13 + PU L#13 (P#11)
L2 L#14 (256KB) + L1d L#14 (32KB) + L1i L#14 (32KB) + Core L#14 + PU L#14 (P#13)
L2 L#15 (256KB) + L1d L#15 (32KB) + L1i L#15 (32KB) + Core L#15 + PU L#15 (P#15)
HostBridge L#7
PCIBridge
PCI 15b3:1003
Net L#6 "eth4"
Net L#7 "eth5"
Tất nhiên, NUMANode L # 0 là CPU0 và NUMANode L # 1 là CPU1. Sau đó, bạn có thể lấy số PCI yêu thích của mình từ trên, ví dụ 14e4: 16a1 và khám phá xem đó là gì và địa chỉ PCI của nó để phân tích thêm từ lspci
:
# lspci -nn | grep 14e4:16a1
01:00.0 Ethernet controller [0200]: Broadcom Corporation BCM57840 NetXtreme II 10 Gigabit Ethernet [14e4:16a1] (rev 11)
01:00.1 Ethernet controller [0200]: Broadcom Corporation BCM57840 NetXtreme II 10 Gigabit Ethernet [14e4:16a1] (rev 11)
01:00.2 Ethernet controller [0200]: Broadcom Corporation BCM57840 NetXtreme II 10 Gigabit Ethernet [14e4:16a1] (rev 11)
01:00.3 Ethernet controller [0200]: Broadcom Corporation BCM57840 NetXtreme II 10 Gigabit Ethernet [14e4:16a1] (rev 11)
Trên một trong các máy của tôi, thẻ Kênh sợi quang Emulex không hiển thị ở lstopo
đầu ra. Tôi đã tìm thấy nó bằng cách sử dụng lstopo --whole-io
, bằng cách thực hiện quá trình tra cứu ngược lại (cuộn sang bên phải nếu bạn phải, để xem số hex 10df mà tôi grep cho):
# lspci -nn | grep -i emulex
03:00.0 Fibre Channel [0c04]: Emulex Corporation Saturn-X: LightPulse Fibre Channel Host Adapter [10df:f100] (rev 03)
03:00.1 Fibre Channel [0c04]: Emulex Corporation Saturn-X: LightPulse Fibre Channel Host Adapter [10df:f100] (rev 03)
# lstopo --whole-io | grep 10df
PCI 10df:f100
PCI 10df:f100
Hủy bỏ lệnh grep đường ống, ở trên và lục lọi thông qua đầu ra bán thủ công để tìm thiết bị trong lstopo --whole-io
màn hình đầy đủ (bên trái là bài tập cho đầu đọc).
lspci -nn | grep PCINUMBER
làm cho ngày của tôi Tôi có hai Samsung 970 Pro và lệnh đó đã giúp tôi xác định chúng từ ltopo
đầu ra. Cảm ơn bạn.
numa_node = -1
vàlocal_cpulist = 0-15
. Điều đó không thể đúng, tôi có 2 nút numa như được xác nhận bởi hwloc.