Kworker, что это такое и почему он так сильно загружает процессор?
Недавно я обновился до Kubuntu Natty Beta 1, и у меня возникло много проблем с процессом kworker. В моменты он использует почти половину моего процессора. Кроме того, как ни странно, это влияет на мои порты USB; всякий раз, когда я подключаю USB-накопитель, процесс kworker переходит в гипердвигатель, и я не могу работать.
Я думал о регистрации ошибки, но так как я даже не нашел никакого разумного объяснения того, что такое kworker, я решил, что мне следует сначала выяснить.
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 для отслеживания определенных приложений, которые, по-видимому, вызывают эту перегрузку.
Следует надеяться, что ваша конкретная система перестанет выражать это поведение при будущем обновлении ядра (и многие из наиболее распространенных причин этого были устранены).
Что такое 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 # 26].
Почему kworker использует ваш процессор (продолжение)? В качестве альтернативы моему другому ответу здесь, Perf - более профессиональный способ проанализировать, какие задачи ядра загружают ваш процессор:
устанавливать
perf
:sudo apt-get install linux-tools-common linux-tools-3.11.0-15-generic
(Второй пакет должен соответствовать версии вашего ядра. Сначала вы можете установить только
linux-tools-common
и позвонитьperf
чтобы он сказал вам, какой пакет ему нужен.)Запишите около 10 секунд следов на всех ваших процессорах:
sudo perf record -g -a sleep 10
Проанализируйте вашу запись:
sudo perf report
(Перейдите на график вызовов с помощью ←, →, ↑, ↓ и Enter.)
Просто чтобы все знали. Я столкнулся с этой проблемой, установил perf (это отличный инструмент), он указал на спин-блокировку и XFS. Это указывало на NFS. Затем я понял, что один из моих маунтов был вне пространства. Освобождение места привело к падению процессора kworker до 0.
Очевидно, это может быть признаком нехватки места на диске на занятом NFS-сервере!
Я недавно установил Ubuntu Natty на внешний диск USB паспорт wd. Когда я начинаю на моем рабочем столе, которому около двух лет, все работает как шарм. Когда я запускаю свой новый ноутбук (система MSI gt680r), он замедляется после выхода компьютера из спящего режима или при подключении другого USB-диска.
Процессы Kworker требуют все больше ресурсов процессора, и мышь время от времени зависает.
Я прочитал несколько решений на разных форумах, которые не сработали.
Я вошел в биос моего ноутбука, где было:
Hand XCHI OFF: Enabled
EHCI Hand OFF: disabled
Я поменял на:
Hand XCHI OFF: disabled
EHCI Hand OFF: disabled
и с тех пор он больше не зависает на natty на моем ноутбуке.
Я бы включил руку обратно, если и когда проблема будет исправлена.
Я думаю, что отключение Непомука может помочь вам:
http://www.freetechie.com/blog/disable-nepomuk-desktop-search-on-kde-4-4-2-kubuntu-lucid-10-04/