Kswapd0 грузит систему: cpu 100% io 100%. (Ubuntu)

Kswapd0 занимает много процессора — Yodo.im

kswapd0 работает на 99,9% одного процессора, но на самом деле вообще не переключается

Для меня это иногда случается в Ubuntu 14.04 с ядром 3.19.0-50-generic (и более ранними версиями), работающим на виртуальной машине VMware. Я понятия не имею, из-за чего это появилось, но это происходит во время простоя.

top показывать:

# toptop - 09:49:35 up 5 days, 18:35,  1 user,  load average: 1.00, 1.00, 0.99Tasks: 219 total,   2 running, 217 sleeping,   0 stopped,   0 zombie%Cpu(s):  0.0 us, 25.0 sy,  0.0 ni, 74.7 id,  0.2 wa,  0.0 hi,  0.1 si,  0.0 stKiB Mem:   3028784 total,  1874468 used,  1154316 free,  1010276 buffersKiB Swap: 15624188 total,     3032 used, 15621156 free.   234928 cached Mem   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND    52 root      20   0       0      0      0 R  99.7  0.0 122:15.21 kswapd0     3 root      20   0       0      0      0 S   0.3  0.0   0:29. 86 ksoftirqd/0     7 root      20   0       0      0      0 S   0.3  0.0   9:49.47 rcu_sched

Временное решение

перезагрузка решила проблему — временно.

следуя ответу на ошибка сервера (kswapd часто использует 100% ЦП при использовании подкачки) там, где те же настройки в моей системе:

# cat /proc/sys/vm/swappiness60# cat /proc/sys/vm/vfs_cache_pressure100# cat /sys/kernel/mm/transparent_hugepage/enabled[always] madvise never

решение действительно работало echo 1 > /proc/sys/vm/drop_caches как пользователь root:

# cat /proc/sys/vm/drop_caches0# echo 1 > /proc/sys/vm/drop_caches# cat /proc/sys/vm/drop_caches1

Или, как указал около theTuxRacer (спасибо!), используйте следующую команду, если вы не вошли в систему как root:

echo 1 | sudo tee /proc/sys/vm/drop_caches

теперь все в порядке:

# toptop - 10:08:58 up 5 days, 18:55,  1 user,  load average: 0.72, 0.95, 0.98Tasks: 220 total,   1 running, 219 sleeping,   0 stopped,   0 zombie%Cpu(s):  0. 0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 stKiB Mem:   3028784 total,   681704 used,  2347080 free,     2916 buffersKiB Swap: 15624188 total,     3032 used, 15621156 free.    81924 cached Mem   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     9 root      20   0       0      0      0 S   0.3  0.0  14:10.40 rcuos/0     1 root      20   0   45652   8124   2888 S   0.0  0.3   1:54.98 init

Постоянное решение (должно быть найдено)?

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

Другим решением может быть установка THP на либо madvice или never (см. пойджес комментарий к его ответ, Как мне изменить “/sys/kernel/mm/transparent_hugepage/enabled” и упомянутое руководство MongoDB по Отключить Прозрачные Огромные страницы (THP))

задание cron

я настроил следующий пакет в качестве задания cron в качестве «постоянного» решения:

#!/bin/bash# Rev 2: Use ps instead of top## run as cron, thus no $PATH, thus need to define all absolute pathscpu=$(/usr/bin/printf %. 0f $(/bin/ps -o pcpu= -C kswapd0))[[ -n $cpu ]] \&& (( $cpu >= 90 )) \&& echo 1 > /proc/sys/vm/drop_caches \&& echo "$$ $0: cache dropped (kswapd0 %CPU=$cpu)" >&2 \&& exit 1exit 0

вызванный из root@localhost:~# crontab -e с

# m h  dom mon dow   command  * *  *   *   *     /bin/bash /path/to/batch/drop_caches.sh >> /var/log/syslog 2>&1

Примечание: Приведенный выше сценарий задания cron был адаптирован для включения Фредрик Эрландссон’с предложение: Гораздо более простой и эффективный способ определения загрузки процессора kswapd0. Спасибо!

16.0414.04менять

Нагрузка процессора Linux



Содержание

Все инструкции

В Linux потребление ресурсов CPU, с сортировкой по наибольшей загрузке, можно посмотреть при помощи двух команд: ps и top.

Важный нюанс: Значение в столбце «CPU» в обоих командах считается от загрузки одного ядра процессора. Таким образом сумма процентов на многоядерных машинах будет больше 100%. К примеру для четырехядерного процессора суммарный процент потребления всех процессов не может превышать 400%.

