उच्च कर्नेल कार्य मेमोरी उपयोग की जांच कैसे करें?


131

मैं अपने एमबीपी (16 जीबी रैम के साथ) का उपयोग कर रहा था और हमेशा की तरह नीले रंग से बाहर मैंने यह पॉपअप किया है:

आपका सिस्टम एप्लिकेशन मेमोरी से बाहर चला गया है।

अपने कंप्यूटर की समस्याओं से बचने के लिए, उन एप्लिकेशन को छोड़ दें जिनका आप उपयोग नहीं कर रहे हैं।

Force Quit Applications - आपका सिस्टम एप्लिकेशन मेमोरी - स्क्रीनशॉट से बाहर चला गया है

मैंने स्पष्ट रूप से कुछ बंद कर दिया है जो मैं कर सकता था, लेकिन यह मदद नहीं करता था।

मेमोरी पर जाँच करने के बाद, यह कर्नेल कार्य लगता है 7GB और 22.36GB स्वैप मेमोरी कुल 23GB का उपयोग किया गया था (जो स्पष्ट रूप से मामला था)। हालाँकि मैं अभी भी अपने SDD पर 20GB का स्पेस खाली कर रहा हूँ।

मेमोरी - iStat मेनू - स्क्रीनशॉट

गतिविधि मॉनिटर ने बहुत मदद नहीं की, जबकि मेरा OS X विनाश की ओर बढ़ रहा था।

प्रक्रिया एक्सप्लोरर

kernel_task - मेमोरी टैब - स्क्रीनशॉट kernel_task - सांख्यिकी टैब - स्क्रीनशॉट

मेरे topकर्नेल फ्रीज से पहले मेरे आँकड़े:

Processes: 344 total, 2 running, 5 stuck, 337 sleeping, 2580 threads                                                                                                                         19:23:56
Load Avg: 1.56, 1.62, 2.09  CPU usage: 3.51% user, 8.47% sys, 88.1% idle   SharedLibs: 46M resident, 0B data, 6572K linkedit. MemRegions: 757970 total, 2139M resident, 56M private, 907M shared.
PhysMem: 9410M used (6198M wired), 556M unused. VM: 1155G vsize, 1311M framework vsize, 112872658(320) swapins, 122668389(0) swapouts. Networks: packets: 299419263/363G in, 142126838/14G out.
Disks: 58970173/1079G read, 20012389/1120G written.

अंत में मेरा OS X जम गया और मुझे हार्ड रीसेट करना पड़ा, अपने SDD को रिकवरी मोड में ठीक करना और बाद में फिक्स करना (खोए हुए काम को पूरा करना, एप्लिकेशन के संघर्षों को ठीक करना, मेरे खोए हुए + पाए गए फ़ोल्डर की जांच करना, Chrome / टर्मिनल टैब चला गया, सिरदर्द, आदि)। )।

मेरा सवाल है, मैं कर्नेल कार्य के उच्च मेमोरी उपयोग पर कैसे जांच करूं या उस तरह की स्थिति से कैसे ठीक से निपटूं? मैंने गतिविधि मॉनीटर के साथ नमूना लेने की कोशिश की है, लेकिन यह समझ से बाहर है।


मेरा एमबीआर विवरण: 16 जीबी रैम के साथ 2.3GHz इंटेल कोर i7 (2013 के अंत में)। ओएस एक्स: 10.9.5


1
@klanomath आमतौर पर मैंने विशेष रूप से लंबे समय के साथ बहुत सारे फ्रीज किए हैं और ये अज्ञात कारण से सिर्फ कर्नेल फ्रीज हैं (मेरा एमबीआर काफी नया है)। लेकिन यह पहला पॉपअप मैंने देखा है कि मैं आउट-ऑफ-मेमोरी (16 जीबी रैम और 50 जीबी फ्री स्पेस के साथ) हूं। हालाँकि मेरा मुख्य प्रश्न यह है कि मैं कर्नेल कार्य के मेमोरी उपयोग की जांच कैसे करूँ, इसलिए यदि यह प्रतिलिपि प्रस्तुत करने योग्य नहीं है तो प्रासंगिक होना चाहिए।
केनोरब

5
का प्रयोग करें zprint -t(शेर) या sudo zprint -t(माउंटेन शेर और बाद में)।
कालोनोमथ

1
आप शीर्षक में अपने प्रश्न के बारे में प्रतिलिपि प्रस्तुत करने की अप्रासंगिकता के साथ सही हैं, लेकिन यह आपकी समस्या को हल करने के लिए प्रासंगिक हो सकता है।
कालोनोमथ

1
क्या आप अपने प्रश्न में आउटपुट जोड़ना चाहेंगे (या इसे अपने दस्तावेज़ों में सहेजेंगे)? बस भविष्य के संदर्भ के लिए / इसकी तुलना करने में सक्षम होने के लिए एक अधिक महत्वपूर्ण सिस्टम स्थिति में किए गए ज़िपर के लिए। IMHO यह एक दुर्भाग्यपूर्ण लीक है। यदि आप इसे पोस्ट करते हैं तो मैं आपको और अधिक बताने में सक्षम हो सकता हूं।
कालानोमथ

