kswapd0 занимает 99,9% моего процессора, как показывает top, проблема появилась сегодня во время игры, и в первый раз она исчезла через 6 минут, а теперь она делает это около 20 минут. Как это можно исправить и что является причиной этого?
Процесс kswapd0 - это процесс, который управляет виртуальной памятью. Ваша машина должен есть оперативная память, ПОДКАЧКА и EXT4 на вашем жестком диске / SSD. Ext4 - это место, где все хранится, и доступ к нему всегда медленнее, чем к оперативной памяти. Оперативная память - это как бы промежуточное рабочее пространство для программ для быстрого доступа к информации. Большинство компьютеров имеют по крайней мере 4 ГБ оперативной памяти, чего при нормальных условиях вполне достаточно. Однако, играя в игру, у вас может не хватить места в оперативной памяти, и именно здесь возникает необходимость в подкачке.
SWAP - это поддельная оперативная память, расположенная на вашем жестком диске / SSD рядом с вашим EXT4. Доступ к нему осуществляется быстрее, чем к EXT4, но он намного медленнее, чем фактическая оперативная память. Когда у вас заканчивается память, kswapd0 перемещает программы, которые вы не используете / используете не так часто, как другие программы, в SWAP, что вызывает крайнюю задержку в этих процессах. Если бы вашей игре требовалось 5 ГБ оперативной памяти, то по крайней мере 1 ГБ было бы подкачано. Это означает, что когда он пытается получить доступ к этой информации, ему приходится ждать дольше, чтобы получить ее.
Весь этот процесс приводит к чрезмерной загрузке процессора, перемещению информации из подкачки и оперативной памяти и одновременной обработке запроса информации. Как решить эту проблему?
-
Скажите kswapd0, чтобы он перемещал данные для ОБМЕНА только тогда, когда у вас полностью закончилась оперативная память. Это единственный наиболее эффективный метод решения проблем со свопом. Бежать
echo vm.swappiness=0 | sudo tee -a /etc/sysctl.conf
где
0
является ли процент, оставшийся вне100
при котором следует использовать SWAP (когда у вас останется 0% оперативной памяти, SWAP начнет принимать данные). Вы также можете просто отредактировать / etc/sysctl.conf по своему вкусу вместо того, чтобы добавлять эту команду в конец каждый раз, используя gedit или nano или что-то еще, обязательно sudo, хотя этот файл принадлежит root. Перезагрузитесь, и все готово! - Уменьшите потребление оперативной памяти другими процессами или закройте другие программы во время выполнения программ с большим объемом памяти. Вот почему большинство игр советуют вам закрыть все остальные окна перед началом игры, или установки делают то же самое. Такие вещи, как службы синхронизации файлов, как правило, занимают много памяти.
- Купите больше оперативной памяти. Установка оперативной памяти не так сложна, как кажется. Один или два винта на небольшом отсеке (если вы используете ноутбук) и простой щелчок. Просто убедитесь, что вы покупаете правильный вид!
- Уменьшите нагрузку на процессор так же, как вы это делали с оперативной памятью. Это поможет тем, кто использует оперативную память для ОБМЕНА пакетами, работать намного плавнее.
Это лучшее, что ты можешь сделать. Другие могут сказать, что полностью отключите swap, но это опасно, и я бы НЕ рекомендовал этого делать. Это может привести к зависанию целых систем, если произойдет утечка памяти или будет запущено слишком много приложений. Просто поймите, что ПОДКАЧКА является безотказной для оперативной памяти. Это определенно не так быстро и эффективно, как оперативная память, но это лучше, чем файл подкачки Window! (который достигает той же цели)
РЕДАКТИРОВАТЬ: Если вам интересно узнать больше о SWAP, см. здесь.
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. Спасибо!
Более постоянное решение заключается в том, чтобы увеличьте размер вашего файла подкачки.
kswapd будет использовать 100% процессора при поиске несуществующего пространства подкачки (если ваш раздел подкачки заполнен). htop
покажет, заполнено ли ваше место подкачки в верхней части экрана, или вы можете использовать free -h
команда для проверки использованной подкачки.
После использования следующих команд для увеличения размера моего файла подкачки с 4 ГБ до 8 ГБ kswapd теперь работает на 0% CPU с возможностью замены, установленной на 60*.
sudo swapoff /swapfilesudo rm /swapfilesudo fallocate -l 8G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfile
Нажмите здесь для более подробного описания этих команд
Это предполагает, что вы уже используете файл подкачки (настройка Ubuntu по умолчанию) и что /swapfile
упоминается в /etc/fstab
. Кроме того, ваш файл подкачки может быть больше или меньше в зависимости от того, сколько у вас оперативной памяти, поэтому настройте его соответствующим образом.
* Следует отметить, что я использую твердотельный накопитель, поэтому производительность диска не является проблемой. Однако подкачка почти всегда полезна, если у вас заканчивается оперативная память.
Недавно я столкнулся с этой проблемой, и это также может быть связано с крипто-майнером. Более подробная информация здесь: Outlaw is Back, a New Crypto-Botnet Targets European Organizations - Yoroi /. Надеюсь, это кому-то поможет!
Это происходит со мной и в течение 18.04. Подробности здесь: kernel - kswapd0 taking 100% CPU time on Ubuntu 18.04 - Ask Ubuntu
Это происходит в первую очередь, когда я пытаюсь что-то сделать в клиенте Steam после того, как я разбужу свой компьютер. У меня есть 32 гигабайта на моем компьютере при установке Kubuntu с отключенной подкачкой. Нет никакого смысла в том, что kswapd0 будет перегружен, настолько, что система почти полностью заморожена!!!
Если вы не используете swap, отключите его с помощью swapoff -a
. Запустите его от имени суперпользователя.
@KrishnaChaitanyaKodur сказал правду. Я обнаружил, что троянский скрипт из /temp/.Xsomething
и `~/.ssh/authorized_key’ был изменен. Это заставило облачный сервер отключиться. Ознакомьтесь с приведенной выше ссылкой, в ней содержится серьезный анализ проблемы. Если ваш компьютер внезапно начинает вести себя странно, я думаю, вам лучше остерегаться криптоминеров или вирусов.
@flajann Похоже, у вас заканчивается оперативная память. Отключение подкачки почти никогда не является решением, если это не является абсолютно необходимым, поскольку возможность подкачки предотвращает зависание системы, если у вас не заканчивается место подкачки.