Ubuntu पर IRQBALANCE_BANNED_CPUS के साथ हार्डवेयर अवरोध को कैसे प्रतिबंधित करें?


9

मैं कुछ CPU से इंटरप्ट को प्रतिबंधित करना चाहूंगा। मैंने IRQBALANCE_BANNED_CPUS विकल्प के बारे में सुना। मुझे लगता है कि मेरी मशीन की पृष्ठभूमि में अनियमितता चल रही है। मैं संपादित करने के लिए कहां जाऊं और मैं उस विकल्प को कैसे कॉन्फ़िगर करूं? उदाहरण के लिए, मैं cpus 2,3,4,5 को इंटरप्ट से बाहर करना चाहता हूं। तर्क वर्णनकर्ता है:

Cpus का एक मास्क प्रदान करता है जिसे irqbalance को नजरअंदाज करना चाहिए और कभी भी इसमें व्यवधान नहीं डालना चाहिए

मास्क से क्या मतलब है? और मैं उस विकल्प के साथ कहां से असमानता को कॉन्फ़िगर कर सकता हूं?

EDIT1: कैसे पता चलेगा कि मेरा विन्यास प्रभाव में है, दूसरे शब्दों में कि मेरे सीपीयू को कोई अवरोध नहीं मिल रहा है? मैं जाँच / खरीद / व्यवधान कर रहा हूँ लेकिन कुछ संख्या वहाँ बढ़ रही है।

EDIT2: अब मैंने अपनी मशीन को IRQBALANCE_BANNED_CPUS = 3e के साथ बूट किया ताकि केवल CPU 0 इंटरप्ट से प्रतिबंधित न हो। तो मुझे cpo0 को बहुत सारे व्यवधानों को प्राप्त करते हुए देखने की उम्मीद करनी चाहिए और दूसरे cpus को बीच में नहीं आने देना चाहिए, है ना? यहाँ मेरा / proc / interrupts है। बोल्ड में लाइनें सभी cpus के लिए बदल रही हैं। लाइनें 22, 24, 35 और LOC बदल रही हैं।

            CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       
   0:         26          0          0          0          0          0   IO-APIC-edge      timer
   1:          2          0          0          0          0          0   IO-APIC-edge      i8042
   6:          3          0          0          0          0          0   IO-APIC-edge      floppy
   8:          1          0          0          0          0          0   IO-APIC-edge      rtc0
   9:          0          0          0          0          0          0   IO-APIC-fasteoi   acpi
  12:          4          0          0          0          0          0   IO-APIC-edge      i8042
  14:      13556          0          0          0          0          0   IO-APIC-edge      ata_piix
  15:          0          0          0          0          0          0   IO-APIC-edge      ata_piix
  18:          0          0          0          0          0          0   IO-APIC-fasteoi   ata_piix
  19:          2          0          0          0          0          0   IO-APIC-fasteoi   ohci1394
  20:          3          0          0          0          0          0   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb3, uhci_hcd:usb6
  21:        197        635         39          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb4, uhci_hcd:usb7, HDA Intel
  22:        344       3506          0        702          0          0   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb5, uhci_hcd:usb8
  24:        162         48          0          0          0          0   IO-APIC-fasteoi   nvidia
  35:        174          0         47          0          0          0   IO-APIC-fasteoi   nvidia
  53:       3517          0          0          0          0          0   PCI-MSI-edge      eth0
 NMI:          0          0          0          0          0          0   Non-maskable interrupts
 LOC:      11007       8840       6480       5652       4272       3046   Local timer interrupts
 SPU:          0          0          0          0          0          0   Spurious interrupts
 PMI:          0          0          0          0          0          0   Performance monitoring interrupts
 PND:          0          0          0          0          0          0   Performance pending work
 RES:        292        169        217        125        122        126   Rescheduling interrupts
 CAL:         86        280        254        292        293        291   Function call interrupts
 TLB:       1147       1031       1348        616        177        322   TLB shootdowns
 TRM:          0          0          0          0          0          0   Thermal event interrupts
 THR:          0          0          0          0          0          0   Threshold APIC interrupts
 MCE:          0          0          0          0          0          0   Machine check exceptions
 MCP:          2          2          2          2          2          2   Machine check polls
 ERR:          5
 MIS:          0

EDIT3: ऐसा लगता है कि IRQBALANCE_BANNED_CPUS विकल्प पूरी तरह से Ubuntu पर IGNORED है । मैंने 1, 3e के साथ अपनी मशीन को रिबूट करने की कोशिश की और सभी जगह बाधित हो गया। जब मैं ENABLED = 0 सेट करके irqbalance को अक्षम करता हूं, तो मुझे cpu0 पर कोई साफ़ / खरीद / व्यवधान मिलता है और कोई अन्य cpu नहीं।

