Kworker грузит процессор linux

[kworker] Одно ядро на 90-97% загружено процессом kworker

Всем пинг! Относительно давно поставил htop для того, чтобы поглядывать на загруженность системы. Но поскольку я его очень редко использовал я почти не замечал ничего. И вот некоторое время спустя я поставил себе Conky и после настройки я увидел полную загруженность одного ядра.

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

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

Решалось это все довольно примитивно. Для начала находим (от рута) виновника вот такой командой:

Там увидим примерно следующее:

Вот на последней строке у меня и есть виновник. У вас вполне вероятно могут быть другие цифры после gpe . Лечить его можно вот такой командой (важно — ОТ РУТА):

После этого вы можете проверить через тот же htop и увидите, съеденное ядро вернулось обратно. Это конечно приятно и не может не радовать, но тут есть один маленький минус — после перезагрузки все снова будет как и раньше и процедуру придется повторять.

Меня это через пару дней выбесило и был реализован простой способ решения данного косяка в автоматическом режиме. Написан скрипт-однострочник:

Источник

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

Непосредственно из этой ссылки есть 2 хорошие опции:

Чтобы установить его, откройте терминал (Ctrl + Alt + T) и вставьте этот код:

Tv Maxe

Чтобы установить его, откройте терминал (Ctrl + Alt + T) и вставьте этот код:

Примечание. Оба TV maxe и SopCast Player используют P2P (одноранговая сеть) для потоковой передачи своего контента. Хотя эти услуги не являются незаконными per se, просмотр платных телеканалов или любых лицензированных может вызвать у вас проблемы в зависимости от юрисдикции вашей страны. Пожалуйста, сохраните этот ум, прежде чем пытаться выполнить какие-либо из этих параметров.

См. Ссылку и здесь для получения дополнительной информации по этой теме.

[d17 ] Я на самом деле пытался найти подходящее приложение, которое я использовал на Ubuntu 12.10 всего несколько недель назад. Я не могу вспомнить его имя на данный момент: я помню только красный значок и возможность фильтровать телевизионные каналы по странам. Я считаю, что его нет в Ubuntu 12.04 Software Center, но я могу ошибаться. Любые предложения приветствуются . Мне очень понравилось это!

EDIT -> Угадай, я нашел его! Он называется Примечание и вот как его установить:

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].

Читайте также:  Ubuntu and windows games

Источник

Высокая загрузка CPU от ksoftirqd kworker

Имеем небольшой домашний шлюз на AMD E-350, ubuntu server 12.04. Собственно в последние дни заметил сие.

В htop одно из ядер почти на 90 загружено softirq, другое на половину. Происходит при скачивании из интернета. Вне зависимости, качает сам шлюз или это транзитный трафик. Скорость при уэтом упирается в 20мбит (по тарифу чуть больше).

Ядро свое, с imq и ndpi. Но они непричем, так как ядро почти год использую, а подобное началось пару дней как.

Еще немного информации

в syslog и dmesg ничего подозрительного. Тип соединения pptp (использую accel-ppp)

В интернете решения не нашел. Везде речь о прерываниях, но это итак понятно. Но почему вдруг это возникло и как диагностировать причину — нет информации

1. Правила файрволла в студию

2. Отключить всякие шейперы типа этого imq и т.п.

Естественно я отключал шейпер

ndpi что-то обрабатывает? Обработка сетевого трафика происходит в этих ksoftirqd

Везде речь о прерываниях, но это итак понятно.

Речь о softirq, это не настоящие обработчики прерываний.

еще раз повторюсь, шейпер выключен. ndpi в данный момент ничего не обрабатывает. Даже если бы обрабатывал, уже больше полугода стоит ndpi, а проблем не было.

Давно бы сделал, но ядро свое, а под него не получается поставить linux-tools, даже если указываю поставить ту же версию, из которой собрал ядро.Ругается на разность версий.

А просто скачать пакет и вытащить из него бинарник не судьба? На крайний случай можно собрать perf из исходников.

первые 2 строки 32,07% [kernel] [k] fib4_rule_match 30,27% [kernel] [k] fib_rules_lookup

Что-то он у тебя усердно маршрутизирует. Таблицы маршрутизации большие?

даа. Странно, до этого я таблицу очищал, нагрузка особо не спадала. Сейчас же почти на 80% процентов упала.

Таблицы большие. Вот тут я писал зачем мне это ip rule flush не удаляет все (комментарий)

Думал если их загнать через ip rule в отдельную таблицу так будет лучше. Теперь надо будет попробовать как и советовали через ipset

Пятнадцать сотен маршрутов. А ты суров.

Ну а что делать?) Отлавливать каждый ip адрес и в ручную добавлять?)

Теперь надо будет попробовать как и советовали через ipset

Фигню посоветовали. 100500 маршрутов в таблице это нормально, и я не утрирую. Вон всякие железки типа microtic или vyatta в крейсерском режиме по 350к роутов перемалывают (full-view ага)

Отсюда вывод что таблица маршрутизации в линупс вполне приспособлена к большому количеству записей.

По опыту могу сказать что сильно тормозит если много правил в цепочках iptables, и по опыту же могу сказать что обычно там 90% правил не нужно. То же самое касается большого количества правил ip rules (2-3 лишних правила это не большое количество)

В iptables правил мало. выше уже написал какие. А вот наличие маршрутов в таблице дает сильную нагрузку.

E-350 — очень не быстрый процессор.

Если ты используешь большое число правил маршрутизации ( ip rule flush не удаляет все ), то это сильно нагружает процессор. Переделай на вариант с ipset и большая часть проблем уйдет.

pptp c компрессией тоже должно жрать и без того дохлый процессор.

А вот наличие маршрутов в таблице дает сильную нагрузку.

Если свести количество маршрутов с 1500 до 15 то проблем нет?

Так стоп. Где именно у тебя сейчас 100500 записей? ip rules? ip route?

pptp c компрессией тоже должно жрать и без того дохлый процессор.

Если свести количество маршрутов с 1500 до 15 то проблем нет?

Нет. Чем больше правил, тем больше нагрузка.

Так стоп. Где именно у тебя сейчас 100500 записей? ip rules? ip route?

ip rule. в ip route есть таблица. а через ip rule в эту таблицу 1500 правил.

ip rule. в ip route есть таблица. а через ip rule в эту таблицу 1500 правил.

Так понятное дело, цепочка ip rule обрабатывается последовательно, там никаких хешей никаких деревьев. Совсем другое дело таблица ip route. (Обратите внимание на разницу между цепочка и таблица)

Читайте также:  Install sql server 2016 on windows server 2016

Я бы добавлял все записи в таблицу маршрутизации и не парился. Тормозить оно не будет, инфа 142%. Можно сделать через ipset. Через ipset тормозить тоже не будет. Ну понятное дело что в разумных пределах (300 мегабит и 80к пакетов оно осилит точно)

Просто в таблицу маршрутизации не хотелось. Вдруг надо найти свои локальные маршруты какие то, а приходиться среди этих 1500 искать.

Всё это можно сделать просто голыми руками: одно правило в ip rules и одну дополнительную табличку маршрутизации mytable например:

Само собой нужно добавить таблицу в /etc/iproute2/rt_tables, убедиться что правило с lookup mytable стоит перед остальными правилами, и что в таблице mytable нет никакого default

Тогда destination которые есть в таблице mytable будут уходить в altgw, а которых нету — будут продолжать маршрутизироваться дальше по цепочке, т.е. как обычно

ТО есть если у меня только 5% трафика надо отправлять через другой маршрут, а 95% через дефолт, то все эти 95% все время будут проверяться по этой цепочке?

Будет поиск в таблице, да. Но точно так же нужен поиск в таблице ipset в случае с ipset. И это еще вопрос что хуже, потому что у ip route есть кеш, а у ipset — нет

Спасибо Вам добрый человек. Действительно пока увеличения нагрузки нет.

Малость апну тему. На текущий момент количество адресов в таблице увеличилось до 3546 =) С ipset нагрузка как и раньше практически нулевая. Конечно в этом списке 99,98% адресов мусор. Но хотя бы задумываться о блокировках не приходиться. Как я понял список на актуальность не проверяют, а тупо добавляют новые адреса.

Источник

Что за процесс kworker в Linux

Иногда, просматривая список процессов с помощью утилиты top, htop или ps вы можете найти там процесс kworker. Этот процесс может занимать очень много ресурсов процессора и памяти, но просто убить вы его не сможете, этого не позволит система. В сегодняшней статье мы разберемся что за процесс kworker Linux, зачем он нужен, а также как справится с высоким потреблением ресурсов этим процессом.

Дело в том, что kworker — это процесс, который объединяет все процессы, выполняющиеся в ядре Linux. Высокая загрузка процессора этим процессом означает, что ядро делает какую-либо работу.

Что за процесс kworker в Linux

Kworker отвечает за все операции, которые выполняются на уровне ядра. Это различные таймеры, прерывания, операции ввода/вывода и так далее. Таких процессов может быть несколько для нескольких ядер процессора. Например: kworker:0, kworker:1 и так далее. Посмотреть какие процессы есть сейчас и сколько они потребляют ресурсов можно с помощью top, которую надо запустить от имени суперпользователя:

Или с помощью утилиты ps:

sudo ps aux | grep kworker

Здесь видно количество процессов и насколько kworker грузит процессор. Обычно этот процесс не связан напрямую с системными программами. Высокое потребление ресурсов могут вызвать определенные модули ядра или программы, которые заставляют ядро делать ту или иную работу. Если надо снизить нагрузку, нужно просто попросить ядро больше не делать ту работу, которую оно делает. Для этого сначала надо понять что оно делает.

Для решения этой задачи можно использовать утилиту perf. Для того чтобы установить утилиту надо знать версию ядра:

Теперь установите пакеты с инструментами для ядра этой версии:

sudo apt install linux-tools-common linux-tools-5.4.0-29-generic

Сначала запишите 10 секунд логов работы ядра. Для этого выполните:

sudo perf record -g -a sleep 10

Осталось открыть отчёт и узнать что именно перегружает систему:

sudo perf report

Здесь первые две колонки указывают процент событий данного типа по отношению к общему количеству событий. Третья колонка указывает процесс, для которого были собраны события, четвертая колонка — это ELF файл события. Если событие было в библиотеке, то здесь будет отображён файл библиотеки. С помощью последней колонки можно определить где произошло событие — в пространстве ядра [k] или в пространстве пользователя [.]. С помощью этой информации вы сможете примерно определить какая часть ядра создает нагрузку отключить ненужную функциональность или исправить ошибки.

Читайте также:  Hikvision просмотр камер linux

Выводы

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

Источник

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

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

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

«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. В моем случае я обнаружил такой след почти каждый раз:

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

Источник

Оцените статью