kswapd0 забирает 99,9% моего процессора, как показывает топ, проблема возникла сегодня, когда игра и впервые ушла через 6 минут, а теперь она делает это около 20 минут. Как это поправимо и чем это вызвано?
Процесс kswapd0 - это процесс, управляющий виртуальной памятью. Ваша машина должна иметь ОЗУ, SWAP и EXT4 на жестком диске / SSD. В ext4 хранится все, и доступ к нему всегда медленнее, чем в ОЗУ. Оперативная память - это промежуточное пространство для быстрого доступа программ к информации. Большинство компьютеров имеют как минимум 4 ГБ ОЗУ, что в обычных условиях вполне достаточно. Тем не менее, играя в игру, вы можете нехватать места в ОЗУ, в которое входит SWAP.
SWAP - это фальшивое ОЗУ, расположенное на вашем жестком диске / SSD рядом с EXT4. Доступ к нему быстрее, чем к EXT4, но гораздо медленнее, чем к реальной памяти. Когда у вас заканчивается память, kswapd0 перемещает программы, которые вы не используете / не используете так же, как другие программы, в SWAP, что вызывает крайнюю задержку в этих процессах. Если вашей игре требовалось 5 ГБ ОЗУ, 1 ГБ по крайней мере было бы в SWAP. Это означает, что когда он пытается получить доступ к этой информации, он должен ждать дольше, чтобы получить ее.
Весь этот процесс вызывает чрезмерное использование ЦП, перемещение информации из и в SWAP и RAM и одновременную обработку запроса информации. Как решить эту проблему?
Скажите kswapd0 перемещать вещи в SWAP только тогда, когда у вас недостаточно ОЗУ. Это единственный наиболее эффективный метод решения проблем SWAP. Бег
echo vm.swappiness=0 | sudo tee -a /etc/sysctl.conf
где 0процент, из 100которого осталось использовать SWAP (если у вас осталось 0% оперативной памяти, SWAP начнет принимать данные). Вы также можете просто отредактировать /etc/sysctl.conf по своему вкусу, вместо добавления этой команды в конец каждый раз, используя gedit или nano или что-то еще, но обязательно sudo, хотя этот файл принадлежит root. Перезагрузка и ваши настроены!
Уменьшите потребление оперативной памяти другими процессами или закройте другие программы во время работы программ с большим объемом памяти. Вот почему большинство игр советуют вам закрыть все другие окна перед началом игры, или установки делают то же самое. Такие вещи, как службы синхронизации файлов, как правило, занимают много памяти.
Купить больше оперативной памяти. Установка ОЗУ не так сложна, как кажется. Один или два винта в небольшом отсеке (если вы на ноутбуке) и простой щелчок. Просто убедитесь, что вы покупаете правильный вид!
Меньше процессов ЦП, чем вы сделали с оперативной памятью. Это поможет этим ОЗУ-пакетам работать намного плавнее.
Это лучшее, что вы можете сделать. Другие могут сказать, полностью отключить своп, но это опасно, и я бы НЕ рекомендовал это. Это может привести к зависанию целых систем в случае утечки памяти или слишком большого количества запущенных приложений. Просто поймите, что SWAP является отказоустойчивым для оперативной памяти. Это определенно не так быстро и эффективно, как ОЗУ, но лучше, чем Pagefile в Windows! (которая выполняет ту же цель)
РЕДАКТИРОВАТЬ: Если вы заинтересованы в получении дополнительной информации о SWAP, см. Здесь .
Я не могу точно вспомнить, что решило проблему для меня больше, но я благодарю вас за хорошо написанный ответ, который многое объясняет.
Каспар
Согласно вашему ответу, я прекращаю какой-то процесс, чтобы использовать меньше подкачки. Теперь процесс kwapd0ушел. Спасибо.
mtoloo
29
kswapd0 работает на 99,9% одного процессора, но на самом деле вообще не обменивается
Мне это иногда случается в Ubuntu 14.04 с ядром 3.19.0-50-generic (и более ранними), работающими в VMware vm. Понятия не имею, что заставило его появиться, но это происходит во время простоя.
top шоу:
# top
top - 09:49:35 up 5 days, 18:35, 1 user, load average: 1.00, 1.00, 0.99
Tasks: 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 st
KiB Mem: 3028784 total, 1874468 used, 1154316 free, 1010276 buffers
KiB 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
# top
top - 10:08:58 up 5 days, 18:55, 1 user, load average: 0.72, 0.95, 0.98
Tasks: 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 st
KiB Mem: 3028784 total, 681704 used, 2347080 free, 2916 buffers
KiB 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 вступил в силу) не всегда возможна.
Очень хороший ответ, спасибо. Ядро RPi обновлено, и это то, что я получаю, берсеркинг kswap.
Пол Б
Спасибо, @PaulB. Я добавил к своему ответу работу cron, которую я использую в качестве постоянного решения в моей системе.
Мартин Рюегг
Как правильно указал @Veger , это также работает 16.04. Как я сейчас использую себя. Итак, добавил тег. Благодарность!
Мартин Рюгг
Еще раз спасибо, @Veger ! - Я исправил пропущенный восклицательный знак в Sha-Bang сценария.
Мартин Рюгг,
1
"echo 1> / proc / sys / vm / drop_caches" исправил высокую загрузку процессора для меня - разница между днем и ночью! kswapd0 увеличился с 100% CPU до 0%. Объяснение, почему и постоянное решение было бы здорово. (Примечание: у меня работает ядро linux 4.8.0-36-generic с 16 ГБ памяти и 16 ГБ подкачки.)
Ответы:
Процесс kswapd0 - это процесс, управляющий виртуальной памятью. Ваша машина должна иметь ОЗУ, SWAP и EXT4 на жестком диске / SSD. В ext4 хранится все, и доступ к нему всегда медленнее, чем в ОЗУ. Оперативная память - это промежуточное пространство для быстрого доступа программ к информации. Большинство компьютеров имеют как минимум 4 ГБ ОЗУ, что в обычных условиях вполне достаточно. Тем не менее, играя в игру, вы можете нехватать места в ОЗУ, в которое входит SWAP.
SWAP - это фальшивое ОЗУ, расположенное на вашем жестком диске / SSD рядом с EXT4. Доступ к нему быстрее, чем к EXT4, но гораздо медленнее, чем к реальной памяти. Когда у вас заканчивается память, kswapd0 перемещает программы, которые вы не используете / не используете так же, как другие программы, в SWAP, что вызывает крайнюю задержку в этих процессах. Если вашей игре требовалось 5 ГБ ОЗУ, 1 ГБ по крайней мере было бы в SWAP. Это означает, что когда он пытается получить доступ к этой информации, он должен ждать дольше, чтобы получить ее.
Весь этот процесс вызывает чрезмерное использование ЦП, перемещение информации из и в SWAP и RAM и одновременную обработку запроса информации. Как решить эту проблему?
Скажите kswapd0 перемещать вещи в SWAP только тогда, когда у вас недостаточно ОЗУ. Это единственный наиболее эффективный метод решения проблем SWAP. Бег
echo vm.swappiness=0 | sudo tee -a /etc/sysctl.conf
где
0
процент, из100
которого осталось использовать SWAP (если у вас осталось 0% оперативной памяти, SWAP начнет принимать данные). Вы также можете просто отредактировать /etc/sysctl.conf по своему вкусу, вместо добавления этой команды в конец каждый раз, используя gedit или nano или что-то еще, но обязательно sudo, хотя этот файл принадлежит root. Перезагрузка и ваши настроены!Это лучшее, что вы можете сделать. Другие могут сказать, полностью отключить своп, но это опасно, и я бы НЕ рекомендовал это. Это может привести к зависанию целых систем в случае утечки памяти или слишком большого количества запущенных приложений. Просто поймите, что SWAP является отказоустойчивым для оперативной памяти. Это определенно не так быстро и эффективно, как ОЗУ, но лучше, чем Pagefile в Windows! (которая выполняет ту же цель)
РЕДАКТИРОВАТЬ: Если вы заинтересованы в получении дополнительной информации о SWAP, см. Здесь .
источник
kwapd0
ушел. Спасибо.kswapd0 работает на 99,9% одного процессора, но на самом деле вообще не обменивается
Мне это иногда случается в Ubuntu 14.04 с ядром 3.19.0-50-generic (и более ранними), работающими в VMware vm. Понятия не имею, что заставило его появиться, но это происходит во время простоя.
top
шоу:Временное решение
перезагрузка решила проблему - временно.
после ответа на serverfault (kswapd часто использует 100% CPU, когда используется swap) там, где те же настройки в моей системе:
решение было на самом деле
# echo 1 > /proc/sys/vm/drop_caches
:теперь все нормально
Постоянное решение (будет найдено)?
но поскольку действительная причина еще не известна, и я не нашел подходящего объяснения в сети, это не постоянное решение. На самом деле, выбранный ответ может быть постоянным решением. Я просто хотел добавить это для дальнейшего использования, так как перезагрузка (чтобы sysctl вступил в силу) не всегда возможна.
Другим решением может быть установка THP либо
madvice
илиnever
(см poige в комментарии к своему ответу , Как изменить «/ SYS / ядро / мм / transparent_hugepage / включено» и ссылки MongoDB Руководство по Disable Transparent Huge Страницы (THP) )хрон работа
я настроил следующую партию как задание cron как «постоянное» решение:
вызывается с
16.04 14.04 своп
источник