Ich habe gerade Redhat 7.4 auf einem physischen Server installiert und darauf läuft nur die Oracle-Datenbank 12 C. Ich habe festgestellt, dass es mehr als 200 Prozesse im „kworker“ gibt und die Anzahl der Prozesse ständig zunimmt.
Ich möchte wissen, worum es bei diesem Prozess geht und warum mein Server diesen Prozess ständig aufspaltet. Es sollte ein Kernelprozess sein, aber er scheint eine Menge Prozess-ID und CPU-Last zu verbrauchen.
Danke schön.
Antwort1
kworker
Prozesse sind Kernel-Arbeitsprozesse und es ist wahrscheinlich harmlos, viele davon zu haben.
Kernel-Worker-Threads könnten eine beliebige Anzahl von Dingen tun, hier einige zufällig ausgewählte Beispiele:
- Durchführen von Seitencache-Rückschreibvorgängen
- Behandeln bestimmter Arten von Hardwareereignissen
- Viele, viele andere Dinge
Um zu erfahren, was ein Kworker macht, können Sie sich Folgendes ansehen /proc/<kworker_pid>/stack
. Zum Beispiel:
$ 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
Dieser Kworker reagiert auf ein ACPI-Ereignis. Sie können dies erkennen, weil er sich innerhalb seiner „Verarbeitungs“-Funktion befindet, process_one_work
die schließlich zu Funktionen führt, die mit der Verarbeitung von ACPI-Ereignissen zusammenhängen (wie acpi_os_execute_deferred
).
Sie werden wahrscheinlich feststellen, dass viele diesen oder einen ähnlichen Stapel haben:
[<ffffffff9409a37d>] worker_thread+0xbd/0x400
[<ffffffff940a0355>] kthread+0x125/0x140
[<ffffffff946780c5>] ret_from_fork+0x25/0x30
[<ffffffffffffffff>] 0xffffffffffffffff
Diese Kernel-Worker warten einfach nur darauf, dass Arbeit ansteht.
Abhängig von Ihrer Systemkonfiguration kann es durchaus normal sein, viele Kworker zu haben. Sofern sie nicht aktiv Probleme verursachen, würde ich mir über sie keine Sorgen machen.