Рассмотрим каждую из команд подробней.

Команда ps

Для запуска введите в консоли ОС команду:

ps -aux --sort -pcpu

Пример вывода команды:

$ ps -aux --sort -rss
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
user      30799 51.2  8.1 2733764 285136 ?      Rl   09:25   5:30 /usr/lib/chromium-browser/chromium-browser --ppapi-flash-path=/usr/lib/pepperflashplugin-nonfree/libpepflashplayer.so --ppap
user       2800  0.1  6.6 9972812 234184 ?      Sl   окт31   1:26 /usr/bin/plasmashell --shut-up
user      31308  2.4  5.3 1767496 188672 ?      Sl   09:26   0:13 /usr/lib/chromium-browser/chromium-browser --type=renderer --enable-pinch --field-trial-handle=7228759356551874141,180166971
user      31011  3. 9  5.3 1793296 186812 ?      Sl   09:25   0:25 /usr/lib/chromium-browser/chromium-browser --type=renderer --enable-pinch --field-trial-handle=7228759356551874141,180166971
user      31369  5.5  4.8 1378568 171328 ?      Sl   09:28   0:23 /usr/lib/libreoffice/program/soffice.bin --writer --splash-pipe=5
user      14442 12.1  4.2 1050808 150148 ?      Sl   01:19  60:04 /usr/lib/x86_64-linux-gnu/libexec/kscreenlocker_greet --graceTime 5000 --ksldfd 26
user      31111  0.9  3.8 1708496 134564 ?      Sl   09:25   0:06 /usr/lib/chromium-browser/chromium-browser --type=renderer --enable-pinch --field-trial-handle=7228759356551874141,180166971
user       1225  0.0  3.7 3639148 132092 ?      Sl   окт31   1:00 /usr/bin/plasmashell --shut-up
user      31078  0.6  3.7 1724480 130724 ?      Sl   09:25   0:03 /usr/lib/chromium-browser/chromium-browser --type=renderer --enable-pinch --field-trial-handle=7228759356551874141,180166971
user      30986  0.7  3.3 1717860 117660 ?      Sl   09:25   0:04 /usr/lib/chromium-browser/chromium-browser --type=renderer --enable-pinch --field-trial-handle=7228759356551874141,180166971
user       1216  1. 7  3.2 3271220 113736 ?      Sl   окт31  20:36 kwin_x11

Важными столбцами являются:

  • USER     Пользователь, от имени которого работает процесс
  • PID         Идентификатор процесса
  • %CPU    Процент загрузки ядра

Согласно данному выводу можно понять, что экземпляр программы dd с PID=31712 практически полностью использует одно ядро процессора.

Команда top

Также загрузку процессора можно посмотреть в интерактивном режиме при помощи команды top. Для запуска введите в консоли ОС команду:

top

Пример вывода команды:

top - 15:13:56 up 8 days,  5:18,  4 users,  load average: 0,01, 0,04, 0,05
Tasks: 124 total,   1 running, 123 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0,0 us,  0,0 sy,  0,0 ni, 99,9 id,  0,1 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:   2060916 total,  1714780 used,   346136 free,   184580 buffers
KiB Swap:   901116 total,        0 used,   901116 free,   999472 cached
  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
22684 root      20   0 24768 1476 1016 R   0,3  0,1   0:00. 01 top
    1 root      20   0 15444  756  612 S   0,0  0,0   0:08.79 init
    2 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kthreadd
    3 root      20   0     0    0    0 S   0,0  0,0   1:08.03 ksoftirqd/0
    5 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kworker/u:0
    6 root      rt   0     0    0    0 S   0,0  0,0   0:00.77 migration/0
    7 root      rt   0     0    0    0 S   0,0  0,0   0:02.81 watchdog/0
    8 root      rt   0     0    0    0 S   0,0  0,0   0:00.77 migration/1
   10 root      20   0     0    0    0 S   0,0  0,0   0:04.40 ksoftirqd/1
   12 root      rt   0     0    0    0 S   0,0  0,0   0:02.40 watchdog/1
   13 root      rt   0     0    0    0 S   0,0  0,0   0:01.50 migration/2
   15 root      20   0     0    0    0 S   0,0  0,0   0:04.33 ksoftirqd/2
   16 root      rt   0     0    0    0 S   0,0  0,0   0:02.26 watchdog/2
   17 root      rt   0     0    0    0 S   0,0  0,0   0:00.49 migration/3
   19 root      20   0     0    0    0 S   0,0  0,0   0:03. 73 ksoftirqd/3
   20 root      rt   0     0    0    0 S   0,0  0,0   0:02.21 watchdog/3
   21 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 cpuset
   22 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 khelper
   23 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kdevtmpfs
   24 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 netns
   25 root      20   0     0    0    0 S   0,0  0,0   0:01.84 sync_supers
   26 root      20   0     0    0    0 S   0,0  0,0   0:00.05 bdi-default
   27 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 kintegrityd
   28 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 kblockd
   30 root      20   0     0    0    0 S   0,0  0,0   0:08.20 kworker/2:1
   31 root      20   0     0    0    0 S   0,0  0,0   0:01.98 kworker/3:1
   32 root      20   0     0    0    0 S   0,0  0,0   0:00.32 khungtaskd
   33 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kswapd0
   34 root      25   5     0    0    0 S   0,0  0,0   0:00. 00 ksmd
   35 root      39  19     0    0    0 S   0,0  0,0   0:00.00 khugepaged
   36 root      20   0     0    0    0 S   0,0  0,0   0:00.00 fsnotify_mark
   37 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 crypto
  103 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 ata_sff
  111 root      20   0     0    0    0 S   0,0  0,0   0:00.00 scsi_eh_0
  114 root      20   0     0    0    0 S   0,0  0,0   0:00.01 scsi_eh_1
  115 root      20   0     0    0    0 S   0,0  0,0   0:15.02 kworker/u:1
  119 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 mpt_poll_0
  137 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 mpt/0
  165 root      20   0     0    0    0 S   0,0  0,0   0:00.00 scsi_eh_2
  169 root      20   0     0    0    0 S   0,0  0,0   0:11.68 kworker/3:2
  177 root      20   0     0    0    0 S   0,0  0,0   1:37.28 kworker/1:2
  207 root      20   0     0    0    0 S   0,0  0,0   0:07.77 flush-8:0
  213 root      20   0     0    0    0 S   0,0  0,0   0:21. 32 jbd2/sda1-8
  214 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 ext4-dio-unwrit
  355 root      20   0 24140 1468  816 S   0,0  0,1   0:00.06 udevd
  502 root      20   0 24100 1096  468 S   0,0  0,1   0:00.00 udevd
  503 root      20   0 24100 1028  408 S   0,0  0,0   0:00.00 udevd
  527 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 kpsmoused
  528 root      20   0     0    0    0 S   0,0  0,0   0:04.36 kworker/2:2
  555 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 ttm_swap
 1842 root      20   0  152m 8928 4548 S   0,0  0,4   8:15.13 vmtoolsd
 1885 root      20   0 60288 9396 6444 S   0,0  0,5   0:00.04 VGAuthService
 1979 root      20   0  199m 5016 4128 S   0,0  0,2   3:19.79 ManagementAgent

Важными столбцами являются:

  • USER     Пользователь, от имени которого работает процесс
  • PID         Идентификатор процесса
  • %CPU    Процент загрузки ядра

Согласно данному выводу видно, что два процесса браузера Chromium используют по 40% возможностей одного из ядер процессора.

Тэги: 

Debian, Cent OS, Ubuntu, FreeBSD

Для сброса пароля укажите Email, зарегистрированный в личном кабинете.


Email





Мы перезвоним в будни с 9:30 до 18:30(по московскому времени).






На указанный email будет отправлена ссылка для подтверждения эл.почты. После подтверждения эл.почты Вы получите доступ в личный кабинет.

Нажимая кнопку, Вы соглашаетесь с условиями договора-оферты, условиями лицензирования Microsoft и политикой обработки персональных данных.




Ядро

— kswapd0 использует много процессорного времени

kswapd0 работает на 99,9% одного ЦП, но на самом деле вообще не выполняет подкачку ) работает в VMware vm. Я понятия не имею, почему он появился, но он приходит во время простоя.

топ показывает:

 # топ
