Linux는 "kworker"를 계속 포크합니다.

Linux는 "kworker"를 계속 포크합니다.

물리적 서버에 Redhat 7.4를 새로 설치했는데 Oracle 데이터베이스 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가 많은 것이 정상일 수 있습니다. 그들이 적극적으로 문제를 일으키지 않는 한, 나는 그들에 대해 걱정하지 않을 것입니다.

관련 정보