Yüksek çekirdek görev belleği kullanımı nasıl araştırılır?


131

MBP'mi (16GB RAM ile) her zamanki gibi kullanıyordum ve mavinin dışında:

Sisteminizde uygulama belleği kalmadı.

Bilgisayarınızla ilgili sorunları önlemek için kullanmadığınız uygulamalardan çıkın.

Çıkma Uygulamalarını Zorla - Sisteminizde uygulama belleği kalmadı - ekran görüntüsü

Belli ki yapabileceğim birkaçını kapattım, ama yardımı olmadı.

Belleği kontrol ettikten sonra, çekirdek görevi 7 GB yiyor ve toplam 23 GB olan 22.36 GB takas belleği kullanıldı (açıkçası durum buydu). Ancak SDD'mde hala 20 GB'lık boş alan var.

Bellek - iStat Menüler - ekran görüntüsü

Etkinlik İzleyici, OS X'im imhaya giderken fazla yardımcı olmadı.

Süreç araştırmacısı

kernel_task - Bellek sekmesi - ekran görüntüsü kernel_task - İstatistikler sekmesi - ekran görüntüsü

Benim topbenim çekirdek dondurma öncesi istatistikler:

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.

Sonunda OS X'im donmuştu ve sert sıfırlama yapmak zorunda kaldım, SDD'mi kurtarma modunda tamir ettim ve daha sonra tamir ettim (kayıp işleri kurtarma, uygulama çakışmalarını düzeltme, kayıp + bulunan klasörümü kontrol etme, Chrome / Terminal sekmeleri gitti, baş ağrısı vb.) ).

Sorum şu, çekirdek görevinin yüksek bellek kullanımını nasıl kontrol edebilirim veya bu tür durumlarla nasıl başa çıkacağımı nasıl? Activity Monitor ile örnek almaya çalıştım, ama gri.


MBR detaylarım: 2.3GHz Intel Core i7 (2013 sonu) 16GB RAM. OS X: 10.9.5