топ - 09:49:35 вверх 5 дней, 18:35, 1 пользователь, средняя загрузка: 1.00, 1.00, 0.99
Задания: 219 всего, 2 бегущих, 217 спящих, 0 остановленных, 0 зомби
%Cpu(s): 0,0 мкс, 25,0 си, 0,0 ни, 74,7 ид, 0,2 ва, 0,0 привет, 0,1 си, 0,0 ст
KiB Mem: всего 3028784, 1874468 использовано, 1154316 свободно, 1010276 буферов
KiB Swap: всего 15624188, 3032 использовано, 15621156 бесплатно. 234928 кэшированных памяти
   PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    52 корень 20 0 0 0 0 R 99,7 0,0 122:15,21 kswapd0
     3 root 20 0 0 0 0 S 0,3 0,0 0:29,86 ksoftirqd/0
     7 корень 20 0 0 0 0 S 0,3 0,0 9:49,47 rcu_sched
 

Временное решение

перезагрузка решила проблему — временно.

после ответа на serverfault (kswapd часто использует 100% ЦП, когда используется подкачка) там, где такие же настройки в моей системе:

 # кошка /proc/sys/vm/swappiness
60
# кот /proc/sys/vm/vfs_cache_pressure
100
# кошка /sys/kernel/mm/transparent_hugepage/enabled
[всегда] Мэдвайз никогда
 

решение действительно работало echo 1 > /proc/sys/vm/drop_caches как пользователь root:

 # cat /proc/sys/vm/drop_caches
0
# эхо 1 > /proc/sys/vm/drop_caches
# кот /proc/sys/vm/drop_caches
1
 

Или, как указал theTuxRacer (спасибо!), используйте следующую команду, если вы не вошли в систему как root:

 эхо 1 | sudo тройник /proc/sys/vm/drop_caches
 

теперь все в порядке:

 # наверх
топ - 10:08:58 вверх 5 дней, 18:55, 1 пользователь, средняя загрузка: 0,72, 0,95, 0,98
Задания: 220 всего, 1 бег, 219 сон, 0 остановлено, 0 зомби
%Cpu(s): 0,0 мкс, 0,2 си, 0,0 ни, 99,8 ид, 0,0 ва, 0,0 привет, 0,0 си, 0,0 ст
KiB Mem: всего 3028784, 681704 использовано, 2347080 свободно, 2916 буферов
KiB Swap: всего 15624188, 3032 использовано, 15621156 бесплатно.  81924 кэшированная память
   PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
     9корень 20 0 0 0 0 S 0,3 0,0 14:10,40 rcuos/0
     1 корень 20 0 45652 8124 2888 S 0,0 0,3 1:54,98 инициализация
 

Постоянное решение (будет найдено)?

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

Другим решением может быть установка THP либо на madvice , либо на , а не на (см. комментарий Poige к его ответу, Как изменить «/sys/kernel/mm/transparent_hugepage/enabled» и упомянутое руководство MongoDB по отключению Transparent Huge Pages (THP))

cron job

я настроил следующий пакет как cron job в качестве «постоянного» решения:

 #!/bin/bash
# Rev 2: Используйте ps вместо top
## запускается как cron, поэтому нет $PATH, поэтому необходимо определить все абсолютные пути
cpu=$(/usr/bin/printf %. 0f $(/bin/ps -o pcpu= -C kswapd0))
[[ -n $процессор ]] \
&& (( $ ЦП >= 90 )) \
&& эхо 1 > /proc/sys/vm/drop_caches \
&& echo "$$ $0: кеш удален (kswapd0 %CPU=$cpu)" >&2 \
&& выход 1
выход 0
 

вызывается с root@localhost:~# crontab -e с командой

 # m h dom mon dow
  * * * * * /bin/bash /path/to/batch/drop_caches.sh >> /var/log/syslog 2>&1
 

Примечание. Приведенный выше сценарий задания cron был адаптирован с учетом предложения Фредрика Эрландссона: Гораздо более простой и эффективный способ определения использования ЦП kswapd0. Спасибо!

16.0414.04swap

ЦП 100% с процессом kswapd0, хотя своп не требуется

спросил

Изменено
2 месяца назад

Просмотрено
17 тысяч раз

У меня есть небольшой виртуальный сервер (1 ГБ ОЗУ, 1 ядро), который хорошо служил мне, пока внезапно не начал сообщать о 100%-м использовании ЦП из-за kswapd0.
Потребление памяти составляет от 50% до 60%.
Я установил swappiness на 0, чтобы проверить, освобождает ли он ресурсы ЦП, но это не так.
У меня была эта проблема 16.04, а теперь 18.04 после обновления.
Как избавиться от этого процессора kswapd0?

  • подкачка
  • процессор

2

На случай, если кто-то столкнется с такой же проблемой — причиной было вредоносное ПО: Multios.Coinminer.Miner .