1
मैं अचानक एक ही मुद्दा है। मुझे पूरा यकीन है कि यह मैक या हाइपरकिट के लिए डॉकटर से संबंधित है। जैसे ही मैं मैक के लिए docker को रोक देता हूँ, kernal_task 10GB + मेमोरी खाना शुरू कर देता है
चार्ली मार्टिन

जवाबों:


176

कई चीजें हैं जो उच्च कर्नेल कार्य उपयोग के साथ गलत हो जाती हैं। आमतौर पर यह दोषपूर्ण या भारी प्रक्रिया से संबंधित होता है जो सिस्टम संसाधनों (जैसे कि अनुक्रमण भंडारण, VMs को चलाने, वेब ब्राउज़र में बहुत सारे टैब या कुछ अन्य पृष्ठभूमि प्रक्रियाओं) से अधिक होता है।

यहाँ कुछ तरीके दिए गए हैं जो OS X कर्नेल उपयोग के मुद्दों की जाँच करने में मदद करते हैं:

बुनियादी तरीके

  • वर्तमान में क्या कुछ असामान्य हो रहा है यह देखने के लिए Console.app' सभी संदेशों ' को चलाएं और जांचें ।
  • सिस्टम मेमोरी को पढ़ने के लिए गतिविधि मॉनिटर का उपयोग करें और यह निर्धारित करें कि कितना सीपीयू, रैम और डिस्क का उपयोग किया जा रहा है।

    वैकल्पिक रूप topसे टर्मिनल में चलाएं और Spaceताज़ा करने के लिए पकड़ें - कारण समस्या को खोजने के लिए आसान ( swapins / swapouts / disks )।

  • sudo fs_usageवास्तविक समय में फाइलसिस्टम गतिविधि से संबंधित सिस्टम कॉल और पृष्ठ दोषों की रिपोर्ट करने के लिए टर्मिनल में रन करें (मुझे लगता है कि यह अन्य सभी से सबसे अच्छा विकल्प है)। फिर मारा Control- Cइसे रोकने के लिए।

    क्रिया: उन ऐप्स को मारने पर विचार करें जो सूची में अक्सर दिखाई देते हैं, लेकिन आप उनका उपयोग नहीं कर रहे हैं।

    और जानें: मैं कैसे "कर्नेल_टैस्क" प्रक्रिया से नियंत्रण समाप्त कर सकता हूं?

  • भागोsudo syscallbypid.d (या syscallbyproc.d), थोड़ा रुको, मारो Control- C। अब जांच लें कि उस दिए गए समय (अंतिम कॉलम) में सबसे अधिक सिस्टम कॉल किस प्रक्रिया से उत्पन्न हुई है और यदि आप इसे पहचानते हैं, तो इसे मारने पर विचार करें। यदि नहीं, तो Google इसे और इसके बारे में और जानें।

