Почему kswapd0 работает на компьютере без подкачки?

У меня есть облачный сервер с ~14G RAM и никакой подкачки. Однако я иногда вижу, что kswapd0 поднимает некоторый ЦП, когда я работаю top. Почему kswapd0 работал бы вообще, если нет никакой области подкачки для него для управления?

21
задан 11 March 2014 в 20:33

5 ответов

Это все еще имеет процесс, чтобы проверить, существует ли какая-либо подкачка. Для сокращения его необходимо будет установить Ваш swappiness -

редактирование "/etc/sysctl.conf" как корень, затем измениться (или добавить)

vm.swappiness = 0
8
ответ дан 16 November 2019 в 12:19

Область подкачки только используется для данных, которые не поддерживаются никаким другим файлом. Данные, которые отображаются из других файлов на диске (таких как исполняемые программы) все еще подкачиваются в их соответствующие файлы, даже если у Вас нет устройства свопинга.

25
ответ дан 16 November 2019 в 12:19

Если у Вас нет подкачки, и kswapd0 работает, Ваша система на самом деле использует почти всю RAM в тот момент. Пора получить лучшие инструменты к использованию памяти монитора (или свободная/доступная память в системе).

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

1
ответ дан 16 November 2019 в 12:19

Это - известная проблема, что, когда Linux исчерпывает память, это может ввести циклы подкачки вместо того, чтобы делать то, что это должно делать, уничтожение процессов к свободному врезается. Существует OOM (Из Памяти) уничтожитель, который делает это, но только если Подкачка и RAM полны.

Однако это не должно действительно быть проблемой. Проблема состоит в том, что, если существует набор оскорбления процессов как, например, вкладки Firefox и Chrome, которые и используют и захватывают память затем, эти процессы вызовут чтение подкачки назад. Linux затем вводит цикл, где та же память пятится и форт между памятью и жестким диском. Это в свою очередь вызывает смена приоритетов , где свопинг нескольких процессов назад и форта делает систему безразличной.

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

я пытался инициировать это поведение в NetBSD для тестирования и что произошло существует то, что незаконный процесс стал невероятным медленный, в то время как сама ОС была очень быстро реагирующей. При означании, что проблема свопинга действительно происходит, но нет никакой смены приоритетов. Однако NetBSD не имеет драйверов AMDGPU, таким образом, я придерживаюсь Linux в течение времени, будучи. Возможно, NetBSD не делает исполняемых файлов карты памяти, и именно поэтому он не вводит циклы подкачки, но я действительно не знаю достаточно о, это - реализация для высказывания, почему это не становится безразличным.

Facebook имел эту проблему также и создал OOMD, который является Из Демона Памяти. Это - демон, который обнаруживает kswapd0 действие и начинает уничтожать процессы. И согласно Facebook это почти полностью удалило проблему с серверами Linux, становящимися безразличным. Однако я не протестировал его, и я не знаю, как хорошо это будет работать над другими серверами или рабочим столом/ноутбуками. Умоляюще OOMD имеет некоторую логику, решающую, какие процессы уничтожить сначала для сохранения системных процессов и части их системы сервера, которые ответственны за перезапуск вообще, был уничтожен.

Однако это не то, как это должно быть решено. OOMD является УЖАСНЫМ ВЗЛОМОМ. Действительное решение состоит в том, чтобы зафиксировать смену приоритетов, которую цикл подкачки вызывает, а также создание ядра Уничтожитель OOM, более агрессивный при уничтожении процессов к свободной памяти. Фиксация принадлежит ядра, потому что это - единственное место, где она, мы можем быть уверены, что проблема обнаруживается вовремя и процессы, правильно уничтожается.

Установка swappiness=0 не является никаким решением, потому что, когда система вне свободной RAM, она начинает подкачивать несмотря ни на что. Нет никакой опции гарантировать, что система не начинает подкачивать.

И также фиксация незаконных приложений не фиксация. Expecially не, если пользователь хочет использовать эту ошибку для намеренного создания ОС безразличной. Быть быстро реагирующим - ответственность ядра. Если Firefox делает себя безразличным затем, фиксация к приложению. Однако это не только делает себя безразличным, но заставляет всю ОС становиться очень медленной и безразличной. К уровню, что может потребоваться полчаса для входа в систему SSH. SSH не имеет никакого отношения и если это не добирается для выполнения, который является ошибкой в ядре, не в любой другой части системы. И это не ошибка, это - две ошибки. Одна ошибка является сменой приоритетов, где от направляющих, подкачивающих цикл, позволяется вмешаться в другие процессы, чем незаконный процесс (процессы), и это сам по себе плохо. Другая ошибка - то, что это не обнаруживает, что находится в цикле подкачки и который вызывает безумный износ жесткого диска/SSD или безотносительно устройства хранения данных, которое поддерживает подкачку. При свопинге исполняемого файла это - меньше проблемы, поскольку они - карты постоянной памяти, которые не записываются обратно к дискам, но kswapd0 все еще возвращает заблокированное чтение, что это одновременно удаляет из памяти.

, О, и существует третья ошибка. То, что нет никакого способа защитить дисковый кэш от того, чтобы быть съеденным, когда память голодные приложения глотают всю доступную память. Это - одна из причин, что kswapd0 делает систему безразличной. Самые горячие данные с отображенной памятью обычно хранятся в дисковом кэше, но когда Firefox съел тот кэш, хорошо это, очевидно, означает, что чтение с диска должно будет произойти.

Это - не обязательно Firefox, которые вызывают Вашу проблему, но это - браузер по умолчанию, не Chrome. И оба - widly, который, как известно, инициировал эту проблему, поскольку они рассматривают доступную память как что-то, что потрачено впустую, включая кэш и память подкачки, которая в Linux рассчитывает как "доступная память". Таким образом, для не получения "доступной памяти", добираются, потратил впустую его, используют его для кэширования и другого материала. Очевидно, использование ПОДКАЧКИ для ДИСКОВОГО КЭША является ОЧЕНЬ ПЛОХОЙ ИДЕЕЙ, но товарищи и в Firefox и в Chrome отвечают, это со "свободной памятью - потраченная впустую память".

Поэтому, что мы имеем вот, три ошибки ядра, что команды ядра, кажется, не рассматривают ошибок. И ошибка в Firefox, Chrome и всех производных, что они не рассматривают ошибки. Я пытался создать Firefox на своем ноутбуке Fedora, чтобы изучить эту проблему и возможно исправить ее.Угадайте что. Создание Firefox с GCC на 4 ядрах процессора с поршнем на 4 ГБ инициировало ЦИКЛ ПОДКАЧКИ со СМЕНОЙ ПРИОРИТЕТОВ. Таким образом, одно из приложений, которое должно быть переписано, является GCC. На NetBSD, что происходит, просто 4 рабочих экземпляра GCC, становится медленнее, чем выполнение одного экземпляра, но не замораживает систему.

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

3
ответ дан 16 November 2019 в 12:19

Ну, у меня была проблема, занимающая много оперативной памяти, без обмена , и мой ноутбук полностью завис. Автоматическое уничтожение проблемных процессов, похоже, не сработало, поэтому теперь я убедился, что у меня установлен своп, чтобы стабилизировать мою машину. Кажется, это сработало. Как и 20 лет назад, это также работало в Linux, оно просто убивало то, что не подходило, и все, теперь мне приходилось жестко загружать свою машину каждый раз, когда она занимала слишком много оперативной памяти, и это действительно не то, что я ожидал. . Вообще.

-1
ответ дан 9 September 2020 в 09:39

Другие вопросы по тегам:

Похожие вопросы: