मैं "कर्नेल_टैस्क" प्रक्रिया से एक आउट-ऑफ-कंट्रोल कैसे डिबग करूं?


42

अभी हाल ही में मैंने अपने बैटरी जीवन को काफी महत्वपूर्ण गिरावट और "कर्नेल_टैस्क" प्रक्रिया में देखा है, जिसमें सीपीयू का थोड़ा सा उपयोग करके (मेरे 2.8ghz दोहरे कोर i7, 2010 MBP पर लगातार 1-6%)। जाहिर है मुझे लगता है कि कर्नेल_टस्क का सीपीयू उपयोग बैटरी ड्रॉप में योगदान दे रहा है और मुझे यह पता लगाने की आवश्यकता है कि क्यों।

Google को खोजते हुए, ऐसा लगता है कि कर्नेल_टैस्क ओएस एक्स का विंडोज के "svchost.exe" का संस्करण है - कुख्यात डू-एवरीथिंग प्रक्रिया जिसे आप कभी भी सही मायने में डिबग नहीं कर सकते हैं, आपको उनमें से एक के काम करने तक बस मैन्युअल रूप से फ्लिप स्विच करना होगा।

क्या कोई तरीका है जिससे मैं अधिक आसानी से आउट-ऑफ-कंट्रोल k कर्नेल_टैस्क गतिविधि के नीचे पहुंच सकता हूं? मैंने रिबूट की कोशिश नहीं की है क्योंकि अगर वह इसे "ठीक" करता है, तो यह वास्तव में अंतर्निहित समस्या को ठीक नहीं करता है।

गतिविधि मॉनिटर CPU उपयोग दिखाता है। जब मैंने इंस्पेक्ट को हिट किया, तो यह 77 थ्रेड्स, 2 पोर्ट्स, घंटे और सीपीयू समय के घंटे दिखाता है, कॉनटेक्स्ट स्विचेस लगभग 400 प्रति सेकंड और मेक इन और आउट दोनों लगभग 6,000 प्रति सेकंड से ऊपर जा रहा है।

मैं किसी तरह इस kernel_taskप्रक्रिया का निरीक्षण या निगरानी कैसे कर सकता हूं और यह पता लगा सकता हूं कि वास्तव में इस सारी शक्ति का उपयोग क्या है?

(ध्यान दें: मेरे वर्तमान संदिग्ध हाल ही में 10.6.7 अपडेट हैं, फ़ायरफ़ॉक्स अपडेट 4 बीटा 10 से आरसी, या ScreenResX - ये सभी चीजें हैं जो मैंने हाल ही में की हैं जो मैं सोच सकता हूं)


मैं kernel_taskनियंत्रण से बाहर का वर्णन नहीं करूंगा । इस क्षेत्र में निदान के लिए गतिविधि मॉनिटर सर्वोत्तम उपयोगिता नहीं हो सकती है। कंसोल में, सिस्टम लॉग क्वेरीज़ को जोड़ने से आपको उन तरीकों की पहचान करने में मदद मिलती है जिनमें कर्नेल कार्य का उपयोग किया जाता है; फिर एक को प्रारंभिक प्रश्न को परिष्कृत करें जो अधिक आसानी से उत्तर दिया जा सकता है।
ग्राहम पेरिन

1
लगातार 200% CPU किसी भी प्रक्रिया के लिए नियंत्रण से बाहर लगता है।
twe4ked

जवाबों:


12

निम्नलिखित टर्मिनल कमांड का उपयोग करके kernal_task से जुड़ी फ़ाइलों और कार्यक्रमों की पहचान करने के तरीके के बारे में मेरा एक ही सवाल था :

kextstat -l -k | awk '{n = sprintf("%d", $4); print n, $6}' | sort -n

यह विभिन्न kexts और उनसे जुड़ी मेमोरी को प्रदर्शित करेगा। उदाहरण के लिए, 6184960 com.apple.driver.AirPort.Brcm4360मेरे लिए एक बड़ा हॉग है, लेकिन अगर मैं वाईफाई का उपयोग करना चाहता हूं तो मैं इसके बारे में बहुत कुछ नहीं कर सकता।

मेरे द्वारा प्राप्त सुझावों में से एक यह था कि सभी गैर-Apple kexts को ऊपर से पाइपिंग करके मेमोरी लेना है grep -v com.apple। यह संभव है कि कुछ गैर-Apple प्रोग्राम आपके संसाधनों का उपयोग कर रहे हों। आपको कुछ भी तोड़ने के बिना उन्हें निकालने में सक्षम होना चाहिए।

आपके कंप्यूटर को फिर से शुरू करने के लिए पाठ्यक्रम का पुराना समाधान है। कभी-कभी यह सब सीपीयू के उपयोग के सामान्य स्तर पर प्रक्रियाओं को सेट करने के लिए होता है।


पहले कॉलम में संख्या क्या है?
एंथ्रोपिक 10

@Anentropic - कोशिश करें man kextstat, जिसे देखते हुए और awkकमांड हथियाने में $4, यह केक्स मेमोरी उपयोग के आकार जैसा दिखता है। प्रश्न पर विचार करने का मन करता है।
रिबस बी बी

11

यहाँ एक महान व्याख्या है कि एक कर्नेल_टस्क क्या है। यह ड्राइवर (kexts), नेटवर्क या डिस्क गतिविधि हो सकता है। आप kernel_taskप्रक्रिया को संलग्न करने के लिए केवल इंस्ट्रूमेंट्स का उपयोग नहीं कर सकते ।

अन्य संकेतों के लिए देखें, जैसे लॉग (Console.app), डिस्क गतिविधि (उदाहरण के लिए:) iotop fs_usage, नेटवर्क गतिविधि (स्थानीय नेटवर्क से डिस्कनेक्ट करने, नेटवर्क वरीयताओं में डिवाइस बंद करने), स्मृति ( kextunload) ड्राइवरों से अनइंस्टॉल / हटाने का प्रयास करें , जो तृतीय पक्ष से हैं - टैबलेट, यूएसबी 3 जी मोडेम और आदि अनुप्रयोगों के लिए चेक करें, जो किक्सट स्थापित कर रहे हैं

यह भी सुनिश्चित करें कि आपका फ़ाइल सिस्टम दूषित नहीं है, यदि आपके पास हाल ही में कोई क्रैश हुआ था - एक चेक करें।


1
मेरे पास लगभग 200% CPU उपयोग (4 कोर में से 2) लगभग लगातार था, आमतौर पर एक बूट के बाद शुरू होता है जब फाइल या कुछ इसी तरह का स्थानांतरण होता है, लेकिन बाद में वापस सामान्य नहीं होता है। कारण यह निकला कि मेरे सिस्टम वॉल्यूम को मरम्मत की आवश्यकता है। एक बार जो किया गया था, kernel_taskवह गतिविधि के स्तर पर वापस आ गया था।
डैनियल बेक

1
जवाब में लिंक अब मर चुका है
स्वैडर

1
@ संता ने लिंक के संबंध में सुझाए गए संपादन के लिए धन्यवाद दिया, लेकिन वेबैक मशीन पर एक संस्करण मौजूद होने पर लिंक को हटाने का कोई मतलब नहीं है। लिंक को वेनबैक मशीन से बदलें।
GRG

8

जैसा कि @ क्रिस्‍टोफर द्वारा बताया गया है, हीट k गिरी_task CPU को स्पाइक का कारण बन सकता है। कारण इस पोस्ट में सूचीबद्ध है "फिक्सिंग" kernel_task CPU समस्याएँ MacOS Lion 10.7 में । जाहिरा तौर पर जब सीपीयू ACPI_SMC_PlatformPlugin.kext को गर्म करता है तो वास्तविक सीपीयू लोड को कम करने के प्रयास में सीपीयू चक्र लेगा।

तो इसका एक उपाय है कि आप अपने मैक (जैसे पंखे) को किसी बाहरी पंखे या SMCFanControl जैसी किसी चीज से ठंडा करें

लेख एक और समाधान देता है जो उस व्यवहार को ट्रिगर करने वाले उप-कोटे को हटाने के लिए है। हालाँकि मुझे मानना ​​होगा कि मैं व्यक्तिगत रूप से इस बात को लेकर निश्चित नहीं हूँ कि उस व्यवहार को बंद करना कितना सुरक्षित है।


2
मैं एक अनुमान लगाने जा रहा हूं कि यह बहुतायत में k CPU_task का निरंतर उच्च CPU उपयोग करने का कारण है। हर बार जब यह मेरे लिए हुआ, मैं अपनी मशीन का बहुत अधिक उपयोग कर रहा हूं और यह सुस्त पड़ना शुरू हो जाएगा, लेकिन मैं जिन स्पष्ट प्रक्रियाओं का उपयोग कर रहा था उनमें से कोई भी स्पाइक पैदा नहीं कर रहा था, बस कर्नेल_टस्क। भारी प्रक्रियाओं (वीडियो या गेम, आमतौर पर) को बंद करें और अंत में यह चला जाता है। इस बीच मेरी 2011 की एमबीपी लग रहा है जैसे यह बंद हो रहा है! इसे फटा हुआ खोल दिया और इसे एक अच्छा साफ दिया, हीट्स पर धूल के कंबल को हटा दिया और मैं कम प्रशंसक और कोई कर्नेल_टस्क पागल नहीं था।
जोय टी

5

आमतौर kernel_taskपर आउट-ऑफ-कंट्रोल तब होता है जब कुछ अन्य प्रक्रियाएं सिस्टम कॉल्स या संसाधनों (मेमोरी या डिस्क I / O ईवेंट्स) का अति प्रयोग कर रही हैं।

जब ऐसा होता है, तो आप fs_usageरिपोर्टिंग उपयोगिता का उपयोग कर सकते हैं जो आपको वास्तविक समय में फाइल सिस्टम गतिविधि से संबंधित सिस्टम कॉल और पेज दोष दिखाएगा।

इसलिए टर्मिनल में इस कमांड को चलाएं:

sudo fs_usage

फिर देखें कि कौन सी प्रक्रियाएँ अक्सर कुछ सिस्टम कॉल कर रही हैं और यदि आप उनका उपयोग नहीं कर रहे हैं, तो उन्हें बंद करने / मारने पर विचार करें।

अधिक विशिष्ट होने के लिए, कृपया TIME INTERVAL कॉलम देखें जो आपको सिस्टम कॉल में बिताए समय देता है। एक Wबीता हुआ समय के बाद यह संकेत करता है प्रक्रिया (उस मामले में बीता हुआ समय प्रतीक्षा समय भी शामिल है) बाहर गतिविधि निर्धारित किया गया था दिखाई दे रहा।

ताकि सिस्टम कॉल में सबसे अधिक समय अंतराल का उपयोग करने वाली प्रक्रियाओं को फ़िल्टर करने के लिए, चलाएं:

sudo fs_usage | grep -v 0.0000

जो आपको अंतिम कॉलम में सबसे भूख प्रक्रियाओं (कर्नेल समय के संदर्भ में) दिखाएगा। आप परिशुद्धता के लिए शून्य की संख्या समायोजित कर सकते हैं (कम शून्य प्रदर्शित, अधिक समय व्यतीत)।

अधिक विचारों के लिए, यह भी जांचें: उच्च कर्नेल कार्य मेमोरी उपयोग की जांच कैसे करें?


यहाँ सबसे आम मुद्दे हैं:


2
ITerm2 और grepखुद को छानने के बाद एक अच्छी आउटपुट स्ट्रीम :sudo fs_usage | grep -v -e '0.0000' -e 'iTerm2' -e 'grep'
जोएल पुर्रा

4

मेरे पास कर्नेल_टैस्क सीपीयू उपयोग में बड़े पैमाने पर स्पाइक था, और यह पता चला कि मेरा सीपीयू प्रशंसक आंशिक रूप से अनप्लग था। बहुत गर्म हो जाने पर सीपीयू के थ्रॉटलिंग के साथ कर्नेल_टस्क का कुछ करना होता है। आपके मामले में, हो सकता है कि आपका प्रशंसक सिर्फ कबाड़ और धूल से भर गया हो और उसे साफ करने की आवश्यकता हो।


वह पागल है! क्या आपने कभी डिबगिंग करते समय अपने लॉग की जांच की? आप उस समाधान के लिए कैसे आए?
रिक

3

मुझे योसेमाइट में भी यही समस्या थी लेकिन इस अच्छी आत्मा की बदौलत एक और अच्छे साथी के आधार पर मैं इसे हल कर सका। मैं अभी भी समझ नहीं पाया कि क्या हुआ था, लेकिन एक पूरे सप्ताहांत को खोने के बाद इसे काम करने की कोशिश करने के बाद मैंने बस छोड़ दिया और आँख बंद करके उनके निर्देशों का पालन किया। गतिविधि मॉनीटर में मेरी हताशा देखें:

आपके सभी सीपीयू हमारे हैं

सावधान रहें, हमेशा पहले बैकअप लें और स्पष्टीकरण के लिए दिए गए लिंक पढ़ें। मैं किसी भी नुकसान के लिए शून्य ज़िम्मेदारी लेता हूं। आपको चेतावनी दी गई थी।

