高いカーネルタスクメモリ使用量を調査する方法は?


131

私はいつものようにMBP(16GBのRAM)を使用していましたが、突然このポップアップが表示されました:

システムのアプリケーションメモリが不足しています。

コンピューターの問題を回避するには、使用していないアプリケーションをすべて終了します。

アプリケーションを強制終了-システムのアプリケーションメモリが不足しています-スクリーンショット

私は明らかにできるものをいくつか閉じましたが、助けにはなりませんでした。

メモリをチェックした後、カーネルタスクは7GBを消費し、合計23GBの22.36GBのスワップメモリ​​が使用されたようです(明らかにそうでした)。ただし、SDDには20GBの空き容量があります。

メモリ-iStatメニュー-スクリーンショット

私のOS Xが破壊に向かっている間、アクティビティモニターはあまり役に立ちませんでした。

プロセスエクスプローラー

kernel_task-[メモリ]タブ-スクリーンショット kernel_task-[統計]タブ-スクリーンショット

私のtop私のカーネルがフリーズする前に統計:

Processes: 344 total, 2 running, 5 stuck, 337 sleeping, 2580 threads                                                                                                                         19:23:56
Load Avg: 1.56, 1.62, 2.09  CPU usage: 3.51% user, 8.47% sys, 88.1% idle   SharedLibs: 46M resident, 0B data, 6572K linkedit. MemRegions: 757970 total, 2139M resident, 56M private, 907M shared.
PhysMem: 9410M used (6198M wired), 556M unused. VM: 1155G vsize, 1311M framework vsize, 112872658(320) swapins, 122668389(0) swapouts. Networks: packets: 299419263/363G in, 142126838/14G out.
Disks: 58970173/1079G read, 20012389/1120G written.

最後にOS Xがフリーズし、ハードリセットを行い、リカバリモードでSDDを修復し、その後修正する必要がありました(失われた作業の回復、アプリケーションの競合の修正、lost + foundフォルダーのチェック、Chrome / Terminalタブの消失、頭痛など)。 )。

私の質問は、カーネルタスクの高いメモリ使用量をどのように確認するのか、またはそのような状況に適切に対処する方法ですか?Activity MonitorでSampleを取得しようとしましたが、グレー表示されています。


私のMBRの詳細:2.3GB Intel Core i7(2013年後半)と16GB RAM。OS X:10.9.5


1
@klanomath通常、特にアップタイムが長いフリーズがたくさんありますが、これらは不明な理由でカーネルがフリーズするだけです(MBRはかなり新しいです)。しかし、これは、メモリ不足(16 GBのRAMと50 GBの空き領域)のポップアップを見た最初の例です。しかし、私の主な質問は、カーネルタスクのメモリ使用量をどのように調査するかです。したがって、再現可能な場合は関係ありません。
ケノーブ

5
使用zprint -t(ライオン)またはsudo zprint -t(後にマウンテンライオンと)。
クラノマス

1
タイトルの質問に関する再現性とは無関係であることは正しいですが、問題の解決に関連している可能性があります。
クラノマス

1
出力を質問に追加しますか(またはドキュメントに保存しますか)?将来の参考のために/より重要なシステム状態で作成されたzprintと比較できるようにするため。私見それは不運な漏れです。あなたがそれを投稿する場合、私はあなたにもっと伝えることができるかもしれません。
クラノマス

1
私は突然同じ問題を抱えています。macまたはhyperkitのdockerに関連していると確信しています。Mac用のdockerを停止するとすぐに、kernal_taskは10GB以上のメモリを消費し始めます
チャーリーマーティン

回答:


176

カーネルタスクの使用率が高いと、多くの問題が発生します。通常、これは、システムリソース(インデックスストレージ、VMの実行、Webブラウザーのタブが多すぎる、その他のバックグラウンドプロセスなど)を過剰に使用する障害のあるプロセスまたは重いプロセスに関連しています。

OS Xカーネルの使用に関する問題の調査に役立ついくつかの方法を次に示します。

基本的な方法

  • Console.appすべてのメッセージ」を実行して確認し、現在異常なことが起こっているかどうかを確認します。
  • アクティビティモニターを使用して、システムメモリを読み取り、使用されているCPU、RAM、およびディスクの量を判断します。

    別の方法としてtopターミナルで実行しSpaceて更新を保持します-原因の問題を見つけるのが簡単です(スワップイン / スワップアウト / ディスク?)。

  • sudo fs_usageターミナルで実行して、ファイルシステムのアクティビティに関連するシステムコールとページフォールトをリアルタイムで報告します(これは他のすべてからの最良のオプションだと思います)。その後、ヒットControl- Cそれを停止します。

    処置:リストに頻繁に表示されるが、使用していないアプリを強制終了することを検討してください。

    詳細については、制御不能な「kernel_task」プロセスをデバッグする方法を教えてください。

  • 実行sudo syscallbypid.d(またはsyscallbyproc.d)、少し待ってControl-を押しCます。次に、そのプロセス(最後の列)で最も多くのシステムコールを生成したプロセスを確認し、それを認識したら、それを強制終了することを検討します。そうでない場合は、Googleで検索して詳細をご覧ください。

高度な方法

  • 使用するsysdiagnoseコマンドを(押すことでトリガすることができますShift- Control- - - .すぐに(に表示されます、システムメモリ/パフォーマンスの問題を調査中で、システム全体の診断情報を有用収集するために(期間)/var/tmp。)どちらかまたはAppleみんなで分析中に、ないにしてみてください完了したら、何でも-生成されたファイルの圧縮解除を検討し、ログを分析します。

    参照:OS Xからシステム診断ファイルを取得するにはどうすればよいですか?

  • 実行footprintして、VM領域ごとのタイプタイプレベルとスワップされたバイトの詳細なメモリ情報を収集します。

    sudo footprint -a
    

    古いバージョン:

    sudo footprint -all -categories -swapped -collapseSharing
    
  • spindumpシステム全体のプロファイルに使用し、/tmp/spindump.txtファイル(カーネルとその拡張機能を含む)を生成します。

  • vm_stat仮想メモリの統計を表示するために使用します。例えば

    vm_stat 1 # to display every second.
    
  • zprintカーネルの使用状況に関する情報の確認に使用します。次の方法で可能です。

    sudo zprint -t -s | head -n20
    

    最も無駄なカーネルゾーンが表示されます。

  • ファイルの場合newproc.d、実行時に新しいプロセスをスヌーピングするために使用しcreatbyproc.dます。

    sudo newproc.d
    sudo creatbyproc.d
    

    注:新しいOS X(10.11以降)では、整合性保護が有効になっていると機能しない場合があります(チェックボックスをオンにしますcsrutil status)。

  • 試してみてくださいsar-オペレーティングシステムによって維持されているさまざまな累積統計カウンターをサンプリングして報告できるシステムアクティビティレポーター

より便利なデバッグツールについては、dtraceスクリプトを確認してください(grep dtrace /usr/bin/*)。問題の原因となっている障害のあるプロセスがわかっている場合は、それを使用dtrussしてデバッグできます。


行動

オペレーティングシステムの問題の解決に役立つ提案を次に示します。

  • 非アクティブなメモリを解放します。これを行うには、最初にキャッシュをフラッシュし、ディスクキャッシュを強制的に削除する必要があります。

    sync && sudo purge
    

    sync -保留中のディスク書き込みの強制完了(キャッシュのフラッシュ)

    purge -ディスクキャッシュを強制的に消去(フラッシュおよび空に)

    その機能は基本的に、ディスクキャッシュを使用しているすべてのI / O保留中の操作を終了し、占有されているすべてのディスクキャッシュを解放することです。したがって、メインメモリのページングとスワップアウトを容易にするためにディスク領域を解放する必要があります。malloc、vm_allocateなどによって割り当てられた匿名メモリには影響しないため、使用しても安全です。

  • 以下のようないくつかの使い古されたメモリをクリアするためにいくつかのサードパーティ製のアプリを使用しiBoostUpSystemPalなど、

  • 一時的なSpotlightを無効にすることもできます。

    sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist 
    

    また、他のサービスを検討します。

    sudo launchctl list | grep ^[0-9]
    sudo launchctl bslist | grep ^A
    
  • Webブラウザを終了し、それが役立つかどうかを確認します。たとえば、Chromeの使用は非常に機知に富んでいます。特に、バックグラウンドで何らかのフロントエンド処理(Javascriptなど)が行われている場合や、広告のようなアニメーションが常にコンテンツをレンダリングしている場合です。


1
Spotlightは繰り返し表示されますが、私はそれを使用しておらず、殺すたびに2回目以降に表示されます。

1
@ling次に、別の質問をすることをお勧めします。これは、Spotlight固有ではなく、カーネルのタスクメモリが大きいことに関連しているためです。
ケノーブ

2
ため息をつくMacに4 GBのRAMがあり、つい最近、カーネルタスクが3.1 GBに上がり、基本的にコンピューター全体がフリーズしました。私のGoogleドライブのタブを閉じて、それが... 950メガバイトまで行ってきました
Zizouz212

3
kernel_taskメモリとCPU使用率の問題を実際に解決するほど具体的ではありません。
hyiltiz

6

2012年後半のiMacでLCDスクリーンを交換した後、非常によく似た問題がありました。ファンは高RPMで動作しており、CPU Kernel_taskの使用率が高かった。古いLCD画面から新しい交換画面に移動する必要がある温度センサーに絞り込みました。そうしないと、CPU速度とKernel_taskが影響を受け、システムの速度が低下します。

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