制御不能な「kernel_task」プロセスをデバッグするにはどうすればよいですか?


42

つい最近、バッテリーの寿命が大幅に低下し、かなりのCPUを使用する「kernel_task」プロセス(2.8 GHzデュアルコアi7、2010 MBPで1-6%が一定)に気付きました。明らかに、kernel_taskのCPU使用率がバッテリーの低下に寄与していると思うので、その理由を調べる必要があります。

Googleを検索すると、kernel_taskはWindowsの「svchost.exe」のOS Xバージョンです。これは、真にデバッグできない悪名高いすべてのプロセスであり、スイッチが動作するまで手動でスイッチを切り替える必要があります。

簡単に制御不能のkernel_taskアクティビティの一番下に到達できる方法はありますか?再起動を試していないのは、それが「修正」しても、根本的な問題は実際には修正されないからです。

アクティビティモニターはCPU使用率を示します。Inspectを押すと、77個のスレッド、2つのポート、数時間と数時間のCPU時間、コンテキストスイッチが毎秒約400回、Mach Messages InとOutが両方とも毎秒約6,000回表示されます。

このkernel_taskプロセスを何らかの方法で検査または監視し、実際にこのすべてのパワーを使用しているものを把握するにはどうすればよいですか?

(注:私の現在の容疑者は、最近の10.6.7アップデート、4ベータ10からRCへのFirefoxアップデート、またはScreenResXです。これらは、私が最近考えたことのすべてです。)


kernel_task制御不能とは言いません。アクティビティモニターは、この領域の診断に最適なユーティリティではない場合があります。コンソールでシステムログクエリを追加して、カーネルタスクの使用方法を特定しやすくします。次に、最初の質問をより簡単に答えられる質問に絞り込みます。
グラハムペリン

1
一定の200%CPUは、どのプロセスでも制御不能に聞こえます。
twe4ked

回答:


12

次の端末コマンドを使用して、kernal_taskに接続されているファイルとプログラムを識別する方法について、同様の質問がありました。

kextstat -l -k | awk '{n = sprintf("%d", $4); print n, $6}' | sort -n

これにより、さまざまなkextとそれらに関連付けられたメモリが表示されます。たとえば6184960 com.apple.driver.AirPort.Brcm4360、私にとっては大きな豚ですが、wifiを使用したい場合はあまりできません。

私が受け取った提案の1つは、上記をにパイプすることにより、Apple以外のすべてのkextがメモリを占有していることを調べることgrep -v com.appleでした。アップル以外のプログラムがリソースを使い果たしている可能性があります。何も壊さずにそれらを削除できるはずです。

もちろん、古くからある解決策はコンピューターを再起動することです。プロセスをCPU使用率の通常レベルに戻すのに必要なのはそれだけです。


最初の列の数字は何ですか?
エントロピー

@Anentropic-試してman kextstat、それを見て、awkコマンドをつかんで$4、それはkextメモリ使用量のサイズのように見えます。質問を考えると意味があります。
rebusB

11

ここで偉大な説明 kernel_taskが何であるかを。ドライバー(kext)、ネットワーク、またはディスクアクティビティです。単にInstrumentsを使用してkernel_taskプロセスにアタッチすることはできません。

ログ(Console.app)、ディスクアクティビティ(例:)iotop fs_usage、ネットワークアクティビティ(ローカルネットワークからの切断を試行し、ネットワーク環境設定でデバイスをオフにする)などの他の兆候を探し、メモリ(kextunload)ドライバをアンインストール/削除してくださいタブレット、USB 3Gモデムなど、サードパーティ製です。kextをインストールしているアプリケーションを確認してください

また、最近クラッシュした場合は、ファイルシステムが破損していないことを確認してください-チェックを行います。


1
CPU使用率はほぼ200%(4コアのうち2コア)で、通常はブート後にファイルなどを転送するときに起動しましたが、その後は通常に戻りません。その理由は、システムボリュームの修復が必要であることが判明したためです。それが完了すると、kernel_task正常なレベルのアクティビティに戻りました。
ダニエルベック

1
答えのリンクは現在
無効です-Swader

1
@Santaリンクに関する提案された編集に感謝しますが、Wayback Machineにバージョンが存在する場合にリンクを削除しても意味がありません。リンクをWayback Machineへのリンクに置き換えます。
GRG

8

@Christopherが述べたように、熱はkernel_task CPUを急上昇させる可能性があります。その理由は、この投稿「MacOS Lion 10.7のkernel_task CPUの問題の修正」に記載されています。CPUが過熱すると、ACPI_SMC_PlatformPlugin.kextは実際のCPU負荷を削減するためにCPUサイクルを消費するようです。

そのため、1つの解決策は、外部ファンまたはSMCFanControlなどを使用してMac(ファンなど)を冷却することです

この記事では、その動作をトリガーするサブkextを削除する別の解決策を示します。私は認めなければならないが、私は個人的にその行動を止めることがどれほど安全であるか確信がない。


2
これが、kernel_taskの大部分が高いCPU使用率を持続させている理由であると推測するのは危険です。それが起こるたびに、私はかなり頻繁にマシンを使用しており、遅れ始めますが、使用している明らかなプロセスはどれもスパイクを引き起こしておらず、kernel_taskだけです。重いプロセス(通常はビデオやゲーム)をシャットダウンすると、最終的にはなくなります。その間、私の2011 MBPは解除されるようです。ひびが入ってきれいになり、ヒートシンクのダストブランケットを取り除いたので、ファンが少なく、kernel_taskの狂気で仕事に戻りました。
ジョーイT

5

通常kernel_task、他のプロセスがシステムコールまたはリソース(メモリまたはディスクI / Oイベント)を過度に使用している場合、制御不能です。

この場合、fs_usageレポートユーティリティを使用して、ファイルシステムのアクティビティに関連するシステムコールとページフォールトをリアルタイムで表示できます。

そのため、ターミナルで次のコマンドを実行します。

sudo fs_usage

次に、どのプロセスが頻繁にいくつかのシステムコールを行っているかを観察し、それらを使用していない場合は、それらを終了/強制終了することを検討してください。

具体的には、システムコールに費やされた経過時間を示すTIME INTERVAL列を確認してください。W経過時間は、プロセスが(その場合には、経過時間が待機時間を含む)の活性うち予定されたことを示した後に現れます。

そのため、システムコールで最も時間間隔を使用しているプロセスをフィルタリングするには、次を実行します。

sudo fs_usage | grep -v 0.0000

最後の列には、(カーネル時間に関して)最も空腹なプロセスが表示されます。精度を高めるためにゼロの数を調整できます(表示されるゼロが少なくなり、時間がかかります)。

その他のアイデアについては、次の点も確認してください。カーネルタスクのメモリ使用率が高いことを調査する方法


最も一般的な問題は次のとおりです。


2
iTerm2およびgrepそれ自体をフィルタリングした後の適切な出力ストリーム:sudo fs_usage | grep -v -e '0.0000' -e 'iTerm2' -e 'grep'
Joel Purra

4

kernel_taskのCPU使用率が大幅に上昇し、CPUファンが部分的に取り外されていることがわかりました。kernel_taskは、CPUが過熱した場合のCPUの調整と関係があります。あなたの場合、多分あなたのファンはがらくたとほこりでいっぱいになっていて、掃除する必要があるでしょう。


それはクレイジーです!これをデバッグするときにログを確認したことがありますか?どのようにしてその解決策にたどり着きましたか?
リケット

3

私はヨセミテでも同じ問題を抱えていましたが、この別の良い仲間に基づいたこの良い魂のおかげで解決できました。私はまだ何が起こったのか理解できませんが、それを解決しようとして週末全体を失った後、私はちょうどあきらめて、盲目的に彼の指示に従います。アクティビティモニターでの絶望を見てください。

あなたのCPUはすべて私たちのものです

注意してください、常に最初にバックアップを行い、説明のために提供されたリンクを読んでください。私は、引き起こされた損害に対して一切責任を負いません。あなたは警告されました。

モデルを見つける

$ system_profiler -detailLevel mini | grep "モデル識別子:"

モデル識別子:MacBookPro8,2

ファイルを移動してバックアップする

$ mkdir -p〜/ backup

$ cd /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources

$ sudo mv MacBookPro8_2.plist〜/ backup /


1
このソリューションは私のために働いた。同じMacBookProバージョンを持っています。残念ながら、マシンの寿命を延ばすために設計された機能を無効にする必要があります。CPUの温度とファンの機能を確認しましたが、正常なようですので、この機能にバグがあると思いますが、CPU冷却フェールセーフがトリガーされた理由の原因を突き止めることができませんでした(時々ログインする前に、最後まで)。
errant.info

なんらかの理由で@ errant.infoがEl Captainで解決しました。私のMacにもバッテリーの故障があり、El Captainに変更したので、実際に修正されたアクションはわかりません。Macで頑張ってください!
誰かがまだMS-DOSを使用しています

