kernel_taskは正確に何をしますか?


30

kernel_taskが何を担当しているのかを知りたいだけです。また、許容される最大RAMおよびCPU使用量はどれくらいですか?


セーフブート後にRAMとCPUの使用量を測定して、アイドル状態のときにシステムが実行しているものを測定するのが最善です。
bmike

1
タイラーによると、それは「マイクロカーネル自体の表現」です。さらに具体的な答えが必要な場合は、「Machの上にあるMac OS Xの基本的な(仮想/)メモリマネージャーのようです」と続けます。高度なアップルエンジニアと話をしない限り、決定的な答えを見つけるのは難しいでしょう。国民はこのプロセスをつなぎ合わせただけです。出典:bleepsoft.com/tyler/index.php

回答:


28

カーネルタスクは、Mach 3.0に基づくオペレーティングシステム/マイクロカーネル全体であるため、特別です。コアハードウェア、タイミング、メッセージパッシング、およびメモリ処理のほとんどを抽象化します。

アクティビティモニターでほとんどの人が気づくのは、kernel_task入出力(i / o)処理の遅延と計算、およびプロセスとスレッドのスケジューリングオーバーヘッドのすべてのCPU時間を蓄積することです。同様に、ユーザー空間にないすべてのメモリ割り当てを蓄積します。2014年以降のMacでは、このタスクはCPUを抑制するために存在します-プロセッサの温度が高すぎると、カーネルタスクに「作業なし」が割り当てられ、CPUがビジー状態になり、プロセッサがアイドル状態になり、コンピューターが過熱しなくなります。これは、ポータブルラインで特に顕著です。特に、プロセッサを冷却するためのファンや送風機を備えていないMacBookです。Appleは、カーネルでのプログラミングから離れなければならない理由」で、潜在的なカーネルプログラマーにこれを警告します。 冷却を無効にすると、修復不可能なハードウェアの永続的な損傷が発生します。

要約すると、カーネルプログラミングは大きな責任です。コードがシステムをクラッシュさせたり、他の誰かのファイルやメモリへの不正なユーザーアクセスを提供したり、リモートまたはローカルのルートエクスプロイトを導入したり、不注意によるデータの損失や破損を引き起こさないように、コードを非常に注意深くする必要があります。

再起動後に見ると、最小限のRAMとCPUの必要性で起動し、代わりに他のプログラムが実行されてシステムサービスが必要になったときにのみ成長します。

スリム化するには、不要なポート(WiFi、bluetoothなど)およびアイドル/未使用プログラムをシャットオフします。物事が落ち着かない場合は、再起動を検討して、タスクがスタックしたりメモリがリークしたりしないようにしてください。実際の作業を行っているプログラムがある場合、カーネルはメモリとプロセッサ時間の両方を使用します。他のどのプログラムがこの動作を引き起こしているのかを確認するために開始するのを見てください。カーネルに問題が発生することはめったにありません。パフォーマンスの悪いプログラムであっても、ログアウトして再度ログインしても解決することはできません。kernel_taskは適切にクリーンアップされ、通常はワークロードに必要なリソースのみを使用するように注意します。


ありがとう!700〜750 MBのRAMが許容できると思いますか?私にはたくさんの無料がありますが、とにかくやるべきことがあるかどうか知りたいです。
ティモシーミュラーハーダー

必ずしも。メインのMacBook Proでは、実際に多くの関連プログラムを実行しているときに2 GBに膨らむことがあります。それでも、私は頻繁に再起動する必要はありませんが、月に1回程度です。(2.66 Core 2 Duo / 8 GB RAM)
bmike

14

Mac OS X内部:システムアプローチ-アミットシン-Googleブックス

カーネルはタスクとスレッドの抽象化を使用して、その機能をさまざまな実行フローに分割します。カーネルは、スケジューリング、スレッドリーピング、コールアウト管理、ページング、Unix例外処理などのカーネル操作を実行する複数のスレッドを持つ単一のタスク(カーネルタスク)を使用します。したがって、xnuは、Mach、BSD、I / O Kitなどの著しく異なるコンポーネントを含むモノリシックカーネルであり、すべて同じアドレススペースの単一タスクでスレッドのグループとして実行されます。

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

カーネルタスクは実際のタスクではありません。オペレーティングシステムのコアであるカーネルを表します。それが行うことの大部分は、アプリケーションの直接要求で発生します。メモリの大きなブロックを割り当てたり、ファイルを開いたり閉じたり、ファイルを読み書きしたり、ネットワーク経由でデータをプルしたり、新しいプロセスやスレッドを作成したりするたびに、アプリケーションはシステムコールを実行します。これらの呼び出しにより、カーネルはアプリケーションに対して動作します。その作業の多くはカーネルタスクに請求されますが、間接的ではありますが、実際にはアプリケーションによって実行されています。


1

カーネルが過度に機能している実際的な理由は、システムのメモリが不足しており、スラッシングが発生していることです。アクティビティモニターの [ メモリ ]タブの下のメモリ負荷グラフを確認して、黄色か赤色かを確認します。

この場合、プロセスをメモリでソートし、その多くを消費するプロセスを終了して、プレッシャーを軽減できます。(たとえば、いくつかのGoogle Chromeヘルパープロセスを強制終了します)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.