Linux продолжает разветвляться "kworker"

Linux продолжает разветвляться "kworker"

Я недавно установил RedHat 7.4 на физическом сервере, и на нем работает только Oracle Database 12 C. Я обнаружил, что существует более 200 процессов «kworker», число процессов продолжает расти.

Я хотел бы узнать, что это за процесс и почему мой сервер постоянно разветвляет этот процесс? Это должен быть процесс ядра, но он, похоже, потребляет много идентификатора процесса и загрузки ЦП.

Спасибо.

решение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

Эти рабочие ядра просто сидят и ждут, когда их начнут выполнять.

В зависимости от конфигурации вашей системы, вполне может быть нормальным иметь много kworkers. Если только они не создают активных проблем, я бы не стал беспокоиться о них.

Связанный контент