2

私は新しい2011 macbook proでOSX Lionを使用しています。最近、CPUの約25〜30%をkernel_taskで実行し、ファンを何時間も何回も回転させました。一度に1つのことを試してみましたが、解決したのは、Finderアプリで5つまたは6つのウィンドウを閉じることでした。理由はわかりませんが、それは明らかです。


2
Finderの拡張機能がインストールされていますか?たとえば、ツールバーまたは右クリック(コンテキスト)メニューに何かを追加するプログラムは?
リケット

1
。。あなたの窓の1つ以上が「すべてのサイズを表示する」のチェックボックスは「表示- >ビューの表示オプション」設定で有効になっているので、その電源をオフにし、その後、すべてのフォルダのデフォルトとして設定し、それが停止しますこれはある
ブライアントッピング

2

私のMacでは、kernel_taskのCPU使用量は、使用するインターネット帯域幅に比例し、約0%〜50%の範囲です。おそらく、Huawei 3Gモデム(HuaweiDataCardDriver.kext)のドライバーが原因です。

カーネル拡張機能を無効にしてみてください。kextunloadを使用する必要はありません。kextバンドルを/ System / Library / Extensions /から他のフォルダーに移動して再起動するだけで安全です。Consultant's Canaryを使用するかkextstat | grep -v com.apple、OS Xに付属していないカーネル拡張機能を一覧表示できます。


1

制御不能のkernel_taskを具体的にトラブルシューティングするために、いくつかの便利なコマンドを次に示します。

  • カーネルプロセス(PID:0)に焦点を合わせてシステム全体のプロファイルを作成し、次を実行します。

    sudo spindump 0 -reveal
    

    特定のプロセス(などlaunchd)には、を使用しますsample(例:sudo sample launchdPIDによる)。

  • カーネルタスクごとのメモリ消費量を収集するには、次を使用します(デフォルトでダーティでソート):

    sudo footprint 0
    

    注:-aすべてのプロセスを対象とするために使用します。

  • 複数のユーティリティからシステム全体の診断情報を収集するには、次を実行しますsudo sysdiagnose

    これも押すことでトリガすることができますShift- - Control- - .期間)。

    起動すると画面が点滅し、Finderでファイルが表示されるまで数分待ちます。

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

    その後、解凍してのようなファイルをチェックしfootprint*.txtspindump.txttaskinfo.txtbc_stats.txt、その他。

  • vm.swapusageカーネル状態をチェックインしますsysctl -a | grep ^vm.swapusage

    基本的には、より多くのスワップは、あなたが(にスワップファイルをチェック使用/private/var/vmによって管理されているをdynamic_pager参照してください。man dynamic_pager)パフォーマンスに苦しんでより多くのカーネルに起因して、スワップイン / スワップアウト操作(参照man vm_statしてman fs_usage)。テストするには、次を実行します。

    vm_stat 1
    sudo fs_usage | grep -w kernel_task
    

    注:ヒットControl- C停止します。


0

私にとっては、1つのプロセス(この場合は20GBのようなファイルを読み込むNetbeans)があり、netbeansの80%cpu、kernel_taskの20%cpu(非常に疑わしい)を使用します。これにより、システム全体がtarのように動作しました。

また、「menumeters」がCPUごとに大量の「sys」時間を報告するという疑いもあります。これは「top」コマンドでも確認できます。たとえばCPU usage: 21.40% user, 23.74% sys

後で、それはnetbeans 120%cpu、kernel_task 65%かもしれませんが、とにかく両方とも「同時に高いCPU」でした

sudo fs_usage これの多くを示した:

12:46:34.446367  PAGE_IN_FILE      A=0x093a5bb000       0.000001   java.453214

私の理論では、netbeansは「非常に多く読み」、ページフォールトが独自のプログラムを実行する(つまり、独自のプログラムをスワップするために送信する)ため、ページフォールトシステムの後ろにキューができます。そしておそらく「他のプログラム」もスワップにスワップアウトし、システム全体がスローになってしまうでしょう。

を使用するtopと、FAULT列も70K / secずつ増加していました。


0

macbook Proは、kernel_taskのCPUが数週間高かったため、ほとんど使用できませんでしたが、同時にバッテリーが膨張したため、ローマのApple Centerで交換することにしました...キーボードも)0€の費用で。さらに良い... kernel_task問題は突然消えます!!! だから、直接または間接的にバッテリーが原因であると確信しています

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