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


18

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

14 GBのRAM を搭載したMac Pro(2008、8コア2.8 GHz、8800GT)を使用しています(この問題のために最近アップグレードされました!)。

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

最初から、800 MBは、アプリケーションを実行せずに割り当てられる非常に多くの有線メモリのように見えますが、さらに悪化します。(注意:Wiredはロックされており、スワップできないメモリです)

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

すべてを終了した場合(IE:実行中のアプリケーションがない、アクティビティモニターまたはターミナルを表示してトップを表示する)、kernel_task RSIZEまたはWired Memoryの使用量の大幅な削減はありません。逆に、システムにタスクをロードすると、ワイヤードメモリが削減されないことがわかります。重要なことは、大量のスワッピングに優先して削減されないことです。

ログアウトしてから再度ログインすると、少し(450 MB kernel_task、1.28 GB Wired)削減されますが、最初に戻ることはできません。

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

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

そこで、いくつか質問があります。

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

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


1
このコードに
p

回答:


5

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

  1. アクティビティモニターを実行して、メモリを最も多く使用しているプロセスを確認します。したがって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で


3

カーネル拡張機能は、知らないうちにオペレーティングシステムで実行できる多数のコードフラグメントのうちの1つにすぎません。Consultant's Canaryと呼ばれるPythonベースの小さなユーティリティを使用すると、それらの多くを見つけることができます。

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

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