Содержание
- Обычный блокнот админа
- [kworker] Одно ядро на 90-97% загружено процессом kworker
- 6 ответов
- 5 ответов
Обычный блокнот админа
[kworker] Одно ядро на 90-97% загружено процессом kworker
Всем пинг! Относительно давно поставил htop для того, чтобы поглядывать на загруженность системы. Но поскольку я его очень редко использовал я почти не замечал ничего. И вот некоторое время спустя я поставил себе Conky и после настройки я увидел полную загруженность одного ядра.
Я просматривал все процессы и не мог найти в чем проблема. Очень долго сидел в гугле и искал решение данного вопроса, но все время упирался вразные решения, которые не давали требуемого результата. Я понимал логику как решить проблему, но не сразу нашел как эту логику реализовать.
Суть проблемы: существут некий процесс под названием kworker , который после запуска системы отжирает одно ядро полность. Быстрый гуглеж дал мне понять, что это не критично и связано с прерываниями (сильно глубоко не было желания разбираться в проблеме).
Решалось это все довольно примитивно. Для начала находим (от рута) виновника вот такой командой:
Там увидим примерно следующее:
Вот на последней строке у меня и есть виновник. У вас вполне вероятно могут быть другие цифры после gpe . Лечить его можно вот такой командой (важно — ОТ РУТА):
После этого вы можете проверить через тот же htop и увидите, съеденное ядро вернулось обратно. Это конечно приятно и не может не радовать, но тут есть один маленький минус — после перезагрузки все снова будет как и раньше и процедуру придется повторять.
Меня это через пару дней выбесило и был реализован простой способ решения данного косяка в автоматическом режиме. Написан скрипт-однострочник:
Недавно я обновился до Kubuntu Natty Beta 1, и у меня было много проблем с процессом kworker . Порой он использует почти половину моего процессора. Кроме того, как ни странно, это влияет на мои USB-порты; всякий раз, когда я подключаю USB-накопитель, процесс kworker переходит в hyperdrive, оставляя меня неспособным работать.
Я думал о регистрации ошибки, но так как я даже не нашел разумного объяснения того, что 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 . Посмотрите, что часто происходит в обратном следе CPU, надеюсь, укажет на источник вашей проблемы.
Пример: e1000e. В моем случае я нашел такую обратную линию почти каждый раз:
Он намекнул мне на проблему в модуле карты e1000e Ethernet, и действительно, sudo rmmod e1000e сильно снизили загрузку процессора [ e1000e ошибка # 26 ].
Почему kworker запускает ваш процессор (продолжение)? В качестве альтернативы мой другой ответ здесь , Perf — это более профессиональный способ проанализировать, какие задачи ядра вызывают зависание вашего процессора:
(Второй пакет должен соответствовать вашей версии ядра. Сначала вы можете установить только linux-tools-common и вызвать perf , чтобы сообщить, какой пакет ему нужен.)
Запишите около 10 секунд обратных отображений на всех ваших процессорах:
Проанализируйте свою запись:
(Перейдите к графику вызовов с помощью ← , → , ↑ , ↓ и введите .)
Недавно я обновился до Kubuntu Natty Beta 1, и у меня возникло много проблем с процессом kworker. Порой он использует почти половину моего процессора. Кроме того, как ни странно, это влияет на мои USB-порты; Когда я подключаю USB-накопитель, процесс kworker переходит в hyperdrive, оставляя меня неспособным работать.
Я подумал о том, чтобы найти ошибку, но так как я даже не нашел разумного объяснения того, что [d1 ] kworker Я понял, что должен узнать сначала.
5 ответов
Что такое kworker? kworker означает, что процесс ядра Linux выполняет «работу» (обработка системных вызовов). У вас может быть несколько из них в списке процессов: kworker/0:1 — тот, что на вашем первом ядре процессора, kworker/1:1 тот, что на вашем втором и т. Д.
Что такое kworker? Чтобы узнать, почему kworker тратит впустую ваш процессор, вы можете создавать обратные трассировки процессора: смотрите загрузку процессора (с помощью top или что-то в этом роде) и в моменты высокой нагрузки через kworker выполните echo l > /proc/sysrq-trigger, чтобы создать обратную трассировку , (На Ubuntu вам нужно войти в систему с помощью sudo -s). Делайте это несколько раз, затем смотрите обратные трассы в конце выхода dmesg. Посмотрите, что часто случается в перепадах CPU, надеюсь, укажет на источник вашей проблемы.
Пример: e1000e. В моем случае я нашел такую обратную линию почти каждый раз:
Он намекнул мне на проблему в модуле карты Ethernet e1000e, и действительно sudo rmmod e1000e сделал высокую загрузку процессора немедленно уйдите [e1000e bug # 26].
Источник: