Kworker、それは何ですか?なぜCPUを大量に消費するのですか?


136

最近Kubuntu Natty Beta 1にアップグレードしましたが、プロセスkworkerで多くの問題を抱えています。現時点では、CPUのほぼ半分を使用しています。また、奇妙なことに、USBポートに影響を与えるようです。USBドライブを接続するたびに、プロセスkworkerがハイパードライブに入り、作業できなくなります。

バグを報告することを考えましたが、kworkerが何であるかについての合理的な説明すら見当たらなかったため、最初に見つける必要があると考えました。


奇妙なことに、kworkerは実行され、ウェイクアップに10%貢献していますが、Kubuntuプログラムがインストールされていません。Alos Nepomukはインストールされていません。
-dago

1
afrazierの応答から、カーネルと何か関係があると思います(kworkerのkはカーネル用です)。そのため、Ubuntuマシンでもkworkerを実行することになります。
davorao

1
この回答は、kworkerが何をしているかを調べるのにも役立つ場合があります。unix.stackexchange.com/ questions
22851

1
その最後のOSアップデートを取得するべきではありません。運が良ければ、次のものがそれを修正します。
nobar

回答:


109

「kworker」は、カーネルワーカースレッドのプレースホルダープロセスであり、特に割り込み、タイマー、I / Oなどがある場合にカーネルの実際の処理のほとんどを実行します。これらは通常、割り当てられた「システム」実行中のプロセス時間。何らかの方法でシステムから安全に削除できるものではなく、nepomukやKDEとはまったく関係ありません(これらのプログラムがシステムコールを行う場合があり、カーネルが何かを行う必要がある場合があります)。