kswapd0 был двоичным файлом, расположенным в /root/.configrc/a/kswapd0 .
Что вам нужно сделать, это:

  1. Очистить задания crontab, ссылающиеся на /root/.configrc
  2. Очистить ssh ключи
  3. Удалить /корень/.configrc

4

Вредоносное ПО, работающее как гость

Если вы когда-либо включали гостевую учетную запись Ubuntu, а затем включали SSH, у вас может быть вредоносное ПО, работающее с использованием вашей гостевой учетной записи.

 sudo найти /home -f kswapd0
 

Его можно найти в домашнем каталоге любого пользователя, например, /home/guest/.configrc/

Присоединение к любой сети (конференция, кафе, город), в которой есть скомпрометированная машина, или если вы используете службу, например ngrok , несмотря на то, что в вашей системе открыт SSH, ваш компьютер подвергается этой простой гостевой уязвимости.

Поскольку привилегии никогда не повышались (гость не может записывать файлы вне /home/guest или sudo без пароля), я смог удалить гостевую учетную запись, и все работает нормально.

1

Актуально и для версии 20.04. Я поймал пользователя Steam, добавляющего контент на выделенный сервер KillingFloor2. Вот как это выглядит.

Результаты crontab -e :

Результаты htop :

Как решить эту проблему: 9000 5

  1. Я прокомментировал строки в cronjob
  2. Перезагрузил сервер (процессор успокоился)
  3. Удалена папка . configrc
  4. Проверил еще раз пути короны и очистил ее.

1

Я изменил swappiness с 60 на 0, но это не сработало. По ответу от Павла я нашел VIRT/RES/SHR ненулевое значение для тех ресурсоемких задач kswapd0 , что предполагает наличие вредоносных программ.

Недавние обновления по аналогичным вопросам также показывают наличие вредоносных программ, которые скрываются под kswapd0 :

  1. kswapd0 занимает много ресурсов процессора
  2. kswapd0 в ubuntu тормозит систему
  3. 记录被kswapd0这个挖矿病毒折磨的一天

Ниже приведено мое решение. (Пожалуйста, используйте sudo , killall , rm -rf осторожно)

  1. Найти подделку kswapd0 .
 $ sudo find /home -имя kswapd0
/home/пользователь/.configrc5/a/kswapd0
 
  1. Поскольку на новом сервере мало учетных записей, я дважды проверил, что никто не использует эту учетную запись, а папка . configrc5 относительно новая (создана примерно за неделю).
 $ sudo ls /home/user -al
всего 224
drwxr-xr-x 18 пользователь пользователь 4096 四 10 23:56 .
drwxr-xr-x 8 root root 4096 四 10 20:44 ..
-rw-r--r-- 1 пользователь пользователь 220 一 13 09:10 .bash_logout
-rw-r--r-- 1 пользователь пользователь 3771 一 13 09:10 .bashrc
drwxrwxr-x 14 пользователь пользователь 4096 二 10 17:40 .cache
drwx------ 12 пользователь пользователь 4096 二 24 15:09 .config
drwxrwxr-x 4 пользователь пользователь 4096 四 4 00:48 .configrc5
...
-rw-r--r-- 1 root root 131953 二 26 23:34 plm
-rw-r--r-- 1 root root 6300 二 26 23:34 plm2
-rw-r--r-- 1 пользователь пользователь 807 一 13 09:10 .profile
drwxr-xr-x 2 пользователь пользователь 4096 一 13 09:34 Общедоступный
drwx------ 3 пользователя пользователя 4096 二 10 16:09 snap
drwx------ 2 пользователь пользователь 4096 в 10 23:56 .ssh
-rw-r--r-- 1 пользователь пользователь 0 一 13 09:51 .sudo_as_admin_successful
drwxr-xr-x 2 пользователь пользователь 4096 一 13 09:34 Шаблоны
drwxr-xr-x 2 пользователь пользователь 4096 一 13 09:34 Видео
 
  1. (Можно пропустить) Я думал, что смогу раз и навсегда убить учетную запись пользователя и проверить, есть ли у нее привилегия sudo, но sudo userdel userdel отклонен.
  2. Завершить все процессы, запущенные пользователем
 $ sudo killall -u пользователь
 
  1. Удалить все файлы под .configrc5
 $ sudo rm -rf /home/user/.configrc5
 
  1. Снова проверьте htop , и никаких странных действий процессора больше не будет.

5

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.