Своп не копируется обратно в физическую память

У меня есть вопрос относительно swap а также physical memory, Часто я запускаю программу, которая требует много памяти, и в результате я вижу, что некоторые данные копируются из physical memory в swap, Однако после завершения программы и physical memory освобожден, я все еще могу увидеть значительное количество данных о swap что существенно тормозит систему и раздражает!

Какова причина этого и как ОС решает, какая часть данных должна идти swap? Как долго эти данные должны быть там и как они "освобождаются"?

2 ответа

Решение

Если вы часто испытываете замедление из-за перестановки страниц, вам, вероятно, потребуется больше памяти. Выключение неиспользуемых или низкоприоритетных служб и выполнение других настроек, уменьшающих объем памяти, могут использоваться в качестве временного временного промежутка.

В чем причина этого и как ОС решает, какая часть данных должна быть заменена?

В то время как ваш процесс загружал память, управление памятью меняло страницы, чтобы освободить место для вашего процесса. Обычно это делается на основе наименее недавно использованных. (У программ часто есть страницы памяти, которые были когда-то необходимы, но больше не нужны).

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

Как долго эти данные должны быть там и как они "освобождаются"?

После сопоставления для свопинга страницы могут оставаться сопоставленными для свопинга до тех пор, пока процесс не будет завершен, и в этот момент страницы "освобождаются". Страницы, отображаемые в пространство подкачки, могут находиться в памяти. Диспетчер страниц может поддерживать сопоставление, чтобы предотвратить необходимость переназначения страницы, если ее необходимо заменить снова.

Следует ожидать некоторого замедления, пока страницы обмениваются в памяти. Известно, что в зависимости от спроса на память и планирования программ использование подкачки значительно снижает производительность.

С помощью sar или же munin для мониторинга активности ввода / вывода страницы вы должны увидеть, сколько времени занимает отображение активных страниц в память. После того, как они были возвращены в память, они должны оставаться там, пока память доступна.

Некоторые вещи, которые могут увеличить производительность подкачки.

  • Выделенный раздел подкачки, расположенный рядом с активно доступными разделами. Это уменьшает задержку головы, когда требуется замена.
  • Использование файла подкачки, расположенного в наиболее интенсивно используемом разделе. Это может уменьшить задержку головы.
  • Выделенный диск для раздела подкачки. Применяется ряд улучшений производительности ввода / вывода.
  • Использование SSD для пространства подкачки. I/O намного быстрее чем диск. (Быстрый USB-накопитель также может работать лучше, чем ваш диск, но сначала измерьте скорость ввода-вывода.)

Файлы подкачки и разделы могут быть добавлены и удалены из работающей системы. Устройствам подкачки могут быть даны разные приоритеты, чтобы контролировать, какое устройство используется первым.

Я упрощаю вещи, но есть только два случая, когда выгружаемая память в swap копируется обратно в физическую RAM:

  1. Ошибка страницы (приложение пытается вызвать память, сопоставленную с обменом).
  2. Ты используешь sudo swapoff -a (и др.), чтобы отключить обмен.

Все остальное имеет тенденцию быть пустой тратой времени. Память в разделе подкачки имеет тенденцию быть относительно неиспользуемой, с низким объемом трафика Алгоритм Linux использует вещи, входящие в swap, это LRU (наименее недавно использованный). Если вы попадаете в ситуацию, когда происходит сбой диска, и приложения останавливаются при сбое страницы, проблему легко решить: вам нужно больше оперативной памяти.

Память, просто сидящая в режиме подкачки, не замедлит работу компьютера. Это имеет тот эффект, только когда что-то застряло в свопе и использовалось.

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

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