PCIe डिवाइस NUMA नोड निर्धारित करें


10

काफी हाल ही में लिनक्स OS को मानते हुए, यह निर्धारित करने का एक आसान तरीका है कि NUMA नोड PCI PCI स्लॉट, जहां एक उपकरण प्लग किया गया है, के अंतर्गत आता है?

जवाबों:


10

उदाहरण के लिए, आपको प्रश्न में PCIe स्लॉट की निर्देशिका में जाना चाहिए eth0:

 cd /sys/class/net/eth0/device

जहां मिलेगा numa_node, local_cpusऔर local_cpulistआप के लिए, ब्याज की तीन फ़ाइलें। आप catउन्हें बस , और वांछित डेटा देख सकते हैं।


हुह, मैं numa_node = -1और local_cpulist = 0-15। यह सही नहीं हो सकता है, मेरे पास hwloc द्वारा पुष्टि के रूप में 2 सुमा नोड्स हैं।
नवीन

3

यदि आप डिवाइस आईडी जानते हैं तो आप hwloc ( http://www.open-mpi.de/projects/hwloc/ ) का भी उपयोग कर सकते हैं । हालाँकि, यदि आपके पास एक ही डिवाइस के 2 (उदाहरण के लिए, GPU), NUMA नोड को जानने का एकमात्र तरीका है जहां भौतिक स्लॉट जुड़ा हुआ है, तो मदरबोर्ड मैनुअल पर एक नज़र डालना है।

Asus Z9PE-D8 ( http://dlcdnet.asus.com/pub/ASUS/mb/LGA2011/Z9PE-D8-WS/Manual/e8726_z9pe-d8_ws.pdf ) के लिए यह पृष्ठ 223 में है।


अगर सच है, तो यह संभवतः वास्तुकला पर निर्भर है। उदाहरण के लिए, इंटेल Xeon प्रोसेसर की पिछली कई पीढ़ियां, PCIe रूट ब्रिज CPU चिप पर ही है। इस प्रकार, सीपीयू सॉकेट को जानना जहां एक डिवाइस की पीसीआई बस रहता है, ऑपरेशन के लिए एक मुख्य आवश्यकता है। यह इस मामले में "/ sys / class ..." उत्तर से स्पष्ट है। एक ही सिस्टम पर, अलग-अलग सॉकेट पर दो समान सीपीयू अलग-अलग NUMA डिवाइस दिखाते हैं। वैकल्पिक रूप से, अधिकांश प्रणालियों पर, विभिन्न busses के उपकरणों में काफी अलग PCIe पते होंगे, उदाहरण के लिए सॉकेट 1 पर 00.0, और 89: 00.0 सॉकेट पर 2.
पॉल

3

स्वीकृत उत्तर केवल नेटवर्क कार्ड के लिए काम करता है, जहाँ तक मैंने पाया है। GuillermoMA के जवाब के अनुसार, hwloc आपको असली सौदा देगा भले ही वह सुपाठ्य न हो। lstopohwloc पैकेज में पाया जाता है (कम से कम 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"

NUMANode L # 0, निश्चित रूप से, CPU0 और NUMANode L # 1 CPU1 है। फिर आप ऊपर से अपना पसंदीदा PCI नंबर ले सकते हैं, जैसे 14e4: 16a1, और पता करें कि यह क्या है, और इसके PCI एड्रेस को आगे के विश्लेषण के लिए 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)

मेरी एक मशीन पर, एक एमुलेक्स फाइबर चैनल कार्ड lstopoआउटपुट में नहीं दिखा । मैंने इसे lstopo --whole-ioरिवर्स लुकअप प्रक्रिया (दाईं ओर स्क्रॉल करें यदि आपके पास है, तो 10df हेक्स संख्या जिसे मैं grep करता हूं) देखने के लिए उपयोग करके पाया :

# 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

डिवाइस को पूर्ण lstopo --whole-ioडिस्प्ले में (पाठक के लिए एक अभ्यास के रूप में छोड़ दिया) खोजने के लिए, आउटपुट अर्ध-मैन्युअल रूप से पाइप ग्रीप कमांड, ऊपर और अफवाह को हटा दें ।


lspci -nn | grep PCINUMBERमेरा दिन बना दिया। मेरे पास दो सैमसंग 970 प्रो हैं और उस कमांड ने मुझे ltopoआउटपुट से उन्हें पहचानने में मदद की । धन्यवाद।
पिएट्रोप

0

एक का उपयोग कर प्राप्त कर सकते हैं: # cat /sys/bus/pci/devices/<PCI device>/numa_node

उपयोग कर PCI डिवाइस पता प्राप्त करें # lspci -nn

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.