Come analizzare l'utilizzo elevato della memoria delle attività del kernel?

118

Stavo usando il mio MBP (con 16 GB di RAM) come al solito e di blu ho questo popup che:

Your system has run out of application memory.

To avoid problems with your computer, quit any applications you are not using.

Ovviamentehochiusoalcunideiqualihopotuto,manonèstatodiaiuto.

Dopoavercontrollatolamemoria,sembracheiltaskdelkernelabbiautilizzato7GBe22,36GBdimemoriadiswapperuntotaledi23GB(cheovviamenteerailcaso).Tuttaviahoancora20GBdispazioliberosulmioSDD.

Activity Monitor non ha aiutato molto mentre il mio OS X si stava dirigendo verso la distruzione.

Le mie top stats prima del mio congelamento del kernel:

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.

Alla fine il mio OS X si è congelato e ho dovuto fare un hard reset, riparare il mio SDD in recovery mode e ripararlo in seguito (recupero del lavoro perso, correzione dei conflitti delle applicazioni, controllo della cartella lost + found, schede di Chrome / Terminal perse, mal di testa , ecc.).

La mia domanda è, come faccio a verificare l'utilizzo di memoria elevata dell'attività del kernel o come gestire correttamente questo tipo di situazione? Ho provato a scattare Sample con Activity Monitor, ma è disattivato.

I miei dettagli MBR: Intel Core i7 da 2,3 GHz (fine 2013) con 16 GB di RAM. OS X: 10.9.5

    
posta kenorb 25.03.2015 - 21:37
fonte

2 risposte

160

Ci sono molte cose che vanno male con l'uso elevato delle attività del kernel. Di solito questo è legato a processi difettosi o pesanti che sovraccaricano le risorse di sistema (come l'archiviazione di indicizzazione, l'esecuzione di VM, troppe schede nel browser Web o altri processi in background).

Ecco alcuni metodi che aiutano a indagare sui problemi di utilizzo del kernel OS X:

Metodi di base

  • Esegui Console.app e controlla " Tutti i messaggi " per vedere se qualcosa di insolito sta accadendo attualmente.
  • Utilizza Monitor attività per leggere la memoria di sistema e determinare la quantità di CPU, RAM e il disco è in uso.

    In alternativa, esegui top in Terminale e tieni premuto Spazio per aggiornare - più facile trovare il problema di causa (swapout swapins / / dischi ?).

  • Esegui sudo fs_usage in Terminale per segnalare chiamate di sistema ed errori di pagina relativi all'attività del filesystem in tempo reale (penso che questa sia l'opzione migliore da tutte le altre) . Quindi premi Controllo - C per fermarlo.

    Azione: valuta la possibilità di uccidere le app che appaiono frequentemente nell'elenco, ma non le utilizzi.

    Ulteriori informazioni su: Come si esegue il debug di un processo "kernel_task" fuori controllo?

  • Esegui sudo syscallbypid.d (o syscallbyproc.d ), attendi un po ', premi Controllo - C . Ora controlla quale processo ha generato la maggior parte delle chiamate di sistema in quel dato momento (ultima colonna) e se lo riconosci, considera di ucciderlo. In caso contrario, Google e saperne di più.

Metodi avanzati

  • Usa il comando sysdiagnose (può essere attivato premendo Shift - Controllo - - - . (punto) per raccogliere rapidamente informazioni diagnostiche a livello di sistema utili per indagare su problemi di memoria / prestazioni del sistema (appariranno in /var/tmp ) da voi o da Apple. Durante l'analisi, provate a non fare nulla , al termine, considera la decompressione del file generato e l'analisi dei log.

    Vedi: Come si ottengono i file di diagnostica del sistema da OS X?

  • Esegui footprint per raccogliere informazioni dettagliate sulla memoria su un livello di tipo regione per VM e byte scambiati:

    sudo footprint -a
    

    Versione precedente:

    sudo footprint -all -categories -swapped -collapseSharing
    
  • Usa spindump per profilare l'intero sistema, genererà /tmp/spindump.txt file (incluso il kernel e le sue estensioni).

  • Utilizza vm_stat per mostrare le statistiche della memoria virtuale. Per es.

    vm_stat 1 # to display every second.
    
  • Usa zprint per controllare le informazioni sull'utilizzo del kernel, è possibile con:

    sudo zprint -t -s | head -n20
    

    Mostrerà le zone del kernel più devastanti.

  • Usa newproc.d per curiosare i nuovi processi mentre vengono eseguiti, creatbyproc.d per i file:

    sudo newproc.d
    sudo creatbyproc.d
    

    Nota: su OS X più recente (10.11 o successivo) questo potrebbe non funzionare quando è abilitata la protezione dell'integrità ( controlla per csrutil status ).

  • Prova sar - reporter di attività di sistema che può campionare e riportare vari contatori statistici cumulativi gestiti dal sistema operativo.

Per ulteriori utili strumenti di debug, controlla gli script dtrace ( grep dtrace /usr/bin/* ). Se conosci il processo difettoso che causa il problema, puoi utilizzare dtruss per eseguirne il debug.

Azioni

Ecco alcuni suggerimenti che possono aiutarti con i problemi del sistema operativo.

  • Liberare memoria inattiva. Per fare ciò, devi prima svuotare la cache e forzare la cancellazione della cache del disco:

    sync && sudo purge
    

    sync - force completion of pending disk writes (flush cache)

    purge - force disk cache to be purged (flushed and emptied)

    La sua funzione è fondamentalmente quella di terminare tutte le operazioni di I / O in sospeso che utilizzano la cache del disco e quindi di liberare tutta la cache del disco occupato, quindi dovrebbe liberare spazio su disco per facilitare il paging out e lo swapping dalla memoria principale. È sicuro da usare, poiché non influisce sulla memoria anonima che è stata allocata tramite malloc, vm_allocate, ecc.

  • Utilizza alcune app di terze parti per svuotare alcune memorie sovrautilizzate come iBoostUp , SystemPal , ecc.

  • Puoi anche disabilitare Spotlight temporaneo:

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

    E considera altri servizi con:

    sudo launchctl list | grep ^[0-9]
    sudo launchctl bslist | grep ^A
    
  • Esci dal tuo browser web e controlla se questo aiuta. Ad esempio, l'utilizzo di Chrome è molto ricco di risorse, soprattutto quando è in corso l'elaborazione front-end in background (ad es. Javascript) o le animazioni simili a annunci pubblicizzano costantemente il contenuto.

risposta data 26.03.2015 - 13:20
fonte
4

Ho avuto un problema molto simile dopo aver sostituito il mio schermo LCD su un iMac della fine del 2012. Fan era in esecuzione ad alto RPM e aveva un elevato utilizzo di Kernel_task della CPU. L'ho ristretto a un sensore di temperatura che devi spostare dal vecchio schermo LCD alla nuova schermata di sostituzione. se ti dimentichi di farlo, la velocità della CPU e Kernel_task ne risentono rallentando il tuo sistema.

    
risposta data 02.07.2016 - 23:07
fonte

Leggi altre domande sui tag