web-dev-qa-db-ja.com

Linuxは「kworker」をフォークし続ける

物理サーバーにredhat 7.4を新しくインストールし、Oracleデータベース12 Cのみを実行しています。 200以上のプロセスが「kworker」であることがわかりました。プロセスの数は増え続けています。

このプロセスの概要と、サーバーがこのプロセスを継続的にフォークしている理由を教えてください。カーネルプロセスである必要がありますが、プロセスIDとCPUの負荷を大量に消費しているようです。

ありがとうございました。

6
Jay AU

kworkerプロセスはカーネルワーカープロセスであり、その多くが無害である可能性があります。

カーネルワーカースレッドは、いくつかのランダムな例として、さまざまなことを実行できます。

  • ページキャッシュの書き戻しを行う
  • 特定の種類のハードウェアイベントの処理
  • 他の多くのもの

Kworkerが何をしているかを知るには、/proc/<kworker_pid>/stackを参照してください。例えば:

$ cat /proc/$(pgrep -of kworker)/stack
[<ffffffff85c0c705>] acpi_ns_evaluate+0x1bc/0x23a
[<ffffffff85bffe09>] acpi_ev_asynch_execute_gpe_method+0x98/0xff
[<ffffffff85be4e30>] acpi_os_execute_deferred+0x10/0x20
[<ffffffff8588dc21>] process_one_work+0x181/0x370
[<ffffffff8588de5d>] worker_thread+0x4d/0x3a0
[<ffffffff85893f1c>] kthread+0xfc/0x130
[<ffffffff8588de10>] process_one_work+0x370/0x370
[<ffffffff85893e20>] kthread_create_on_node+0x70/0x70
[<ffffffff858791ba>] do_group_exit+0x3a/0xa0
[<ffffffff85e6a2b5>] ret_from_fork+0x25/0x30
[<ffffffffffffffff>] 0xffffffffffffffff

このkworkerはACPIイベントに対応しています。これは、「処理」関数process_one_work内にあり、最終的にACPIイベントの処理に関連する関数(acpi_os_execute_deferredなど)につながるため、これを知ることができます。

おそらく、多くの人がこのスタックまたは類似のスタックを持っていることがわかります。

[<ffffffff9409a37d>] worker_thread+0xbd/0x400
[<ffffffff940a0355>] kthread+0x125/0x140
[<ffffffff946780c5>] ret_from_fork+0x25/0x30
[<ffffffffffffffff>] 0xffffffffffffffff

これらのカーネルワーカーは単に、作業が行われるのを待っています。

システム構成によっては、多くのkworkerが存在するのが普通です。それらが積極的に問題を引き起こしていない限り、私はそれらについて心配しません。

8
Chris Down