У меня есть вопрос относительно swap
и physical memory
. Часто я запускаю программу, которая требует много памяти, и в результате я вижу, что некоторые данные копируются из physical memory
в swap
. Тем не менее, после завершения программы и освобождения physical memory
я все еще вижу значительный объем данных по swap
, что значительно замедляет работу системы и раздражает!
В чем причина этого и как ОС решает, какая часть данных должна идти в swap
? Как долго эти данные должны быть там и как они «освобождаются»?
Я упрощаю вещи, но есть только два случая, когда выгружаемая память в разделе подкачки копируется обратно в физическую память:
sudo swapoff -a
(и др.), Чтобы выключить обмен. Все остальное имеет тенденцию быть пустой тратой времени. Память в разделе подкачки имеет тенденцию быть относительно неиспользуемой, с низким объемом трафика. Алгоритм Linux использует вещи, входящие в swap, это LRU (наименее недавно использованный). Если вы попадаете в ситуацию, когда происходит сбой диска, и приложения останавливаются при сбое страницы, проблему легко решить: вам нужно больше оперативной памяти.
Память, находящаяся в режиме подкачки, не замедлит работу компьютера. Это имеет тот эффект, только когда что-то должно быть вставлено в своп и использовано.
Примечание: как я уже сказал, я упрощаю вещи здесь. Управление памятью - это абсолютно огромная тема, и мои несколько параграфов не дают никакой оценки алгоритмам, их разработчикам или их исполнителям. За прошедшие годы у меня была своя собственная битва с управлением памятью и кешем в Linux, но я кое-что узнал: разработчики Kernel знают больше меня. Они устанавливают вещи такими, какие они есть по причине.
Если вы часто испытываете замедление из-за перестановки страниц, вам, вероятно, потребуется больше памяти. Выключение неиспользуемых или низкоприоритетных служб и выполнение других настроек, уменьшающих объем памяти, могут использоваться в качестве временного временного промежутка.
В чем причина этого и как ОС решает, какая часть данных должна быть обменена?
blockquote>Во время выполнения тяжелого процесса памяти управление памятью меняло страницы, чтобы освободить место для вашего процесса. Обычно это делается на основе наименее недавно использованных. (У программ часто есть страницы памяти, которые в какой-то момент требовались, но больше не нужны.)
Если у вас несколько устройств, вы можете нарушить отображение страниц, удалив этот раздел подкачки. Это заставит страницы в памяти (хотя они могут быть заменены довольно быстро).
Как долго эти данные должны быть там и как они «освобождаются»?
blockquote>После сопоставления для свопинга страницы могут оставаться сопоставленными для свопинга, пока процесс не завершится в в какой момент страницы «освобождаются». Страницы, отображаемые в пространство подкачки, могут находиться в памяти. Диспетчер страниц может поддерживать отображение, чтобы предотвратить необходимость переназначения страницы, если ее необходимо заменить снова.
Следует ожидать некоторого замедления при загрузке страниц в память. Известно, что в зависимости от спроса на память и планирования программ использование подкачки значительно снижает производительность.
Использование
sar
илиmunin
для отслеживания активности ввода / вывода страницы должно позволить вам увидеть, сколько времени требуется для отображения активных страниц в памяти. После того, как они были возвращены в память, они должны оставаться там, пока память доступна.Некоторые вещи, которые могут увеличить производительность подкачки.
- Выделенный раздел подкачки, расположенный рядом с активно доступными разделами. Это уменьшает задержку головы, когда требуется замена.
- Использование файла подкачки, расположенного в наиболее интенсивно используемом разделе. Это может уменьшить задержку головы.
- Выделенный диск для раздела подкачки. Применяется ряд улучшений производительности ввода / вывода.
- Использование SSD для пространства подкачки. I / O намного быстрее чем диск. (Быстрый USB-накопитель также может работать лучше, чем ваш диск, но сначала измерьте скорость ввода-вывода.)
Файлы подкачки и разделы можно добавлять и удалять из работающей системы. Устройствам подкачки могут быть даны разные приоритеты, чтобы контролировать, какое устройство используется первым