Вопрос даже если у нас достаточно места для оперативной памяти, почему ОС будет использовать память SWAP? [Дубликат]


На этот вопрос уже есть ответ:

enter image description here

из приведенного выше рисунка вы можете видеть, что у нас есть 3191 RAM бесплатно, но при этом swap также использует около 661 байт. почему это происходит? может кто-нибудь взглянуть на это.

благодаря


2
2017-08-07 05:35


происхождения




ответы:


По наиболее вероятной причине в Linux-окне swappiness задано ненулевое число. Видеть Этот вопрос и принятый ответ по прямой причине, почему у вас есть свободная память и своп в использовании. Тем не менее, если вы задаете этот вопрос, вероятно, лучше оставить swappiness по умолчанию.

Другая возможная причина: 3 ГБ памяти использовалась и только недавно была освобождена. Система не будет тратить время на загрузку данных из подкачки и в память до тех пор, пока не узнает, что она действительно нуждается в ней (например, ошибки страницы)

Общее объяснение, применимое к большинству основных современных операционных систем:

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

Вся цель менеджера памяти - посмотреть на систему и сказать: «Хорошо, у меня 8 ГБ памяти, и у меня есть $diskSize+$applicationMemory данные для вставки в него. Что самое главное? »Он попытается переместить наименее важные данные на диск и самые важные данные в память.

Это отлично подходит для сопоставленных файлов и кешированных файлов. Они уже существуют на диске (в виде файлов), поэтому, если они становятся «несущественными», система может просто удалить их из памяти. Если они снова станут важными, они могут загрузить их из исходного файла. Память приложений различна; Обычно он не существует на диске, поэтому система должна сохранять неважную память приложения для обмена.

Проблема в том, что сохранение памяти неважного приложения на диске происходит так же медленно, как загрузка важных файлов с диска; Чтобы свести к минимуму количество времени, затрачиваемого на выгрузку неважной памяти приложения, система будет упреждающим образом «угадывать», какие фрагменты памяти несущественны, и скопировать их для ранней замены. Это позволяет просто отбросить память приложения из ОЗУ, если произойдет что-то более важное.


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


TL; DR: У вас недостаточно оперативной памяти (RAM <Disk Size + Application Memory). Свободная оперативная память - это временная иллюзия, которая будет исправлена ​​при использовании системы. Swap используется, поскольку система идентифицировала низкоприоритетную память приложения и уже нажата его копия на диск, чтобы он мог очень быстро освободить место для вещей с более высоким приоритетом, если это необходимо.


3
2017-08-07 05:41





TL; DR: это копии информации, которая была в памяти за один раз (и, вероятно, все еще есть), которая не была доступна или изменена за долгое время.

Когда ваша система запускается, начинается множество сервисов. Эти службы выделяют память, читают в их конфигурации и т. Д. Они загрязняют некоторые страницы памяти. Многие из этих служб никогда не будут запускаться снова за все время работы вашей системы, потому что вы их не используете. Но операционная система не может отменить страницы памяти, которые они модифицировали. Некоторые из них могут быть важны.

Теперь ваша система может записывать эти страницы, чтобы поменять их позже, когда она находится под давлением памяти и должна выполнить некоторую подкачку. Но это будет худшее время для ввода дополнительных операций ввода-вывода, поскольку в то время I / O ограничивает производительность вашей системы.

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

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


3
2017-08-07 07:43