Из приведенного выше рисунка видно, что у нас есть 3191 ОЗУ, но при том же обмене также используется около 661 байта. почему это происходит? Может ли кто-нибудь взглянуть на это?
Спасибо
По наиболее вероятной причине в linux box ваша swappiness
установлена на ненулевое число. См. Этот вопрос и принятый ответ по прямой причине, почему у вас есть свободная память и использование подкачки. Тем не менее, если вы задаете этот вопрос, вероятно, лучше оставить значение swappiness
по умолчанию.
Другая возможная причина: 3 ГБ памяти использовались и только недавно были освобождены. Система не будет тратить время на загрузку данных из раздела подкачки и в память, пока не узнает, что это действительно нужно (т. Е. Ошибки страницы)
Общее объяснение, касающееся большинства основных современных операционных систем:
Вы никогда не можете иметь достаточно памяти (если у вас больше ОЗУ, чем у вас есть место на жестком диске). ОЗУ не только для памяти, которую должны запускать приложения ("активная" память). Он также активно используется для картографирования файлов и кэширования данных.
Вся задача менеджера памяти - посмотреть на систему и сказать: «Хорошо, у меня есть 8 ГБ памяти, и у меня есть данные $diskSize+$applicationMemory
чтобы вписаться в нее. Что самое важное?«Он попытается переместить наименее важные данные на диск, а наиболее важные данные в память.
Это прекрасно работает для сопоставленных файлов и кэшированных файлов. Они уже существуют на диске (в виде файлов), поэтому, если они становятся "неважными", система может просто удалить их из памяти. Если они снова становятся важными, он может загрузить их из исходного файла. Память приложения отличается; Обычно он не существует на диске, поэтому система должна сохранять неважную память приложения для подкачки.
Проблема в том, что сохранение неважной памяти приложения на диск происходит так же медленно, как и загрузка важных файлов с диска; Чтобы свести к минимуму количество времени, затрачиваемое на ожидание выгрузки неважной памяти приложения, система предварительно "угадает", какие части памяти не важны, и копирует их для раннего обмена. Это позволяет ему просто удалять память приложения из оперативной памяти, если появляется что-то более важное.
Если вам интересно, как что-то может быть важнее активной памяти приложения, рассмотрите фоновый процесс, который проверяет наличие обновлений каждые 24 часа. В 99,9% случаев эта программа не делает ничего, кроме сна. Система идентифицирует приложения, подобные этим, и выталкивает их для замены, чтобы было больше места для кэшированных файлов (таких как журналы или файлы конфигурации, которые могут записываться или считываться много раз в секунду).
TL; DR: вам не хватает оперативной памяти (RAM <размер диска + память приложения). Свободная память - это временная иллюзия, которая будет исправлена по мере использования вами системы. Используется своп, потому что система определила память приложения с низким приоритетом и уже поместила ее копию на диск, чтобы она могла очень быстро освободить место для вещей с более высоким приоритетом, если это необходимо.
TL; DR: Это копии информации, которая когда-то была в памяти (и, вероятно, сохранилась), к которой не обращались и не изменяли долгое время.
Когда ваша система запускается, многие службы начинают работать. Эти сервисы выделяют память, читают в их конфигурации и так далее. Они пачкают некоторые страницы памяти. Многие из этих служб никогда не будут работать снова в течение всего времени работы вашей системы, потому что вы их не используете. Но операционная система не может отказаться от страниц памяти, которые они изменили. Некоторые из них могут быть важными.
Теперь ваша система может записать эти страницы для последующей подкачки, когда она находится под давлением памяти и должна выполнить некоторую подкачку. Но это было бы худшее время для дополнительных операций ввода-вывода, потому что в то время ввод-вывод ограничивал производительность вашей системы.
Поэтому вместо этого он записывает эти страницы для обмена прямо сейчас, когда у него достаточно свободной полосы пропускания ввода / вывода. Таким образом, если впоследствии он окажется под давлением памяти, он может безопасно отбросить их без дополнительных операций ввода-вывода, поскольку он может прочитать их обратно из свопинга.
Если он в конечном итоге удаляет эти страницы, есть еще одно преимущество. Система теперь имеет больше оперативной памяти, которую она может использовать в качестве дискового кэша.