Co dokładnie robi kernel_task?


28

Chciałbym tylko wiedzieć, za co odpowiada kernel_task. Co to jest maksymalne wykorzystanie pamięci RAM i procesora?


Najlepiej zmierzyć wykorzystanie pamięci RAM i procesora po bezpiecznym rozruchu, aby uzyskać miarę działania systemu w stanie bezczynności.
bmike

1
Według Tylera jest to "przedstawienie samego mikrojądra". Jeśli chcesz bardziej konkretnej odpowiedzi, mówi, że "wydaje się być podstawowym (wirtualnym /) menedżerem pamięci dla Mac OS X na wierzchu Macha." Będziesz trudny do znalezienia ostatecznej odpowiedzi, chyba że porozmawiasz z inżynierem Apple wysokiego poziomu. Społeczeństwo złożyło tylko ten proces. Źródło: bleepsoft.com/tyler/index.php?itemid=43

Odpowiedzi:


27

Zadanie jądra jest specjalne, ponieważ jest to cały system operacyjny / mikro jądro oparte na Mach 3.0 . Wyznacza większość podstawowego sprzętu, czas, przekazywanie wiadomości i obsługę pamięci.

Większość osób zauważa w Monitorze aktywności kernel_task gromadzi cały czas procesora dla opóźnień i obliczeń przetwarzania danych wejściowych / wyjściowych (i / o), a także harmonogram narzutu procesów i wątków. Podobnie - gromadzi wszystkie alokacje pamięci, które nie znajdują się w przestrzeni użytkownika. W 2014 i nowszych komputerach Mac, zadanie to polega na dławieniu procesora - gdy temperatury w procesorze są zbyt wysokie, zadanie jądra jest przypisane "brak pracy" i pokazuje wysoki procesor, który pozwala procesorowi pracować bezczynnie i nie przegrzewać komputera. Jest to najbardziej zauważalne na linii przenośnej - zwłaszcza MacBook bez jakiegokolwiek wentylatora lub dmuchawy do chłodzenia procesora. Apple ostrzega o tym przed potencjalnymi programistami jądra "Dlaczego powinieneś trzymać się z dala od programowania w jądrze" to wyłączenie chłodzenia spowoduje trwałe nieodwracalne uszkodzenie sprzętu.

Podsumowując, programowanie jądra jest ogromną odpowiedzialnością. Musisz być wyjątkowo ostrożny, aby upewnić się, że twój kod nie powoduje awarii systemu, nie zapewnia nieautoryzowanego dostępu do cudzych plików lub pamięci, nie wprowadza zdalnego lub lokalnego exploita root i nie powoduje przypadkowej utraty lub uszkodzenia danych .

Jeśli obejrzysz go po ponownym uruchomieniu, zobaczysz, że zaczyna się od minimalnej pamięci RAM i potrzeb procesora, a rośnie tylko wtedy, gdy inne programy działają i wymagają usług systemowych.

Aby go schudnąć, wyłącz niepotrzebne porty (Wi-Fi, bluetooth itp.) Oraz nieaktywne / nieużywane programy. Jeśli coś się nie uspokoi, pomyśl o ponownym uruchomieniu systemu, aby upewnić się, że żadne zadanie nie zostanie zatrzymane lub nie ma wycieku pamięci. Jeśli masz programy wykonujące prawdziwą pracę, spowodują one, że jądro będzie wykorzystywać zarówno pamięć, jak i czas procesora - po prostu obserwuj jak zaczynasz, aby zobaczyć, które inne programy powodują takie zachowanie. Rzadko zdarza się problem z jądrem - nawet w przypadku źle działających programów - którego nie można rozwiązać przez wylogowanie i ponowne zalogowanie. Kernel_task czyści się dobrze i ogólnie dba o to, aby używać tylko zasobów potrzebnych do obciążenia.


Dzięki! Czy powiedziałbyś, że 700-750 MB pamięci RAM jest do zaakceptowania? Mam dużo za darmo, ale chciałbym wiedzieć, czy jest coś, co powinienem zrobić.
Timothy Mueller-Harder

Niekoniecznie. Na moim głównym MacBooku Pro może ono wzrosnąć do 2 GB, gdy naprawdę mam dużo programów. Nawet wtedy nie muszę często ponownie się uruchamiać, ale raz na miesiąc. (2.66 Core 2 Duo / 8 GB RAM)
bmike

13

Mac OS X Internals: A Systems Approach - Amit Singh - Google Books :

jądro używa abstrakcji zadań i wątków, aby podzielić swoją funkcjonalność na różne przepływy wykonawcze. Jądro używa jednego zadania - zadanie jądra -Z wieloma wątkami wykonującymi operacje jądra, takie jak planowanie, łączenie wątków, zarządzanie wywołaniami, stronicowanie i obsługa wyjątków Uniksa. Tak więc xnu jest monolitycznym jądrem zawierającym wyraźnie różne komponenty, takie jak Mach, BSD i zestaw I / O, wszystkie działające jako grupy wątków w jednym zadaniu w tej samej przestrzeni adresowej.

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

Zadanie jądra nie jest prawdziwym zadaniem. Reprezentuje jądro, które jest   rdzeń systemu operacyjnego. Większość tego, co robi, pojawia się na stronie   bezpośrednia prośba o podanie. Za każdym razem, gdy przydzielasz duży blok   pamięci, otwórz lub zamknij plik, odczytaj lub zapisz plik, przeciągnij dane przez   sieci, utworzyć nowy proces lub wątek itp., twoja aplikacja wykonuje   wywołanie systemowe. Te wywołania powodują, że jądro wykonuje pracę dla twojego   podanie. Znaczna część tej pracy jest obciążona zadaniem jądra, ale to   Naprawdę robi to Twoja aplikacja, choć pośrednio.


1

Praktyczny powód, dla którego jądro może być nadmiernie pracujące, polega na tym, że twój system jest poza pamięcią i to drażni. Sprawdź wykres ciśnienia w pamięci pod Pamięć zakładka Monitor aktywności aby zobaczyć, czy jest żółty lub czerwony.

W takim przypadku można sortować procesy według pamięci i kończyć niektóre, które zużywają dużo, aby zmniejszyć ciśnienie. (np. zabij niektóre procesy Pomocników Google Chrome)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.