उन्नत तरीके

  • sysdiagnoseकमांड का उपयोग करें ( Shift- - Control- - - .(पीरियड) को तेजी से सिस्टम-वाइड डायग्नोस्टिक जानकारी को इकट्ठा करने में मदद के लिए सिस्टम मेमोरी / परफॉरमेंस इश्यू (जो दिखने लगेगा /var/tmp) में या तो आपके या ऐप्पल लोगों द्वारा जांचने में सहायक होगा । विश्लेषण के दौरान, ऐसा न करने की कोशिश करें। कुछ भी, जब किया जाता है - जनरेट की गई फ़ाइल को अनलॉक्ड करने पर विचार करें और लॉग का विश्लेषण करें।

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

  • भागो footprintएक प्रति वी एम-क्षेत्र प्रकार के स्तर के बारे में विस्तृत जानकारी स्मृति और बदली बाइट्स इकट्ठा करने के लिए:

    sudo footprint -a
    

    पुराना संस्करण:

    sudo footprint -all -categories -swapped -collapseSharing
    
  • spindumpपूरे सिस्टम को प्रोफाइल करने के लिए उपयोग करें , यह /tmp/spindump.txtफ़ाइल उत्पन्न करेगा (कर्नेल और इसके एक्सटेंशन सहित)।

  • vm_statवर्चुअल मेमोरी आँकड़े दिखाने के लिए उपयोग करें । उदाहरण के लिए

    vm_stat 1 # to display every second.
    
  • का प्रयोग करें zprintगिरी उपयोग के बारे में जानकारी की जाँच करने के लिए है, यह द्वारा संभव है:

    sudo zprint -t -s | head -n20
    

    यह सबसे बर्बाद कर्नेल क्षेत्र दिखाएगा।

  • फ़ाइलों के लिए newproc.d, जैसे ही वे निष्पादित होते हैं, नई प्रक्रियाओं का उपयोग करें creatbyproc.d:

    sudo newproc.d
    sudo creatbyproc.d
    

    नोट: नए OS X (10.11 या उससे ऊपर) पर यह कार्य नहीं हो सकता है जब अखंडता सुरक्षा सक्षम हो (चेक द्वारा csrutil status)।

  • कोशिश करें sar- सिस्टम गतिविधि रिपोर्टर जो ऑपरेटिंग सिस्टम द्वारा बनाए रखा विभिन्न संचयी सांख्यिकीय काउंटरों का नमूना और रिपोर्ट कर सकता है।

अधिक उपयोगी डिबगिंग टूल के लिए, dtrace लिपियों ( grep dtrace /usr/bin/*) के लिए जाँच करें । यदि आप दोषपूर्ण प्रक्रिया को जानते हैं जो समस्या का कारण है, तो आप dtrussइसे डीबग करने के लिए उपयोग कर सकते हैं ।


क्रिया

यहां कुछ सुझाव दिए गए हैं जो आपको ऑपरेटिंग सिस्टम के मुद्दों में मदद कर सकते हैं।

  • कुछ निष्क्रिय स्मृति को मुक्त करें। ऐसा करने के लिए, आपको पहले कैश फ्लश करना होगा और डिस्क कैश को शुद्ध करने के लिए मजबूर करना होगा:

    sync && sudo purge
    

    sync - लंबित डिस्क के बल पूर्णता लिखते हैं (फ्लश कैश)

    purge - डिस्क कैश को शुद्ध करने के लिए (फ्लश और खाली)

    इसका कार्य मूल रूप से सभी I / O लंबित परिचालनों को समाप्त करना है जो डिस्क कैश का उपयोग कर रहे हैं और फिर सभी कब्जे वाले डिस्क कैश को मुक्त करने के लिए है, इसलिए इसे मुख्य मेमोरी से पेजिंग और स्वैपिंग को कम करने के लिए डिस्क स्थान को मुक्त करना चाहिए। यह उपयोग करने के लिए सुरक्षित है, क्योंकि यह अनाम मेमोरी को प्रभावित नहीं करता है जो कि मॉलोक, vm_allocate, आदि के माध्यम से आवंटित किया गया है।

  • कुछ अधिक उपयोग की गई मेमोरी जैसे iBoostUp , SystemPal , आदि को खाली करने के लिए कुछ 3 पार्टी ऐप्स का उपयोग करें ।

  • आप अस्थायी स्पॉटलाइट भी अक्षम कर सकते हैं:

    sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist 
    

    और अन्य सेवाओं पर विचार करें:

    sudo launchctl list | grep ^[0-9]
    sudo launchctl bslist | grep ^A
    
  • अपने वेब ब्राउज़र से बाहर निकलें और जाँच करें कि क्या मदद करता है। उदाहरण के लिए, क्रोम का उपयोग करना बहुत ही संसाधनपूर्ण है, खासकर जब पृष्ठभूमि में कुछ आगे की प्रक्रिया चल रही हो (जैसे जावास्क्रिप्ट) या विज्ञापन जैसे एनिमेशन लगातार सामग्री प्रदान कर रहे हैं।


1
स्पॉटलाइट फिर से जारी रहती है, लेकिन मैं इसका उपयोग नहीं कर रहा हूं, और हर बार जब मैं इसे मारता हूं तो यह दूसरे के बाद फिर से दिखाई देता है ... मुझे इससे कैसे छुटकारा चाहिए?
लिंग

1
@ling मैं आपको एक और प्रश्न पूछने का सुझाव दूंगा, क्योंकि यह उच्च कर्नेल कार्य मेमोरी से संबंधित है, स्पॉटलाइट विशिष्ट नहीं।
केनोरब

2
sigh मैंने अपने मैक पर 4 जीबी रैम प्राप्त किया है, और अभी हाल ही में कर्नेल कार्य 3.1 जीबी तक ऊपर जा रहा था, मूल रूप से मेरे पूरे कंप्यूटर को फ्रीज कर रहा था। मेरे Google ड्राइव टैब को बंद कर दिया, और यह 950 एमबी तक चला गया ...
Zizouz212

3
वास्तव में उच्च kernel_taskमेमोरी और सीपीयू उपयोग के मुद्दे को हल करने के लिए पर्याप्त नहीं है ।
१.१

6

2012 के देर से आईमैक पर अपनी एलसीडी स्क्रीन को बदलने के बाद मेरे पास एक समान मुद्दा था। फैन उच्च आरपीएम पर चल रहा था और इसमें सीपीयू कर्नेल_टैस्क का उच्च उपयोग था। मैंने इसे एक टेम्प्रेचर सेंसर तक सीमित कर दिया है जो आपको पुरानी एलसीडी स्क्रीन से नई रिप्लेसमेंट स्क्रीन पर ले जाना चाहिए। यदि आप ऐसा करना भूल जाते हैं तो सीपीयू की गति और कर्नेल_टस्क आपके सिस्टम को धीमा कर रहे हैं।

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