物理サーバーにredhat 7.4を新しくインストールし、Oracleデータベース12 Cのみを実行しています。 200以上のプロセスが「kworker」であることがわかりました。プロセスの数は増え続けています。
このプロセスの概要と、サーバーがこのプロセスを継続的にフォークしている理由を教えてください。カーネルプロセスである必要がありますが、プロセスIDとCPUの負荷を大量に消費しているようです。
ありがとうございました。
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が存在するのが普通です。それらが積極的に問題を引き起こしていない限り、私はそれらについて心配しません。