Kontrolden çıkmış bir "kernel_task" işleminde nasıl hata ayıklayabilirim?


42

Kısa bir süre önce pil ömrümün oldukça önemli bir düşüşe sahip olduğunu ve oldukça fazla CPU kullanan "kernel_task" sürecini (2.8 gg çift çekirdekli i7, 2010 MBP'de% 1-6 sabit) gördüm. Açıkçası, kernel_task'ın CPU kullanımının pil düşüşüne katkıda bulunduğunu düşünüyorum ve bunun nedenini bulmam gerekiyor.

Google’da arama yapmak, kernel_task’ın OS X’in Windows’un "svchost.exe" versiyonudur - gerçekten hata ayıklayamadığınız meşhur her şeyi gerçekleştirme işlemi, anahtarlardan birini çalışana kadar sadece elle çevirmeniz gerekir.

Kontrolden çıkmış kernel_task aktivitesinin altına daha kolay ulaşabilmemin bir yolu var mı? Yeniden başlatma denemedim, çünkü eğer "düzeltirse", aslında sorunu çözmez.

Etkinlik Monitörü CPU kullanımını gösterir. Inspect'e bastığımda, 77 iş parçacığı, 2 bağlantı noktası, saat ve saat CPU zamanı, Bağlam Anahtarları saniyede 400 civarında çıkıyor ve Mach Mesajları Giriş ve Çıkış'da saniyede yaklaşık 6.000'de çıkıyor.

Bu kernel_tasksüreci nasıl bir şekilde denetleyebilir veya izleyebilir ve tüm bu gücü ne kullandığını nasıl anlayabilirim?

(not: şu anki şüphelilerim en son 10.6.7 güncellemesi, 4 beta 10'dan RC'ye Firefox güncellemesi veya ScreenResX - bunlar yakın zamanda düşünebildiğim şeyler.


kernel_taskKontrol dışı olarak tarif etmem . Aktivite İzleyici bu alandaki teşhisler için en iyi yardımcı olmayabilir. Konsol'da, çekirdek görevinin nasıl kullanıldığını belirlemenize yardımcı olacak sistem günlüğü sorguları ekleyin; daha sonra açılış sorusunu daha kolay cevaplanabilecek bir soruya rafine edin.
Graham Perrin

1
Sabit% 200 CPU, herhangi bir işlem için kontrolden çıkıyor.
twe4ked

Yanıtlar:


12

Aşağıdaki terminal komutunu kullanarak kernal_task'a bağlı dosya ve programların nasıl tanımlanacağı konusunda benzer bir sorum vardı :

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

Bu, çeşitli kexts ve bunlarla ilişkili hafızayı gösterecektir. Örneğin, 6184960 com.apple.driver.AirPort.Brcm4360benim için büyük bir domuz, ama wifi kullanmak istersem bu konuda çok fazla şey yapamam.

Aldığım önerilerden biri de Apple dışındaki tüm kexts'leri yukarıdakilere bağlayarak hafızayı kapmak grep -v com.apple. Bazı Apple dışı programların kaynaklarınızı kullanıyor olması olasıdır. Bunları hiçbir şeyi bozmadan kaldırabilmelisin.

Elbette asırlık çözüm bilgisayarınızı yeniden başlatmanızdır. Bazen işlemleri normal CPU kullanım seviyelerine geri döndürmek için yeterlidir.


ilk sütundaki sayı nedir?
Anentropic 19:16

@Anentropic - buna bakmayı deneyin man kextstatve awkkomut alma $4, kext bellek kullanımının boyutuna benziyor. Soruyu dikkate alarak mantıklı.
rebusB

11

İşte bir kernel_task'in ne olduğu konusunda harika bir açıklama . Sürücüler (kexts), ağ veya disk etkinliği olabilir. kernel_taskİşlemi eklemek için Enstrümanları kullanamazsınız .

(Örneğin: diğer günlükleri gibi işaretler, (Console.app), disk aktivitesini Bak iotop fs_usage) bellekten, ağ etkinliği (yerel ağ bağlantısının kesilmesi deneyin ağ tercihlerinde cihazlar kapatarak), kaldırma deneyin / remove ( kextunload) sürücüler, hangi üçüncü taraflardan geliyor - tabletler, usb 3g modemler vb. Kexts yükleyen uygulamaları kontrol edin

Ayrıca, yakın zamanda herhangi bir çökme yaşadıysanız, dosya sisteminizin bozulmadığından emin olun - kontrol edin.


1
Neredeyse sürekli ~% 200 CPU kullanımı (4 çekirdekten 2'si) vardı, genellikle dosyaları veya benzer bir şeyi aktarırken bir önyüklemeden sonra başlıyor, ancak daha sonra normale dönmüyordum. Sebep, sistem hacmimin onarmaya ihtiyaç duymasıydı. Bu bir kez yapıldıktan sonra, kernel_taskaklı başında aktivite seviyelerine döndü.
Daniel Beck,


1
@Santa Link ile ilgili önerilen düzenleme için teşekkürler, ancak Wayback Machine'de bir versiyon mevcut olduğunda, link kaldırmanın bir anlamı yoktur. Wayback Machine bağlantısıyla bağlantıyı değiştirin.
grg

8

@Christopher tarafından belirtildiği gibi, ısı çekirdeği_task işlemcisinin yükselmesine neden olabilir. Bunun nedeni bu yazıda “Fixing” kernel_task MacOS Lion 10.7'deki CPU Problemleri . İşlemci, ısındığında, ACPI_SMC_PlatformPlugin.kext, asıl CPU yükünü azaltma girişiminde CPU döngülerini alacaktır.

Bu nedenle bir çözüm Mac'inizi (örneğin fanınızı) harici bir fan veya SMCFanControl gibi bir şeyden soğutmaktır .

Makale, bu davranışı tetikleyen alt kext'in kaldırılması için başka bir çözüm sunar. İtiraf etmeliyim ki, şahsen ben bu davranışı kapatmanın ne kadar güvenli olduğundan emin değilim.


2
Bu kernel_task'in çoğunluğunun yüksek CPU kullanımı sürdürebilmesinin nedeni olduğuna dair bir tahminde bulunacağım. Ne zaman benim için olsaydı, makinemi oldukça yoğun kullanıyorum ve gecikmeye başlayacaktı, fakat kullandığım belirgin işlemlerden hiçbiri başak etmiyordu, sadece kernel_task. Ağır süreçleri kapatın (genellikle videolar veya oyunlar) ve sonunda ortadan kalkar. Bu arada 2011 MBP sesim kalkacak gibi görünüyor! Açtı ve iyice temizledi, soğutucuların üzerindeki toz battaniyelerini temizledi ve düşük fanlı ve kernel_task çılgınlığı olmayan bir işe geri döndüm.
Joey T

5

kernel_taskDiğer bazı işlemler sistem çağrılarını veya kaynaklarını aşırı kullandığında (bellek veya disk G / Ç olayları) genellikle kontrol dışı kalır.

Bu olduğunda, fs_usagegerçek zamanlı olarak sistem aramalarını ve dosya sistemi etkinliği ile ilgili sayfa hatalarını gösterecek olan raporlama yardımcı programını kullanabilirsiniz .

Bu yüzden bu komutu Terminal'de çalıştırın:

sudo fs_usage

daha sonra hangi işlemlerin sık sık bazı sistem çağrıları yaptığını gözlemleyin ve bunları kullanmıyorsanız, onları kapatmayı / öldürmeyi düşünün.

Daha açık olmak gerekirse, lütfen sistem çağrısında geçen süreyi gösteren TIME INTERVAL sütununu kontrol edin . Bir Wgeçen zaman süreci (bu durumda geçen süre bekleme süresi içerir) aktivitesi üzerinden planlandı gösterir sonra görünen.

Bu nedenle, sistem çağrılarında en fazla zaman aralığını kullanan işlemleri filtrelemek için, şunu çalıştırın:

sudo fs_usage | grep -v 0.0000

Son sütunda en aç olan süreçleri (çekirdek zamanı cinsinden) gösterecektir. Kesinlik için sıfır sayısını ayarlayabilirsiniz (daha az sıfır, daha fazla zaman harcanır).

Daha fazla fikir için ayrıca şunları da kontrol edin: Yüksek çekirdek görev belleği kullanımı nasıl araştırılır?


İşte en yaygın sorunlar:


2
İTerm2'yi ve grepkendini filtrelemeden sonra makul bir çıktı akışı :sudo fs_usage | grep -v -e '0.0000' -e 'iTerm2' -e 'grep'
Joel Purra

4

Kernel_task CPU kullanımında çok büyük bir artış oldu ve CPU fanımın kısmen prizden çekildiği ortaya çıktı. kernel_task'in çok ısındığında CPU'yu kısmakla ilgisi var. Senin durumunda, belki fanın sadece çöp ve tozla kaplanmış ve temizlenmesi gerekiyor.


Çılgınca! Bu hata ayıklama yaparken günlüklerini hiç kontrol ettin mi? Bu çözüme nasıl geldiniz?
Ricket

3

Yosemite'de de aynı problemi yaşadım, fakat buna dayanarak bu iyi ruh sayesinde başka bir iyi arkadaşa çözebilirdim. Neler olduğunu hala anlayamıyorum, ancak çalışmayı deneyen bütün bir hafta sonunu kaybettikten sonra vazgeçtim ve talimatlarını körü körüne takip ettim. Etkinlik izleyicisindeki çaresizliğime bakın:

Tüm işlemcileriniz bize ait

Dikkatli olun, her zaman önce bir yedekleme yapın ve açıklama için verilen bağlantıları okuyun. Sebep olduğu herhangi bir hasar için sıfır sorumluluk alıyorum. Uyarılmıştın.

Modeli bulmak

$ system_profiler -detailLevel mini | grep "Model Tanımlayıcı:"

Model Tanımlayıcı: MacBookPro8,2

Dosyayı taşı ve yedekle

$ mkdir -p ~ / backup

$ cd /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources

$ sudo mv MacBookPro8_2.plist ~ / backup /


1
Bu çözüm benim için çalıştı. Aynı MacBookPro sürümüne sahibim. Ne yazık ki, makinenin ömrünü artırmak için tasarlanan işlevselliği devre dışı bırakmayı içerir. İşlemci sıcaklığı ve fan işlevselliğini kontrol ettim ve normal görünüyor, bu yüzden bu işlevsellikte bir hata olduğunu varsayıyorum, ancak hala CPU soğutma hatası emniyetinin tetiklenmesinin nedenini alamadım. giriş yapmadan önce, sonuna kadar).
errant.info 13:16

@ errant.info nedense El Captain çözdü. Mac'imde de hatalı bir batarya vardı ve El Captain ile değiştim, bu yüzden hangi eylemin düzelttiğini bilmiyorum. Mac'inizde iyi şanslar!
Biri hala MS-DOS kullanıyor

2

2011'de yeni bir macbook pro ile OSX Lion'dayım ve yakın zamanda CPU'nun% 25-30'unu çalıştıran kernel_task ve saatlerce saatlerce en fazla hayranım dönüyordu. Bir kerede bir şey denedim ve ne çözdü ... Finder uygulamasında 5 veya 6 pencereleri kapatıyor. Nedenini anladığımı söyleyemem, ama açıkça öyleydi.


2
Finder'da yüklü herhangi bir uzantınız var mı? Örneğin, araç çubuğuna veya sağ tıklatma (bağlam) menüsüne bir şeyler ekleyen programlar?
Ricket

1
. Bunun nedeni bir veya daha fazla "tüm boyutları göstermek" onay kutusu 'Görünüm-> Show Görünüm Seçenekler" yapılandırma o kapatın, etkin olması için pencerelerin, o zaman tüm klasörler için varsayılan olarak ayarlanmış olduğunu ve duracaktır.
Brian Topping

2

Mac'imde kernel_task'in CPU kullanımı, kullandığım internet bant genişliği ile orantılı, yaklaşık% 0 ila% 50 arasında değişiyor. Muhtemelen Huawei 3G modemimin sürücülerinden kaynaklanıyor (HuaweiDataCardDriver.kext).

Çekirdek uzantılarını devre dışı bırakmayı deneyebilirsiniz. Kextunload kullanmaya gerek yoktur: kext paketlerini / System / Library / Extensions / 'dan başka bir klasöre taşımak ve yeniden başlatmak güvenlidir. Danışman Kanarya'yı kullanabilir veya kextstat | grep -v com.appleOS X ile gelmemiş olan çekirdek uzantılarını listeleyebilirsiniz.


1

Özellikle kontrol dışı kernel_task sorunlarını gidermek için bazı yararlı komutlar aşağıdadır :

  • Çekirdek işlemine (PID: 0) odaklanarak tüm sistemi profilleyin, çalıştırın:

    sudo spindump 0 -reveal
    

    Belirli bir işlem için (örneğin launchd) sample, örneğin sudo sample launchdveya PID kullanın.

  • Bellek tüketimini çekirdek görevine göre toplamak için, kullanın (varsayılan olarak kirli olarak sıralanır):

    sudo footprint 0
    

    Not: -aTüm işlemleri hedeflemek için kullanın .

  • Çalıştırmak birden utils gelen sistem genelinde tanı bilgilerini toplamak için: sudo sysdiagnose.

    Bu aynı zamanda Shift- Control- - -. (nokta) tuşuna basılarak da tetiklenebilir .

    Başlatıldığında ekranın yanıp söndüğünü görmeli, ardından dosya Finder'da görünene kadar birkaç dakika beklemelisiniz .

    Bkz: Sistem tanılama dosyalarını OS X'ten nasıl alıyorsunuz?

    Sonra sıkıştırmayı ve gibi dosyaları kontrol footprint*.txt, spindump.txt, taskinfo.txt, bc_stats.txtve diğer.

  • vm.swapusageÇekirdek durumlarını kontrol edin , örn sysctl -a | grep ^vm.swapusage.

    Temel olarak, ne kadar çok takas kullanıyorsanız ( /private/var/vmyönettiği takas dosyalarını kontrol edin dynamic_pager, bakınız :)man dynamic_pager , Swapins / Swapouts işlemleri nedeniyle performansla daha fazla çekirdek mücadele edin (bkz. man vm_statVe man fs_usage). Test etmek için çalıştırın:

    vm_stat 1
    sudo fs_usage | grep -w kernel_task
    

    Not: Hit Control- Cdurdurmak için.


0

Benim için bir işlem vardı (bu durumda Netbeans, 20GB gibi bir dosyayı okuyordu) ve netbeans için% 80 cpu, kernel_task için% 20 cpu kullanacaktı (çok şüpheli). Bu, tüm sistemimin katran gibi çalışmasına neden oldu.

Şüpheli ki, "menumeterler", işlemci başına çok fazla "sys" zamanı bildireceklerdir. Bunu "top" komutunda da görebilirsiniz.CPU usage: 21.40% user, 23.74% sys

Daha sonra% 120 cpu, kernel_task% 65 netbeans olabilir, ama yine de her ikisi de "aynı anda yüksek cpu" idi.

sudo fs_usage Bunların çoğunu gösterdi:

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

Teorim, netbeans'ın “çok fazla okuduğunu” sayfa hatalarının kendi programını yürütmesine (yani kendi programını değiştirmesi için göndermesine) ve böylece sayfa hata sisteminin arkasında bir sıraya girmesine neden oluyordu. Ve muhtemelen "diğer programları" takas etmek de değişerek tüm sistemin çökmesine neden oldu.

Kullanarak top, FAULT sütunu da 70K / sn artmaktadır.


0

Macbook Pro haftalar boyunca çekirdek işlemci yüksek işlemci nedeniyle neredeyse kullanılamaz hale geldi. Aynı zamanda pil şişirildi, bu yüzden sonunda pilimi değiştirmek için Roma'daki Apple Center'a gitmeye karar verdim ... Apple'ın pilimi değiştirmiş olmasına rağmen (ve klavye de) 0 € maliyeti. Daha da iyisi ... kernel_task problemi aniden kayboldu !!! bu yüzden doğrudan ya da dolaylı olarak batarya nedeniyle olduğundan eminim

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.