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가 많은 것이 정상일 수 있습니다. 그들이 적극적으로 문제를 일으키지 않는 한 나는 그들에 대해 걱정하지 않을 것입니다.

관련 정보