Linuxは引き続き「kworker」をフォークします。

Linuxは引き続き「kworker」をフォークします。

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

このプロセスの内容とサーバーがこのプロセスをフォークし続ける理由が何であるかを知りたいです。カーネルプロセスでなければなりませんが、プロセスIDとCPU負荷を大量に消費するようです。

ありがとうございます。

ベストアンサー1

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が多いのが正常な場合があります。彼らが積極的に問題を引き起こさない限り、私はそれらについて心配しません。

おすすめ記事