2.6.36開発中に比較的アイドル状態のシステムで過剰なkworkerアクティビティが発生したという報告(例の説明)と、2.6.38での混乱と問題に関する幅広い報告(これらの報告の多くには「Natty」という言葉が含まれているため、これらの人々は2.6.35(Ubuntu 10.10で配布)と2.6.38(Ubuntu 11.04で配布)の間でカーネルを使用していません。

私は、これを1人または別のユーザーに「修正」したものの多くのレポートを見つけました。ほとんどの「修正」は、さまざまな種類のカーネルの更新に関連しているようです。特定の問題に対する更新を追跡できる場合、誤動作しないようにパッチが適用されているドライバーまたはカーネルサービスであることが多いようです。これはkworkerの過度の使用として観察されます。

過剰なkworkerアクティビティが原因でシステムを使用できない場合は、より少ないことを試みることをお勧めします。何もしていないと思われる場合は、実行時間の長いサービスまたはタイマー(RSSリーダー、メールリーダー、ファイルインデクサー、アクティビティトラッカーなど)をシャットダウンしてみてください。これが機能しない場合は、再起動してみてください。システムでプリブート環境でハードウェアを有効または無効にできる場合は、使用していないハードウェアをオフにしてみてください。再起動のたびに何かを実行する前に発生した場合は、アンインストールを試みることができますが、この時点でsyscallプロファイリングツールを実行して、この過負荷を引き起こしていると思われる特定のアプリケーションを追跡する必要があります。

特定のシステムが、将来のカーネルアップグレードでこの動作の表現を停止することが望まれます(そして、これの最も一般的な原因の多くが解決されました)。


1
これに関連していると思われるログインに問題がありました。:私はこの方法で開始されるすべてのを遅らせることによって、それを回避するために管理askubuntu.com/a/484856/46437
アクエリアスパワーを

1
おそらくこれは不要ですが、非常に明確に表現された応答に対する称賛です。細かい表現の英語です。
ジョンカーター

81

kworkerとは何ですか? kworkerLinuxカーネルプロセスが「作業」(システムコールの処理)を行うことを意味します。プロセスリストにそれらのいくつかを含めることができkworker/0:1ます。最初のCPUコアにkworker/1:1あるもの、2番目のCPUコアにあるものなどです。

kworkerがCPUを独占するのはなぜですか?kworkerがCPUを浪費している理由を調べるには、CPUバックトレースを作成できます。プロセッサ負荷(topまたは何か)を監視し、高負荷の瞬間にkworker、実行echo l > /proc/sysrq-triggerしてバックトレースを作成します。(Ubuntuでは、これでログインする必要がありますsudo -s)。これを数回行い、dmesg出力の最後でバックトレースを監視します。CPUバックトレースで頻繁に発生することを確認してください。問題の原因を突き止めることができれば幸いです。

例:e1000e。私の場合、ほぼ毎回このようなバックトレースを見つけました。

Call Trace:
 delay_tsc+0x4a/0x80
 __const_udelay+0x2c/0x30
 e1000_acquire_swflag_ich8lan+0xa2/0x240 [e1000e]
 e1000e_read_phy_reg_igp+0x29/0x80 [e1000e]
 e1000e_phy_has_link_generic+0x85/0x120 [e1000e]
 e1000_check_for_copper_link_ich8lan+0x48/0x930 [e1000e]
 e1000e_has_link+0x55/0xd0 [e1000e]
 e1000_watchdog_task+0x5e/0x960 [e1000e]

e1000eイーサネットカードモジュールの問題を示唆し、実際sudo rmmod e1000eに高CPU負荷がすぐになくなる [ e1000e bug#26 ]。


4
echo l > /proc/sysrq-triggersysrq: SysRq : This sysrq operation is disabled.悲しいことに言ってproxmoxで動作しないようです。
hak8または

1
SysRqを参照のsysctl -w kernel.sysrq = 1で再び有効にする必要がaskubuntu.com/questions/911522/...
セバスチャン

e1000が問題を引き起こしていることをどのように理解しましたか?繰り返され続けたからといって?
onurcanbektas

@onurcanbektasはい–最も頻繁に繰り返される結果が最も可能性の高い原因です。バックトレースは、CPUが占有されている間、CPUがビジーであるものをスポットチェックするためです。
タニウス

70

kworkerがCPUを独占するのはなぜですか(続き)?ここでの他の答えの代わりとして、PerfはCPUを占有しているカーネルタスクを分析するより専門的な方法です。

  1. インストールperf

    sudo apt-get install linux-tools-common linux-tools-3.11.0-15-generic
    

    (2番目のパッケージは、カーネルのバージョンと一致する必要があります。最初にインストールしてlinux-tools-commonperf必要なパッケージを伝えるために呼び出すことができます。)

  2. すべてのCPUで約10秒のバックトレースを記録します。

    sudo perf record -g -a sleep 10
    
  3. 記録を分析します。

    sudo perf report
    

    (とコールグラフを移動しおよびEnter。)


2
私のシステムでは、VMware仮想マシン内で実行perfし、sd_modカーネルモジュールまで問題を追跡しました。でSCSIを無効にvmxファイル読み込みからモジュールを防止し、戻って通常の速度にシステムを得た:scsi0.present = "FALSE"
feklee

E:パッケージlinux-tools-3.11.0-15-genericが見つかりませんE:glob 'linux-tools-3.11.0-15-generic'でパッケージが見つかりませんでしたE:正規表現でパッケージが見つかりませんでした'linux-tools-3.11.0-15-generic'
Paddy

@Paddy:もう一度答えを確認してください:-) "[linux-tools-*-generic]パッケージはカーネルのバージョンと一致している必要があります。最初にlinux-tools-commonのみをインストールし、perfを呼び出してどのパッケージかを通知します。ニーズ。"
タニウス

8

みんなに知らせるためだけに。私はこの問題に遭遇し、perf(これは素晴らしいツールです)をインストールしましたが、これはスピンロックとXFSを指していました。それはNFSを指しています。それから、マウントの1つがスペース不足であることに気付きました。スペースを解放すると、kworker CPUが0になりました。

どうやら、これはビジー状態のNFSサーバーのドライブ容量が不足していることの症状である可能性があります。


1
特定のvirtualboxが実行されているときにkworkerのメルトダウンがあったことに気付きました。ファイルを共有するためにホストでNFSを実行していることがわかりました。しかし、それはどこにも満たされていませんでした。NFSをアンマウントすると、問題が「解決」しました。私はsshfsマウントで共有すると思います。
プログラマー14

4

最近、Ubuntu Nattyを外部ドライブusb wdパスポートにインストールしました。約2歳のデスクトップで起動すると、すべてが魅力のように機能します。新しいラップトップ(MSI gt680rシステム)で起動すると、コンピューターをスリープ状態から復帰させた後、または別のusbディスクを接続すると速度が低下します。

KworkerプロセスはますますCPUを消費し、マウスは時々フリーズします。

さまざまなフォーラムでいくつかの解決策を読みましたが、うまくいきませんでした。

私は私のラップトップのBIOSに行きました。

Hand XCHI OFF: Enabled
EHCI Hand OFF: disabled

私が変更したのは:

Hand XCHI OFF: disabled
EHCI Hand OFF: disabled

そしてそれ以来、私のラップトップ上でもうそれはフリーズしません。

問題が修正された場合は、いつでも手を戻すことができます。


1
なぜこれが起こるのか誰にも説明できますか?XCHIの接続方法
ガイソフト

0

感謝しますが、Kubuntu 11.04の新しいコピーをインストールしてから、前述の問題はなくなりました。
ダヴォラオ

1
これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
fossfreedomの
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.