Kworker, что это такое и почему он забивает так много CPU?

101

Недавно я обновился до Kubuntu Natty Beta 1, и у меня было много проблем с процессом kworker . Порой он использует почти половину моего процессора. Кроме того, как ни странно, это влияет на мои USB-порты; всякий раз, когда я подключаю USB-накопитель, процесс kworker переходит в hyperdrive, оставляя меня неспособным работать.

Я думал о регистрации ошибки, но так как я даже не нашел разумного объяснения того, что kworker , я решил, что сначала должен узнать.

    
задан davorao 05.04.2011 в 13:57
источник

6 ответов

84

«kworker» - это процесс-заполнитель для рабочих потоков ядра, которые выполняют большую часть фактической обработки ядра, особенно в случаях, когда есть прерывания, таймеры, ввод-вывод и т. д. Они обычно соответствуют подавляющему большинству любое выделенное «системное» время для запуска процессов. Это не то, что можно безопасно удалить из системы и полностью не связано с nepomuk или KDE (за исключением того, что эти программы могут выполнять системные вызовы, которые могут потребовать от ядра делать что-то).

Были сообщения о чрезмерной активности kworker относительно начиная с разработки 2.6.36 ( примера обсуждения ) и широких сообщений о путанице и проблемах с 2.6 .38 (хотя многие из этих отчетов включают слово «Natty», поэтому я предполагаю, что эти люди не использовали какое-либо ядро ​​между 2.6.35 (распространено в Ubuntu 10.10) и 2.6.38 (распространено в Ubuntu 11.04).

Я нашел много сообщений о том, что «исправлено» для того или иного пользователя. Большинство «исправлений», похоже, связаны с обновлениями ядра различного рода. Если обновление можно отследить по конкретной проблеме, часто кажется, что некоторые драйверы или службы ядра были исправлены, чтобы не ошибиться: у меня сложилось впечатление, что в ядре очень много вещей, которые могут вызвать поведение который наблюдается как чрезмерное использование kworker.

Если вы обнаружите, что система недоступна из-за чрезмерной активности kworker, я бы рекомендовал попробовать сделать меньше. Если вы считаете, что ничего не делаете, попробуйте отключить долговременные службы или таймеры (RSS-ридеры, почтовые программы, файловые индексы, отслеживания активности и т. Д.). Если это не работает, попробуйте перезапустить. Если ваша система позволяет включать или отключать оборудование в среде предварительной загрузки, попробуйте отключить оборудование, которое вы не используете. Если это произойдет при каждом перезапуске, прежде чем что-либо сделать, вы можете попробовать удалить все, но в этот момент вы захотите использовать инструменты профилирования syscall для отслеживания определенных приложений, которые, как представляется, вызывают эту перегрузку.

Следует надеяться, что ваша конкретная система перестанет выражать это поведение с будущим обновлением ядра (и многие из наиболее распространенных причин этого были решены).

    
ответ дан Emmet Hikory 08.07.2011 в 10:44
источник
55

Что такое kworker? kworker означает, что процесс ядра Linux выполняет «работу» (обработка системных вызовов). У вас может быть несколько из них в вашем списке процессов: kworker/0:1 - это тот, который находится на вашем первом ядре процессора, kworker/1:1 на втором и т. Д.

Почему kworker запускает ваш процессор? . Чтобы узнать, почему kworker тратит впустую ваш процессор, вы можете создавать обратные трассировки процессора: следить за загрузкой процессора ( top или чем-то еще) и в моменты высокая загрузка через kworker , выполните echo l > /proc/sysrq-trigger , чтобы создать обратную трассировку. (На Ubuntu вам нужно войти в систему с sudo -s ). Сделайте это несколько раз, затем посмотрите обратные трассы в конце dmesg . Посмотрите, что часто происходит в обратном следе CPU, надеюсь, укажет на источник вашей проблемы.

Пример: e1000e. В моем случае я нашел такую ​​обратную линию почти каждый раз:

Call Trace:
 delay_tsc+0x4a/0x80
 __const_udelay+0x2c/0x30
 e1000_acquire_swflag_ich8lan+0xa2/0x240 [e1000e]
 e1000e_read_phy_reg_igp+0x29/0x80 [e1000e]
 e1000e_phy_has_link_generic+0x85/0x120 [e1000e]
 e1000_check_for_copper_link_ich8lan+0x48/0x930 [e1000e]
 e1000e_has_link+0x55/0xd0 [e1000e]
 e1000_watchdog_task+0x5e/0x960 [e1000e]

Он намекнул мне на проблему в модуле карты e1000e Ethernet, и действительно, sudo rmmod e1000e сильно снизили загрузку процессора [ e1000e ошибка # 26 ].

    
ответ дан tanius 17.02.2014 в 02:42
43

Почему kworker запускает ваш процессор (продолжение)? В качестве альтернативы мой другой ответ здесь , Perf - это более профессиональный способ проанализировать, какие задачи ядра вызывают зависание вашего процессора:

  1. Установите perf :

    sudo apt-get install linux-tools-common linux-tools-3.11.0-15-generic
    

    (Второй пакет должен соответствовать вашей версии ядра. Сначала вы можете установить только linux-tools-common и вызвать perf , чтобы сообщить, какой пакет ему нужен.)

  2. Запишите около 10 секунд обратных отображений на всех ваших процессорах:

    sudo perf record -g -a sleep 10
    
  3. Проанализируйте свою запись:

    sudo perf report
    

    (Перейдите к графику вызовов с помощью , , , и введите .)

ответ дан tanius 17.02.2014 в 15:26
5

Просто чтобы все знали. Я столкнулся с этой проблемой, установил perf (это отличный инструмент), он указал на блокировку спина и XFS. Это указывало на NFS. Тогда я понял, что один из моих монстров был вне космоса. Освобождение пространства привело к тому, что CPU kworker упал до 0.

По-видимому, это может быть симптомом исчерпания пространства на занятом сервере NFS!

    
ответ дан Erik Aronesty 19.03.2014 в 13:40
4

Недавно я установил Ubuntu Natty на внешний диск usb wd. Когда я начинаю на своем рабочем столе, которому около двух лет, все работает как шарм. Когда я запускаю свой новый ноутбук (MSI gt680r system), он замедляется после того, как я просыпаюсь с компьютера из сна или если я подключаю другой USB-диск.

Процессы Kworker принимают все больше и больше CPU, и мышь время от времени зависает.

Я читал несколько решений на разных форумах, которые не работали.

Я вошел в BIOS моего ноутбука, где был:

Hand XCHI OFF: Enabled
EHCI Hand OFF: disabled

Я изменил для:

Hand XCHI OFF: disabled
EHCI Hand OFF: disabled

, и с тех пор он больше не замерзает на natty на моем ноутбуке.

Я бы включил функцию обратной связи, если и когда проблема будет исправлена.

    
ответ дан CedCannes 01.07.2011 в 09:08
0

Я думаю, что отключение Nepomuk может помочь вам:

Ссылка     

ответ дан Extender 06.05.2011 в 06:02