जवाबों:


7

आप IRQBALANCE_BANNED_CPUS को / etc / default / irqbalance में सेट करते हैं । मैंने इसे /etc/init.d/irqbalance में देखकर पाया । लेकिन उस सेटिंग के लिए मान्य मूल्य क्या हैं? Red Hat के मैन पेज से:

यह प्रमुख '0x' के बिना एक हेक्स मास्क है, सिस्टम पर बड़ी संख्या में प्रोसेसर के साथ प्रत्येक समूह में आठ हेक्स अंकों का sepearated ba a comma ',' होता है। यानी export IRQBALANCE_BANNED_CPUS=fc07 वीं -12 वीं cpus (cpu6-cpu11) export IRQBALANCE_BANNED_CPUS=ff000000,00000001को irqs को असाइन करने से असमानता को रोक देगा या 1 (cpu0) और 57 वीं -646 cpus (cpu56-cpu63) को irqs को असाइन करने से रोक देगा।

मास्क की अवधारणा को विकिपीडिया पर समझाया गया है। वह पढ़ें, फिर वापस आएं। आइए Red Hat के पहले उदाहरण को तोड़ते हैं। हेक्साडेसिमल में fc0 के रूप में लिखी जाने वाली संख्या को बाइनरी में 111111000000 लिखा जाता है। बाएं से दाएं स्कैनिंग (यानी कम से कम महत्वपूर्ण बिट से सबसे महत्वपूर्ण बिट तक ), छह शून्य हैं। इसका मतलब यह है कि पहली-पांचवीं cpus (cpu0-cpu5) को इंटरप्ट किया जा सकता है। फिर, छह हैं। इसका मतलब है कि 7 वें -12 वें cpus (cpu6-cpu11) को इंटरप्ट नहीं सौंपा जाएगा।

ऐसा लगता है कि आप cpu0 और cpu1 को इंटरप्ट प्राप्त करने की अनुमति देना चाहते हैं, लेकिन cpu2, cpu3, ​​cpu4 और cpu5 को इंटरप्ट होने से रोकते हैं। इसका मतलब है कि आपको दो शून्य और चार लोगों या 111100 की आवश्यकता है। यह हेक्साडेसिमल में 3 सी है। इसलिए, आप सामग्री के साथ / etc / default / irqbalance बनाएँगे

ENABLED="1"
ONESHOT="0"
IRQBALANCE_BANNED_CPUS="3f"

यह देखने के लिए कि क्या चल रहा है, कोशिश करें

$ sudo service irqbalance stop
Stopping SMP IRQ Balancer: irqbalance.
$ source /etc/default/irqbalance 
$ sudo irqbalance --debug

स्पष्टीकरण के लिए धन्यवाद। यहाँ भ्रम है: 6 सीपीयू मशीन पर बान सीपीयू 0 के लिए। क्या मैं उपयोग करता हूं: 000001 (1) या 111110 (3e)। यह पहला, सही है?
TraderJoeChicago

कृपया मूल प्रश्न में मेरे संपादन की जाँच करें। मुझे यह जानने की आवश्यकता है कि मेरा कॉन्फ़िगरेशन कैसे काम कर रहा है, यह सुनिश्चित करने के लिए कि मुझे पढ़ना / खरीदना / बाधित करना है और मेरे सीपीयू को बीच में रोक दिया गया है। धन्यवाद!
ट्रेडरज्योइकोगो

मेरा संपादित नंबर 3 देखें: IRQBALANCE_BANNED_CPUS को उबंटू पर लगाया जा रहा है, जब तक कि हम मास्क को गड़बड़ नहीं कर रहे हैं। लेकिन मैंने बिना किसी सफलता के 1 और 3e की कोशिश की। :(
ट्रेडर जोईचैगो

मेरे डिबगिंग संपादन देखें।
Sciurus

2
नहीं। मैं पुष्टि कर सकता हूं कि यह Ubuntu 10.04.1 पर काम नहीं करता है। इस विन्यास विकल्प IRQBALANCE_BANNED_CPUS = "1" को अनदेखा किया जाता है।
ट्रैडरजॉइचैगो


0

इसे काम करने के लिए आपको ऊपर दिए अनुसार 3 सी का उपयोग करना होगा। बाद के संस्करण इसे स्वचालित रूप से करते हैं (कम से कम v 1.9 द्वारा डेबियन / साइड पर)


0

समस्या निवारण के मुद्दों के बारे में उपरोक्त सुझावों को जोड़ना - व्यवधान के चलने से उत्पन्न होने वाली रुकावटों को देखने के लिए एक उपयोगी आदेश:

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