मॉडल का पता लगाएं

$ system_profiler -detailLevel मिनी | grep "मॉडल पहचानकर्ता:"

मॉडल पहचानकर्ता: मैकबुकप्रो 8,2

फ़ाइल को ले जाएं और बैकअप दें

$ mkdir -p ~ / बैकअप

INR

$ sudo mv MacBookPro8_2.plist ~ / बैकअप /


1
इस समाधान ने मेरे लिए काम किया। मेरे पास मैकबुकप्रो संस्करण समान है। दुर्भाग्य से इसमें कार्यक्षमता को अक्षम करना शामिल है जिसे मशीन की दीर्घायु को बढ़ाने के लिए डिज़ाइन किया गया है। मैंने सीपीयू टेम्प और फैन फंक्शनैलिटी को चेक किया है और यह सामान्य लगता है, इसलिए मैं मानता हूं कि इस फंक्शनलिटी में एक बग है, हालांकि मैं अभी भी इस बात की तह तक नहीं जा सका हूं कि सीपीयू कूलिंग फेलसेफ को ट्रिगर क्यों किया जा रहा है (कभी-कभी इससे लॉग इन करने से पहले (अंत तक नहीं)।
misant.info

@ misant.info किसी कारण से एल कैप्टन ने इसे हल किया। मेरा मैक एक दोषपूर्ण बैटरी के साथ था, और मैं एल कैप्टन के साथ बदल गया, इसलिए पता नहीं है कि वास्तव में कौन सी कार्रवाई तय की गई थी। अपने मैक के साथ गुड लक!
कोई व्यक्ति अभी भी

2

मैं एक नए 2011 मैकबुक प्रो के साथ OSX लायन पर हूँ, और मैंने हाल ही में kern_task को लगभग 25-30% CPU और मेरे फैन को घंटों और घंटों के लिए अधिकतम चलाया है। मैंने एक समय में एक चीज़ की कोशिश की और जो हल किया वह था ... फाइंडर ऐप में 5 या 6 विंडो बंद करना। कह नहीं सकता मैं समझता हूँ क्यों, लेकिन यह स्पष्ट रूप से था।


2
क्या आपके पास खोजक के लिए कोई एक्सटेंशन स्थापित है? उदाहरण के लिए, प्रोग्राम जो टूलबार या राइट-क्लिक (संदर्भ) मेनू में कुछ जोड़ते हैं?
Ricket

1
। इसका कारण यह है आपके एक या खिड़कियां है "सभी आकार को दिखाने" चेकबॉक्स 'देखें> शो दृश्य विकल्प "विन्यास कि बंद कर दें में सक्षम के अधिक है, तो सभी फ़ोल्डर के लिए डिफ़ॉल्ट के रूप में स्थापित है और यह बंद हो जाएगा।
ब्रायन Topping

2

मेरे मैक पर kernel_task का CPU उपयोग उस इंटरनेट बैंडविड्थ के लिए आनुपातिक है जो लगभग 0% से 50% तक है। यह शायद मेरे Huawei 3G मॉडेम (HuaweiDataCardDriver.kext) के ड्राइवरों के कारण होता है।

आप कर्नेल एक्सटेंशन को अक्षम करने का प्रयास कर सकते हैं। Kextunload का उपयोग करने की कोई आवश्यकता नहीं है: बस kext बंडलों को / System / Library / Extensions / से किसी अन्य फ़ोल्डर में स्थानांतरित करना और पुनरारंभ करना सुरक्षित है। आप सलाहकार की कैनरी का उपयोग कर सकते हैं या kextstat | grep -v com.appleकर्नेल एक्सटेंशन को सूचीबद्ध कर सकते हैं जो ओएस एक्स के साथ नहीं आया था।


1

विशेष रूप से नियंत्रण- संबंधी कर्नेल_टस्क का निवारण करने के लिए , यहाँ कुछ उपयोगी कमांड दिए गए हैं:

  • प्रोफ़ाइल पूरी प्रणाली, कर्नेल प्रक्रिया पर ध्यान केंद्रित करती है (PID: 0), run:

    sudo spindump 0 -reveal
    

    विशिष्ट प्रक्रिया (जैसे launchd) के लिए, उपयोग sample, जैसे sudo sample launchdया पीआईडी ​​द्वारा।

  • कर्नेल कार्य द्वारा मेमोरी की खपत को इकट्ठा करने के लिए, (डिफ़ॉल्ट रूप से गंदे द्वारा क्रमबद्ध) का उपयोग करें:

    sudo footprint 0
    

    नोट: -aसभी प्रक्रियाओं को लक्षित करने के लिए उपयोग करें ।

  • कई बर्तनों से सिस्टम-वाइड डायग्नोस्टिक जानकारी इकट्ठा करने के लिए sudo sysdiagnose:।

    इसे Shift- Control- - - -. (पीरियड) मारकर भी ट्रिगर किया जा सकता है ।

    प्रारंभ होने पर आपको स्क्रीन को फ्लैश करते हुए देखना चाहिए, फिर कुछ मिनट तक प्रतीक्षा करें जब तक कि फाइंडर में फाइल सामने न आ जाए ।

    देखें: आपको ओएस एक्स से सिस्टम डायग्नोस्टिक फाइलें कैसे मिलती हैं?

    तब uncompress और फ़ाइलों जैसे जाँच footprint*.txt, spindump.txt, taskinfo.txt, bc_stats.txtऔर अन्य।

  • vm.swapusageकर्नेल अवस्थाओं में जाँच करें , जैसे sysctl -a | grep ^vm.swapusage

    मूल रूप से, आपके द्वारा उपयोग किए जाने वाले अधिक स्वैप (स्वैप फ़ाइलों की जांच करें, /private/var/vmजिनके द्वारा प्रबंधित किया जाता है dynamic_pager, देखें :), स्वेपिन्स / स्वैपआउट ऑपरेशन (देखें और ) के man dynamic_pagerकारण प्रदर्शन के साथ संघर्ष कर रहे अधिक कर्नेल । परीक्षण करने के लिए, दौड़ें:man vm_statman fs_usage

    vm_stat 1
    sudo fs_usage | grep -w kernel_task
    

    नोट: हिट Control- Cबंद करने के लिए।


0

मेरे लिए मेरे पास एक प्रक्रिया थी (इस मामले में नेटबींस, जो 20 जीबी की तरह एक फ़ाइल पढ़ रही थी) और यह नेटबिन के लिए 80% सीपीयू, कर्नेल_टस्क (बहुत संदिग्ध) के लिए 20% सीपीयू की तरह उपयोग करेगा। इससे मेरा पूरा सिस्टम टार की तरह चलने लगा।

यह भी संदिग्ध है कि "मेन्यूमेटर्स" बहुत सारे "सीस" समय की रिपोर्ट करेगा, प्रति सीपीयू। आप इसे "शीर्ष" कमांड में भी देख सकते हैं, जैसेCPU usage: 21.40% user, 23.74% sys

बाद में, यह 120% सीपीयू, कर्नेल_टस्क 65% हो सकता है, लेकिन वैसे भी वे दोनों "एक ही समय में उच्च सीपीयू" थे।

sudo fs_usage यह बहुत दिखाया:

12:46:34.446367  PAGE_IN_FILE      A=0x093a5bb000       0.000001   java.453214

मेरा सिद्धांत है कि netbeans "इतना पढ़ रहा था" कि यह पृष्ठ दोष भी पैदा कर रहा था अपने स्वयं के कार्यक्रम (यानी अपने स्वयं के कार्यक्रम को बाहर भेजने के लिए), इसलिए पृष्ठ दोष प्रणाली के पीछे एक कतार हो रही थी। और संभवत: "अन्य कार्यक्रमों" को स्वैप करने के साथ-साथ स्वैप करने के लिए भी, जिससे पूरे सिस्टम को बोलना पड़ता है।

का उपयोग करते हुए top, FAULT कॉलम 70K / sec, साथ ही साथ बढ़ रहा था।


0

मेरी मैकबुक प्रो लगभग सप्ताह के लिए कर्नेल_टस्क उच्च सीपीयू के कारण अनुपयोगी थी उसी समय बैटरी फट जाती है इसलिए मैंने इसे बदलने के लिए अंत में रोम में एप्पल सेंटर पर जाने का फैसला किया ... भले ही वारंटी से बाहर Apple ने मेरी बैटरी बदल दी हो (और कीबोर्ड के रूप में अच्छी तरह से) 0 € लागत के लिए। इससे भी बेहतर ... कर्नेल_टैस्क समस्या अचानक गायब हो जाती है !!! इसलिए मुझे पूरा यकीन है कि यह प्रत्यक्ष या अप्रत्यक्ष रूप से बैटरी की वजह से था

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