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