Kworker, что это такое и почему он так сильно загружает процессор?

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

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

137
задан 17 December 2012 в 15:20

6 ответов

«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 для отслеживания определенных приложений, которые, по-видимому, вызывают эту перегрузку.

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

0
ответ дан 17 December 2012 в 15:20

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

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

Пример: 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 bug # 26 ].

0
ответ дан 17 December 2012 в 15:20

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

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

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

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

Hand XCHI OFF: Enabled
EHCI Hand OFF: disabled

Я изменил на:

Hand XCHI OFF: disabled
EHCI Hand OFF: disabled

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

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

0
ответ дан 17 December 2012 в 15:20

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

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

0
ответ дан 17 December 2012 в 15:20

Почему делает kworker пожирателя ресурсов Ваш ЦП (продолжение следует).? Как альтернатива моему другому ответу здесь, Перфект является более профессиональным способом проанализировать, какими задачами ядра является hogging Ваш ЦП:

  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
    

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

70
ответ дан 17 December 2012 в 15:20

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

http://www.freetechie.com/blog/disable-nepomuk-desktop-search-on-kde-4-4-2- Kubuntu-осознанный-10-04 /

0
ответ дан 17 December 2012 в 15:20

Другие вопросы по тегам:

Похожие вопросы: