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