Я вижу, что kswapd использует 100% CPU ... как я могу сказать, от имени какого процесса kswapd используется так часто?
Я вижу, что kswapd использует 100% CPU ... как я могу сказать, от имени какого процесса kswapd используется так часто?
Ответы:
kswapd управляет пространством подкачки в ответ на требования к памяти, превышающие физически доступные для всех процессов.
Он не зависит от процесса, его интересует только то, к каким страницам и когда осуществляется доступ (это, конечно, сложнее, чем это, но для простоты мы также можем рассматривать это так).
Таким образом, реальный вопрос заключается в том, «какие процессы имеют наибольшую нагрузку на память, из-за чего kswapd постоянно приходится листать страницы».
На этот вопрос легче всего ответить, используя «top» и переключившись в режим сортировки использования памяти.
top
говорит мне, что в ожидании ввода-вывода не тратится время, а в системе почти 100% времени. Больше информации: kswapd часто использует 100% CPU, когда используется своп
Вы можете написать это .. но вы также можете сделать это через верх
Запустите top, затем нажмите O, затем p, затем введите
Теперь все процессы отсортированы по использованию свопа, и вы можете увидеть, какие из них его используют
Если вы используете Ubuntu 15.10 или более позднюю версию, это может быть результатом ошибки , особенно если ваша система представляет собой виртуальную машину без раздела подкачки (например, AWS EC2). Проблема существует в других дистрибутивах , но на момент написания неясно, работает ли это исправление универсально.
Временное решение:
sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
sudo reboot
Обратите внимание, что это отключит загрузку ОЗУ / ЦП для виртуальных машин Xen и Hyper-V.
echo 3 > /proc/sys/vm/drop_caches
это облегчает, как только это начинает происходить. У меня теперь преимущественно есть команда на задании cron, и она, кажется, помогает или, по крайней мере, ограничивает продолжительность резни OOM, когда я вдали от компьютера.
Кажется, что kswapd
где-то есть ошибка , возможно, только в старых ядрах.
Почти каждый день kswapd случайно выходит из строя на некоторых машинах в более крупном кластере (хотя и с нетоковым ядром). 100% CPU на обоих процессах kswapd. Никаких других запущенных процессов (кроме оболочки ssh), большого количества свободной оперативной памяти (более 700 МБ) и никакого SWAP-файла вообще не используется. Нет подмены, нет подкачки.
Пока ничего не объясняется, почему одна машина поражена, а другая нет. Кажется, что он не является полностью случайным, потому что обычно он затрагивает более одной машины за короткий промежуток времени. Похоже, что машины, которые простаивают, а также машины, которые находятся под высоким давлением, меньше (!) Вероятно пострадают от этого эффекта. Так что он должен что-то делать с рабочей нагрузкой и попадать только в том случае, если машина не простаивает и не очень занята.
Если проблема не решается, ничто больше не помогает. Убить все процессы (которые не стали неубиваемыми), размонтировать все файловые системы, ничего. kswapd
по-прежнему остается на 100% CPU. Я подозреваю некоторую гонку спин-блокировки в ядрах SMP, но, скорее всего, я ошибаюсь.
Возможно, посмотрите мой ответ serverfault.com/questions/316995/#493257
Заметки: