web-dev-qa-db-ja.com

バルーニングOSX kernel_taskと有線メモリ使用量を診断する方法は?

非常に奇妙な問題があり、根本原因を診断するのに苦労しています。

Mac Pro (2008、8コア2.8 GHz、8800GT)と14GBのRAM(この問題のために最近アップグレードされました!))があります。

システムを起動してログインすると、vm_stat/top/Activity Monitorに、kernel_taskに約150 MBが割り当てられ、マシンに約800 MBの有線メモリが割り当てられていることが表示されます。

最初でも、800 MBは、アプリケーションが実行されていない状態では、割り当てられた有線メモリの量が非常に多いようですが、さらに悪化します。 (注:有線はロックされ、交換不可メモリです)

非常に短い時間の後、端末の起動などの単純なものによってトリガーされることもあり、kernel_taskは8〜900 MBのReal Mem(RSIZE)に膨らみ、有線メモリは1.6 GBに加速します(すべての追加メモリ要求が有線RAM)。

すべてを終了した場合(つまり、実行中のアプリケーションがなく、アクティビティモニターまたは端末を上部に表示しないようにします)、kernel_task RSIZE、またはワイヤードメモリの使用量はそれほど減少しません。逆に、システムにタスクをロードすると、有線メモリが削減されないこと、そして重要なことに、大量のスワッピングよりも削減されないことがわかります。

ログアウトして再度ログインすると、ビットが減少します(450 MB kernel_task、1.28 GB Wired)が、最初に戻ることはありません。

私は奇抜な kext s-を実行していません。さらに、kextstatはそこに巨大なメモリ割り当てを示していません。最大のものは、約4 MBのメモリのcom.Apple.nvidia.nv50halです。

これが発生すると、マシンは全体的に遅く感じます-当然のことながら、このような大量のRAMはページング不可としてマークされています。

だから私はいくつかの質問があります:

1)この有線メモリのすべてを割り当てたものを診断する良い方法はありますか?多くの場合、kernel_taskサイズの2倍を超えており、アプリケーションは実行されていません。実際のメモリの合計は合計されていないようです-どこにも考慮されていないRAM)がたくさんあるようです。

2)カーネルが突然6倍のメモリを必要とする原因は何ですか?

19
user28930

カーネルが通常より多くのメモリを使用する理由を調査するには、さまざまなツールを使用できます。

  1. Activity Monitorを実行して、メモリを最大限に使用しているプロセスを確認します。つまり、kernel_task、通常より多くのメモリを使用する他のタスクはありません(その後、それを強制終了することを検討してください)。
  2. ターミナルで実行vm_stat 1リアルタイムのメモリ統計を表示し、メモリが毎秒本当に増加しているかどうかを確認します。
  3. 実行fs_usage(ルートとして)システムコールとページフォールトをリアルタイムで監視するツール。
  4. ターミナルで実行される複数のプロセスのダーティ/匿名割り当ての合計を確認するには:

    Sudo footprint -all -categories -swapped -collapseSharing
    

    スワップされた量(ユーザーまたはカーネルメモリごと)などのメモリ情報を収集します。

  5. さらに、ほとんどのメモリを使用しているのがカーネルだと思われる場合は、zprintツールを試してください。

    Sudo zprint -t -s | head -n20
    

    カーネルゾーンに関する情報を表示します

(一部のメモリを解放するために)ディスクキャッシュを強制的に削除したい場合は、次の方法を試してください。

sync && Sudo purge

参照: カーネルタスクのメモリ使用量が多いことを調査する方法 AD SE

5
kenorb

カーネル拡張機能は、知らないうちにオペレーティングシステムによって実行される可能性のあるコードフラグメントの1つにすぎません。 Pythonコンサルタントのカナリアと呼ばれるベースのユーティリティがあり、それらのかなりの数を見つけることができます。

それでも潜在的な原因が判明しない場合は、クリーンインストールから起動して、そこで問題を再現できるかどうかを確認します。

3
Hasaan Chop