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

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

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

1
задан 27 March 2012 в 02:45

2 ответа

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

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

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

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

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

0
ответ дан 27 March 2012 в 02:45

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

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

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

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

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

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

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

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

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

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

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

0
ответ дан 27 March 2012 в 02:45

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

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