Ubuntu 16.04コンピューターでは、kworker
がCPUの80%を常に占有していることがわかりました。
パフォーマンスレポートを生成しました。
Sudo apt-get install linux-tools-common linux-tools-$(uname -r)
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
再現方法がわかりません。再起動後に消えます。何が起こっている?
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デバイスはほとんどありません。
以前は、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
バグに遭遇したときに試しなかったのは、cpulimit
やcputool
(Sudo apt install cpulimit
またはSudo apt install cputool
)などのCPU制限アプリケーションを使用していたことです。このアプローチが機能する可能性があるかどうかはわかりません。私はそれがそのような非標準的なプロセスで動作することを疑います。
注:Linuxカーネルに関連する場合はいつでも、あなたの質問と将来の質問にuname -mr
の出力を追加することができます。
何か機能していることがわかったら、答えを書いてください。