Cosa fa esattamente kernel_task?


30

Vorrei solo sapere di cosa è responsabile kernel_task. Inoltre, qual è l'utilizzo massimo accettabile di RAM e CPU per questo?


È meglio misurare l'utilizzo della RAM e della CPU dopo un avvio sicuro per ottenere una misura di ciò che il sistema esegue quando è inattivo.
bmike

1
Secondo Tyler, è una "rappresentazione del microkernel stesso". Se vuoi una risposta più specifica, continua dicendo che "sembra essere il gestore di memoria (virtuale /) di base per Mac OS X su Mach". Ti verrà difficile trovare una risposta definitiva a meno che non parli con un ingegnere Apple di alto livello. Il pubblico ha solo messo insieme questo processo. Fonte: bleepsoft.com/tyler/index.php?itemid=43

Risposte:


28

L'attività del kernel è speciale poiché è un intero sistema operativo / micro kernel basato su Mach 3.0 . Estrae la maggior parte dell'hardware principale, i tempi, il passaggio dei messaggi e la gestione della memoria.

Ciò che la maggior parte delle persone nota in Activity Monitor è che kernel_taskaccumula tutto il tempo della CPU per i ritardi e i calcoli di elaborazione input / output (i / o) e per la pianificazione dei costi generali di processi e thread. Allo stesso modo: accumula tutte le allocazioni di memoria che non si trovano nello spazio utente. Sui Mac 2014 e più recenti, questa attività esiste per limitare la CPU - quando le temperature nel processore sono troppo elevate, l'attività del kernel viene assegnata "nessun lavoro" e mostra CPU alta occupata per lasciare il processore inattivo e non surriscaldare il computer. Ciò è più evidente sulla linea portatile - in particolare il MacBook senza alcun tipo di ventola o soffiante per raffreddare il processore. Apple lo avverte ai potenziali programmatori del kernel in "Perché dovresti stare lontano dalla programmazione nel kernel" che disabilitare il raffreddamento causerà danni hardware irreparabili permanenti.

Riassumendo, la programmazione del kernel è una responsabilità immensa. È necessario prestare la massima attenzione per assicurarsi che il codice non causi l'arresto anomalo del sistema, non fornisca alcun accesso non autorizzato agli utenti ai file o alla memoria di qualcun altro, non introduca exploit root locali o remoti e non causi la perdita o la corruzione involontarie di dati .

Se lo guardi dopo un riavvio, vedrai che inizia con un minimo di RAM e CPU e invece cresce solo quando altri programmi vengono eseguiti e necessitano dei servizi di sistema.

Per snellirlo, chiudere le porte non necessarie (WiFi, bluetooth, ecc ...) così come i programmi inattivi / non utilizzati. Se le cose non si sistemano, prendere in considerazione il riavvio per assicurarsi che nessuna attività sia bloccata o che perde memoria. Se hai programmi che fanno un vero lavoro, faranno in modo che il kernel utilizzi sia la memoria che il tempo del processore - guarda appena inizi le cose per vedere quali altri programmi stanno causando questo comportamento. Raramente è un problema con il kernel - anche con programmi con prestazioni scadenti - che non può essere risolto disconnettendosi e riaccedendo. Kernel_task si pulisce bene e generalmente si occupa di utilizzare solo le risorse necessarie al carico di lavoro.


Grazie! Diresti che 700-750 MB di RAM sono accettabili per questo? Ne ho molti gratuiti, ma vorrei sapere se c'è qualcosa che dovrei fare comunque.
Timothy Mueller-Harder il

Non necessariamente. Sul mio MacBook Pro principale, può gonfiarsi fino a 2 GB a volte quando sto davvero eseguendo molti programmi coinvolti. Anche allora, spesso non devo riavviare ma una volta al mese o giù di lì. (2,66 Core 2 Duo / 8 GB RAM)
bmike

14

Interni di Mac OS X: un approccio di sistema - Amit Singh - Google Libri :

il kernel usa l'attività e le astrazioni del thread per dividere la sua funzionalità in vari flussi di esecuzione. Il kernel utilizza una singola attività - l'attività del kernel - con più thread che eseguono operazioni del kernel come la pianificazione, la raccolta dei thread, la gestione dei callout, il paging e la gestione delle eccezioni Unix. Pertanto, xnu è un kernel monolitico contenente componenti marcatamente diversi come Mach, BSD e il kit I / O, tutti in esecuzione come gruppi di thread in una singola attività nello stesso spazio di indirizzi.

http://lists.apple.com/archives/darwin-kernel/2010/Sep/msg00014.html :

L'attività del kernel non è una vera attività. Rappresenta il kernel, che è il nucleo del sistema operativo. La maggior parte di ciò che accade si verifica su richiesta diretta di un'applicazione. Ogni volta che si assegna un grande blocco di memoria, si apre o si chiude un file, si legge o si scrive un file, si estrae dati sulla rete, si crea un nuovo processo o thread, ecc., L'applicazione esegue una chiamata di sistema. Queste chiamate fanno funzionare il kernel per la tua applicazione. Gran parte di questo lavoro viene fatturato all'attività del kernel, ma in realtà viene svolto dall'applicazione, anche se indirettamente.


1

Un motivo pratico per cui il kernel potrebbe funzionare in modo eccessivo è che il tuo sistema ha memoria insufficiente e si sta schiantando. Controllare il grafico della pressione della memoria nella scheda Memoria di Activity Monitor per vedere se è giallo o rosso.

In questo caso, è possibile ordinare i processi in base alla memoria e terminarne alcuni che ne consumano molto, per ridurre la pressione. (ad es. uccidere alcuni processi di Google Chrome Helper)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.