web-dev-qa-db-ja.com

常に高いCPUを使用するUbuntu 16.04 kworker

Ubuntu 16.04コンピューターでは、kworkerがCPUの80%を常に占有していることがわかりました。

パフォーマンスレポートを生成しました。

  • Sudo apt-get install linux-tools-common linux-tools-$(uname -r)
  • すべてのCPUで約10秒のバックトレースを記録するSudo perf record -g -a sleep 10
  • Sudo perf reportで表示します。

上位の結果は次のとおりです。

Samples: 47K of event 'cycles:ppp', Event count (approx.): 38282161158
  Children      Self  Command          Shared Object                  Symbol
+   77.04%     0.00%  kworker/3:3      [kernel.kallsyms]              [k] ret_from_fork
+   77.04%     0.00%  kworker/3:3      [kernel.kallsyms]              [k] kthread
+   77.04%     0.00%  kworker/3:3      [kernel.kallsyms]              [k] worker_thread
+   77.00%     0.13%  kworker/3:3      [kernel.kallsyms]              [k] process_one_work
+   76.26%     0.04%  kworker/3:3      [kernel.kallsyms]              [k] rpm_idle
+   75.98%     0.06%  kworker/3:3      [kernel.kallsyms]              [k] rpm_suspend
+   75.97%     0.03%  kworker/3:3      [kernel.kallsyms]              [k] pm_runtime_work
+   75.84%     0.03%  kworker/3:3      [kernel.kallsyms]              [k] __rpm_callback
+   75.82%     0.01%  kworker/3:3      [kernel.kallsyms]              [k] usb_runtime_idle
+   75.76%     0.00%  kworker/3:3      [kernel.kallsyms]              [k] __pm_runtime_suspend
+   75.64%     0.00%  kworker/3:3      [kernel.kallsyms]              [k] rpm_callback
+   75.61%     0.04%  kworker/3:3      [kernel.kallsyms]              [k] usb_runtime_suspend
+   75.51%     0.03%  kworker/3:3      [kernel.kallsyms]              [k] usb_suspend_both
+   73.51%     0.15%  kworker/3:3      [kernel.kallsyms]              [k] usb_control_msg
+   71.97%     0.14%  kworker/3:3      [kernel.kallsyms]              [k] usb_start_wait_urb
+   68.38%     0.05%  kworker/3:3      [kernel.kallsyms]              [k] usb_submit_urb
+   68.33%     0.30%  kworker/3:3      [kernel.kallsyms]              [k] usb_submit_urb.part.8
+   67.75%     0.82%  kworker/3:3      [kernel.kallsyms]              [k] usb_hcd_submit_urb
+   60.96%    60.41%  kworker/3:3      [kernel.kallsyms]              [k] xhci_hub_control
+   55.99%     0.12%  kworker/3:3      [kernel.kallsyms]              [k] hub_suspend
+   54.97%     0.04%  kworker/3:3      [kernel.kallsyms]              [k] set_port_feature
+   19.36%     0.01%  kworker/3:3      [kernel.kallsyms]              [k] usb_resume_interface.isra.8
+   19.35%     0.02%  kworker/3:3      [kernel.kallsyms]              [k] hub_resume
+   19.32%     0.14%  kworker/3:3      [kernel.kallsyms]              [k] hub_activate
+   18.78%     0.08%  kworker/3:3      [kernel.kallsyms]              [k] hub_ext_port_status
+   11.13%     0.00%  ksoftirqd/3      [kernel.kallsyms]              [k] ret_from_fork
+   11.13%     0.00%  ksoftirqd/3      [kernel.kallsyms]              [k] kthread
+   10.44%     0.51%  ksoftirqd/3      [kernel.kallsyms]              [k] smpboot_thread_fn

再現方法がわかりません。再起動後に消えます。何が起こっている?

3
sunapi386

Dell XPSラップトップおよびカーネル4.4.0-130での同じ問題

カーネルの動的USB電源管理 を無効にして修正しました

カーネルのブートコマンドラインにusbcore.autosuspend=-1を追加しました。

GRUB_CMDLINE_LINUX_DEFAULT="<existing stuff> usbcore.autosuspend=-1"
  • これを永続的に行うには、grub構成ファイルを開きます

    Sudo nano /etc/default/grub
    

上記のフラグを追加します。

  • 次に、を介してGRUBを更新する必要があります

    Sudo update-grub
    
  • リブート後、すべてが正常になり、ビジーなCPUが何か便利なことを行えるようになりました。

動的PMを無効にすると、USBデバイスが接続されている場合にバッテリーの寿命に影響する可能性がありますが、このモードを処理できるUSBデバイスはほとんどありません。

3
Francois P.

以前は、Dellラップトップでも同様の問題がありました。私が読んだのはカーネルのバグによるもので、/sysのファイルに値を書き込むことでカーネルキャッシュをフラッシュすることで緩和できますが、これが役立つとは思いません。

kworkerプロセスを強制終了できないことは知っています。 Askubuntu/Unixに関する同じ質問に対する他の回答を信じる場合、kworkerはカーネルのアクティビティに対応するプレースホルダープロセスです。

以下に提案するソリューションは、最も明白で結果が得られる可能性が高い(まだ試されていない場合)から、可能性が低いものに分類されています。

まだ行っていない場合に備えて、カーネルをリポジトリの最新バージョン(Sudo apt update)に更新することをお勧めします。通常、カーネルを更新するには、効果を確認するために再起動が必要です。

それ以外の場合は、カーネルバージョンが4.15.0-22で、おそらく修正が組み込まれているUbuntu 18.04をインストールしてみてください。

質問をグーグルで検索した場合は、説明に一致するバグレポートが既に見つかっている可能性があります。時々解決策や回避策が含まれているコメントを読んでください。以下のリンクはあなたのものとよく一致しているように見えますが、修正は今のところUbuntuカーネルに届いているはずなので、少し興味をそそられます(コメント#18)。

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1488426

バグに遭遇したときに試しなかったのは、cpulimitcputoolSudo apt install cpulimitまたはSudo apt install cputool)などのCPU制限アプリケーションを使用していたことです。このアプローチが機能する可能性があるかどうかはわかりません。私はそれがそのような非標準的なプロセスで動作することを疑います。


注:Linuxカーネルに関連する場合はいつでも、あなたの質問と将来の質問にuname -mrの出力を追加することができます。

何か機能していることがわかったら、答えを書いてください。

0
Mathieu CAROFF