1
@klanomath Genellikle, özellikle uzun çalışma süreleriyle bol miktarda donlarım var ve bunlar yalnızca bilinmeyen bir nedenden dolayı çekirdek donmaları (MBR'm oldukça yeni). Ancak bu, hafıza dışı olduğum ilk açılır pencereyi görüyorum (16GB RAM ve 50GB boş alan). Ancak benim asıl sorum çekirdek görevinin bellek kullanımını nasıl araştırmam gerektiğidir, bu yüzden eğer tekrarlanabilirse ilgili olmamalıdır.
kenorb

5
Kullanın zprint -t(Lion) veya sudo zprint -t(daha sonra Dağ Aslanı ve).
klanomath

1
Başlığınızdaki sorunuzla ilgili tekrarlanabilirliğin ilgisizliği konusunda haklısınız, ancak sorununuzu / problemlerinizi çözmeniz uygun olabilir.
klanomath

1
Çıktıyı sorunuza ekler misiniz (veya belgelerinize kaydedin)? Sadece ileride referans olması için / daha kritik bir sistem durumunda yapılan zprint ile karşılaştırabilmek. IMHO kötü bir şans kaçağı. Eğer gönderirseniz, size daha fazla bilgi verebilirim.
klanomath

1
Birden bire aynı konuya sahibim. Bunun için docker for mac veya hyperkit ile ilgili olduğundan eminim. Mac için docker'ı durdurduğumda, kernal_task 10GB + hafıza yemeye başlar
Charlie Martin

Yanıtlar:


176

Yüksek çekirdek kullanımıyla ilgili yanlış giden birçok şey var. Genellikle bu, sistem kaynaklarını (örneğin, dizin oluşturma, VM'leri çalıştırma, web tarayıcısında çok fazla sekme veya bazı diğer arka plan işlemleri gibi) aşırı kullanan hatalı veya ağır işlemlerle ilgilidir.

OS X çekirdeği kullanım sorunlarını araştırmaya yardımcı olan bazı yöntemler:

Temel yöntemler

  • Olağandışı bir şey olup olmadığını görmek Console.appiçin ' Tüm Mesajlar'ı çalıştırın ve kontrol edin .
  • Sistem belleğini okumak ve ne kadar CPU, RAM ve Disk kullanıldığını belirlemek için Activity Monitor kullanın .

    Alternatif topolarak Terminal'de çalıştırın ve Spaceyenilemek için basılı tutun - neden sorununu bulmak daha kolaydır ( takas / takas / disk ?).

  • Runsudo fs_usage in Terminal sistem çağrıları ve gerçek zamanlı olarak faaliyetini dosya sistemi ile ilgili sayfa hataları bildirmek için (bu, diğer tüm en iyi seçenek olduğunu düşünüyorum). Ardından Control- Cdurdurmak için tuşuna basın.

    Eylem: Listede sıkça görünen uygulamaları öldürmeyi düşünün, ancak bunları kullanmıyorsunuz.

    Daha fazla bilgi edinin: Kontrolden çıkmış bir "kernel_task" işleminde nasıl hata ayıklayabilirim?

  • Koşsudo syscallbypid.d (veya syscallbyproc.d), biraz bekle, Control- C. Şimdi, hangi sistemin en çok hangi çağrıyı oluşturduğunu kontrol edin (son sütun) ve bunu tanıdıysanız, öldürmeyi düşünün. Değilse, Google’ı ve bu konuda daha fazla bilgi edinin.

Gelişmiş yöntemler

  • Sistem belleği / performans sorunlarının araştırılmasında yardımcı olacak sistem çapında tanılama bilgisini hızlı bir şekilde toplamak için sysdiagnosekomutunu kullanın ( Shift- Control- - - .( noktaya basılarak tetiklenebilir /var/tmp). Analiz sırasında, yapmamaya çalışın bir şey yapıldığında - oluşturulan dosyayı açmayı ve günlükleri analiz etmeyi düşünün.

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

  • footprintHer VM bölgesi bölge düzeyinde ve değiştirilen baytta ayrıntılı bellek bilgisi toplamak için çalıştırın :

    sudo footprint -a
    

    Eski versiyon:

    sudo footprint -all -categories -swapped -collapseSharing
    
  • spindumpTüm sistemi profillemek için kullanın , /tmp/spindump.txtdosya oluşturacaktır (çekirdek ve uzantıları dahil).

  • vm_statSanal bellek istatistiklerini göstermek için kullanın . Örneğin

    vm_stat 1 # to display every second.
    
  • zprintÇekirdek kullanımıyla ilgili bilgileri kontrol etmek için kullanın ;

    sudo zprint -t -s | head -n20
    

    En çok boşa harcanan çekirdek bölgeleri gösterir.

  • newproc.dYeni işlemleri yürütüldüklerinde, creatbyproc.ddosyalara kaydetmek için kullanın :

    sudo newproc.d
    sudo creatbyproc.d
    

    Not: Yeni OS X'te (10.11 veya üstü), bütünlük koruması etkin olduğunda çalışmayabilir (kontrol edin csrutil status).

  • Dene sar- işletim sistemi tarafından tutulan çeşitli kümülatif istatistik sayaçlarını örnekleyebilen ve raporlayabilen sistem etkinliği muhabiri.

Daha kullanışlı hata ayıklama araçları için dtrace komut dosyalarını ( grep dtrace /usr/bin/*) kontrol edin . Soruna neden olan hatalı işlemi biliyorsanız, dtrusshata ayıklamak için kullanabilirsiniz .


Eylemler

İşletim sisteminizle ilgili size yardımcı olabilecek bazı öneriler.

  • Etkin olmayan hafızayı boşaltın. Bunu yapmak için, önce önbelleği temizlemeniz ve disk önbelleğini temizlemeye zorlamanız gerekir:

    sync && sudo purge
    

    sync - bekleyen disk yazmalarının tamamlanmasını zorla (önbelleği temizle)

    purge - disk önbelleğini boşaltılmaya zorla (temizle ve boşalt)

    İşlevi temel olarak disk önbelleğini kullanan tüm G / Ç beklemedeki işlemleri sonlandırmak ve ardından kullanılan tüm disk önbelleğini boşaltmaktır, bu nedenle disk belleği boşaltmak ve ana belleği değiştirmek için disk alanını boşaltmalıdır. Malloc, vm_allocate, vb. Yoluyla tahsis edilen isimsiz hafızayı etkilemediğinden kullanımı güvenlidir.

  • İBoostUp , SystemPal vb. Gibi aşırı kullanılmış bellekleri temizlemek için bazı 3. taraf uygulamalar kullanın .

  • Geçici Spotlight'ı da devre dışı bırakabilirsiniz:

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

    Ve diğer hizmetleri de dikkate alarak:

    sudo launchctl list | grep ^[0-9]
    sudo launchctl bslist | grep ^A
    
  • Web tarayıcınızdan çıkın ve bunun yardımcı olup olmadığını kontrol edin. Örneğin, Chrome'u kullanmak çok beceriklidir, özellikle de arka planda devam eden bazı ön işlemler varsa (örn. Javascript) veya reklam benzeri animasyonlar sürekli olarak içerik oluşturuyorsa.


1
Spot yeniden ortaya çıkıyor, ama kullanmıyorum ve her öldürdüğümde saniye sonra tekrar beliriyor ... Ondan nasıl / ne yapmalıyım?
ling

1
Bu arada, bir Spotlight'a özgü değil, yüksek çekirdek görev hafızasıyla ilgili olduğundan, başka bir soru sormanızı öneririm.
kenorb

2
iç çekiş Mac'imde 4 GB koç var ve yakın zamanda çekirdek görevi tüm bilgisayarımı dondurmak için 3.1 GB'a çıkacaktı. Google Drive
sekmemi

3
Yüksek kernel_taskbellek ve işlemci kullanımı sorununu çözebilecek kadar belirli değil .
hyiltiz

6

2012 iMac'in sonundaki LCD ekranımı değiştirdikten sonra da çok benzer bir sorun yaşadım. Fan yüksek RPM'de çalışıyordu ve CPU Kernel_task kullanımının yüksek olduğunu belirtti. Eski LCD ekrandan yeni değiştirme ekranına geçmeniz gereken bir Sıcaklık sensörüne daraltdım. Bunu yapmayı unutursanız CPU hızı ve Kernel_task sisteminizin yavaşlamasından etkilenir.

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.