मेरे सभी CPU का उपयोग ksoftirqd / 0 प्रक्रिया क्यों है?


67

मुझे लग रहा था कि उबंटू थोड़ा सुस्त चल रहा था, और फिर मैं इस पर चलने वाली प्रक्रियाओं को देखने के लिए गया, और एक पाया जो सीपीयू नामक 50% का उपयोग कर रहा था ksoftirqd/0

क्या किसी को पता है कि यह प्रक्रिया क्या करती है, यह इतना सीपीयू क्यों उपयोग कर रहा है और इसे कम सीपीयू-गहन कैसे बनाया जाए?

जवाबों:


77

आपका कंप्यूटर IRQs (व्यवधान अनुरोध) के माध्यम से इससे जुड़े उपकरणों के साथ संचार करता है। जब एक उपकरण से कोई बाधा आती है, तो ऑपरेटिंग सिस्टम रुक जाता है कि वह क्या कर रहा था और उस रुकावट को संबोधित करना शुरू कर देता है।

कुछ स्थितियों में आईआरक्यू बहुत तेजी से एक के बाद एक आते हैं और ऑपरेटिंग सिस्टम एक के आने से पहले सर्विसिंग को समाप्त नहीं कर सकता है। यह तब हो सकता है जब एक उच्च गति नेटवर्क कार्ड को एक छोटी समय सीमा में बहुत बड़ी संख्या में पैकेट मिलते हैं।

क्योंकि ऑपरेटिंग सिस्टम IRQ को संभाल नहीं सकता है क्योंकि वे आते हैं (क्योंकि वे एक के बाद एक बहुत तेजी से पहुंचते हैं), ऑपरेटिंग सिस्टम उन्हें एक विशेष आंतरिक प्रक्रिया द्वारा बाद के प्रसंस्करण के लिए कतार में रखता है ksoftirqd

यदि ksoftirqdCPU समय के छोटे प्रतिशत से अधिक ले रहा है, तो यह इंगित करता है कि मशीन भारी रुकावट के अधीन है।


22

मैन पेज से, ksoftirqdएक प्रति-सीपीयू कर्नेल थ्रेड है जो मशीन के भारी नरम-इंटरप्ट लोड के तहत चलता है।

आप सेटिंग्स को थोड़ा मोड़ सकते हैं, यह परिभाषित करके कि सीपीयू एक निश्चित रुकावट उठाता है। आप इस की सामग्री को बदल कर करते हैं /proc/irq/$interrupt_number/smp_affinity। आप कर सकते हैं:

cat /proc/interrupts

संख्या smp_affinitycpus का एक बिटमैप है, जिसे हेक्स कोड में दर्शाया गया है। सबसे सही बिट सबसे कम महत्वपूर्ण है। उदाहरण के लिए, मेरे सिस्टम में 8 कोर हैं। अगर मैं केवल कोर 1, 3 और 4 का उपयोग करना चाहता था, तो मैं smp_affinity को सेट करूंगा 1a:

cpu_7 cpu_6 cpu_5 cpu_4 cpu_3 cpu_2 cpu_1 cpu_0
  0     0     0     1     1     0     1     0    = 0001 1010 = 1a (in hex)

व्यक्तिगत रूप से, मैंने किसी भी सीपीयू की स्थापना की, जो अवरोधक 29 (मेरे 8-कोर सिस्टम में eth0) को लेने में सक्षम हो:

sudo echo ff > /proc/irq/29/smp_affinity

4

ksoftirqd एक प्रति-सीपीयू कर्नेल धागा है जो मशीन के भारी नरम-अवरोध लोड के तहत चलता है। इसलिए, यह आपके सीपीयू को नहीं खा रहा है, बल्कि आपके आईआरक्यू लोड को कम कर रहा है।


1
मुझे पता है कि यह askubuntu.com है, लेकिन रास्पबेरी पाई काफी विपरीत है, ksoftirqd गहन आईआरक्यू लोड पर सीपीयू के सभी खा रहा है।
मशीनिनडिक्ट

जैसा कि मैंने समझा कि ksoftirqd प्रक्रियाओं ने सॉफ्टरिक को स्थगित कर दिया (जब उन्हें जल्दी से संसाधित नहीं किया जा सकता)। जब बहुत सारे सॉफ्टरिक्स होते हैं और / या वे प्रोसेस करने के लिए बहुत अधिक सीपीयू समय का उपभोग करते हैं तो ksoftirqd बहुत अधिक सीपीयू समय की खपत करता है।
पाबौक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.