Что такое "запоминаемая память", "кэшированный", "выгружаемый", "невыгружаемый пул" и как они отличаются от "используемой памяти"
Я думал добавить немного оперативной памяти в мой компьютер, поскольку в наши дни это происходит медленно, поэтому я зашел на панель задач, чтобы посмотреть статистику использования памяти, но мне было трудно угадать реальное значение некоторых параметров управления памятью. так
Q1: что именно Commited Memory
, Cached
, Paged
, Not-Paged pool
и как они отличаются от In-Use
Объем памяти.
Q2: Насколько я знаю, ядро имеет сложный алгоритм управления памятью, так что, если у меня в оперативной памяти моего ноутбука отображается свободная память, могу ли я сделать вывод, что моей физической памяти достаточно?
3 ответа
Ответ на вопрос 1:
- Используемый относится к фактическому количеству используемой физической памяти.
- Второе число в выделенной памяти относится к пределу фиксации, который представляет собой объем физической памяти + размер файла подкачки.
- Первое число в выделенной памяти относится к тому, сколько приложений памяти запрашивается для использования.
- Когда приложение сначала запрашивает использование определенного объема памяти, Windows проверяет, может ли оно где-то поместиться, либо в файл подкачки, либо в память. Это не означает, что много памяти занимает реальная физическая память или пространство файла подкачки. Это просто означает, что Windows резервирует это пространство в общем лимите, в случае его использования. Большая часть запрошенной памяти используется, но не все.
- Кэшированный Относится к объему физической памяти, используемой для ускорения доступа к файловой системе. В клиентских ОС до 10% вашей памяти используется для буферизации записей ("порог грязной страницы").
- Выгружаемый пул - это объем памяти ядра и драйвера устройства, который МОЖЕТ пролиться из физической памяти в медленный файл подкачки ( источник).
- Не выгружаемый пул - это объем памяти ядра и драйвера устройства, который должен оставаться в физической памяти. Этот тип памяти не может быть выгружен на диск.
Ответ на вопрос 2:
Проще говоря, в Windows "память" может поддерживаться либо физической ОЗУ, либо файлом подкачки (на диске). Файл (ы) подкачки используется для многих целей, включая освобождение физического ОЗУ для нечасто доступной программы. Это на несколько порядков медленнее, чем физическое ОЗУ, потому что оно поддерживается диском, вращающимся или нет.
Если вашей системе не хватает памяти, возможно, что приложения, которые вы активно используете, будут перетекать на диск, и ваша система значительно замедлится.
Как можно увидеть из ответа 1, по этим цифрам совсем не легко определить, достаточно ли у вас памяти или нет.
Я бы предложил следующий метод, чтобы определить, достаточно ли у вас памяти или нет:
- Запустите монитор ресурсов (Win+R и введите
perfmon /res
) - Используйте свой ноутбук, как обычно.
- Когда вы заметите замедление, вернитесь к монитору ресурсов и увидите график памяти справа. Под жесткой ошибкой понимается количество обращений к файлу подкачки для доступа к памяти. Количество серьезных неисправностей должно быть близко к 0. Если нет, у вас недостаточно оперативной памяти для того, что вы делаете.
У вас есть пара лекарств:
- Закройте неиспользуемые приложения или вкладки, прежде чем система начнет работать медленно.
- Обновите RAM, если это возможно.
Принимая их не в том порядке, в котором вы просили...
(Примечание: это все еще в процессе. Я, вероятно, настрою и отредактирую это в течение следующих нескольких дней. И я добавлю скриншоты.)
(Обратите внимание на второе: я понимаю, что это долго. Это примерно столько, сколько я могу сделать, хотя бы пытаясь ответить на большинство вопросов, которые обычно возникают из более коротких ответов. Для сравнения, глава "Управление памятью" в Windows Internals около 200 страниц, этого достаточно, чтобы сделать книгу приличного размера сама по себе. Если вы действительно хотите изучить этот материал, есть еще одна книга (которую я рекомендую) под названием " Что делает страницу", которая углубляется в еще больше деталей. 600 страниц. Как я упоминал выше, я, вероятно, буду редактировать это в течение следующих нескольких дней, но не ожидайте, что оно станет короче!)
В использовании
Используется - это объем физической памяти (ОЗУ), который соответствует виртуальным страницам, к которым можно получить доступ, не вызывая ошибки страницы.
Внимание: это не тот объем виртуальной памяти, к которому можно получить доступ, не вызывая ошибки страницы! Это большее число. Многие разные виртуальные страницы могут быть сопоставлены с одной и той же физической страницей.
Предыстория: каждая виртуальная страница может быть либо "действительной", что означает, что она занимает физическую память, и в ее записи таблицы страниц установлен бит "действительный". В противном случае допустимый бит может быть очищен, и в этом случае ссылка на виртуальную страницу приведет к ошибке страницы. Затем ОС должна устранить неисправность. Затем говорят, что страница была "сбита" в ОЗУ. Обычно считается, что это означает "чтение страницы с диска", но часто это не так (подробности позже). Другой термин, который вы услышите, используется для действительной страницы - "резидент".
Основной вклад в использование - это страницы, которые содержат рабочие наборы процессов и ОС, а также невыгружаемый пул (который обычно довольно мал, несколько сотен МБ или около того - я расскажу об этом позже). Рабочий набор процесса - это просто список физических страниц, которые в данный момент являются "резидентными" для этого процесса. Каждый процесс имеет свой собственный рабочий список.
Примечание. Физические страницы ОЗУ могут находиться в нескольких рабочих наборах процесса одновременно. Это означает, что сложение размеров рабочих наборов всех процессов даст вам число, которое больше, чем фактический объем ОЗУ, который они используют. Однако общее количество использованных страниц правильно учитывает общие страницы; то есть он не удваивает или не подсчитывает их.
Предостережение. Термин " Используется" может вводить в заблуждение, поскольку страницы ОЗУ в списках "Резерв" и "Модифицированные", вероятно, также "используются", даже если к ним нельзя получить доступ без ошибок страниц, и они не находятся ни в одном рабочем наборе. Эти два списка будут объяснены чуть позже.
nb: во многих обсуждениях будут затронуты процессы и их рабочие наборы. Код режима ядра ОС Windows и данные также хранятся в виртуальной памяти, и большая их часть доступна для просмотра страниц. То есть он не должен постоянно находиться в оперативной памяти, равно как и код приложения и данные. Хотя это и не сам процесс (несмотря на так называемый "системный" процесс), существует рабочий набор для отслеживания "допустимых" для ОС страниц, или, точнее, для адресного пространства ядра. Фактически, начиная с Windows 7 и более поздних версий, рабочий набор системы был разделен на четыре рабочих набора (для различных типов кодов и данных, доступных для просмотра страниц), в основном по соображениям производительности. Почти все, о чем я говорю относительно рабочих наборов, относится к рабочим наборам ОС, а также к процессам, но я не собираюсь добавлять "или один из рабочих наборов ОС" каждый раз, когда упоминаю рабочий набор процессов,
Имеется в наличии
Вы не спрашивали об этом, но это важно. Доступна вся оперативная память, которая может быть назначена для нового использования (например, процессу, отличному от того, который использовался ранее, или даже новой виртуальной странице в том же процессе), без удаления ее из рабочего набора и без сохранить его содержимое где-нибудь. (Потому что содержимое уже где-то сохранено, если оно важно).
Доступно не отображается на текущей вкладке Производительность диспетчера задач, Панель памяти. Это видно на вкладке Память монитора ресурсов. Это сумма списков ожидания, свободных и нулевых страниц. Подробная информация о них.
Сохраненная копия
Счетчик Cached на вкладке Performance в Диспетчере задач - это сумма следующих трех использований оперативной памяти. Это количество оперативной памяти, а не виртуальной памяти.
Кэшированная часть 1: список резервных страниц (включая SuperFetch)
Это видно на вкладке "Память" "Монитора ресурсов". До Windows Vista это использовалось исключительно как "кеш страниц": страницы оперативной памяти, которые удаляются из рабочих наборов (после ссылки на них возникает ошибка страницы), сначала помещаются в список резервных страниц. Оттуда они могут быть переназначены для другого использования ("перепрофилирование"). Но если исходный процесс ссылается на страницу в SPL до того, как это произойдет, страницу можно восстановить в исходный рабочий набор (то есть ее можно "сделать действительной"), не считывая ее с диска. Таким образом, SPL образует общесистемный кэш "первым пришел - первым вышел", который может скоро понадобиться снова. (В отличие от рабочих наборов, которые предназначены для каждого процесса; страницы отбрасываются из рабочих наборов на основе наименее недавно использованного, а не FIFO.)
Все это все еще применяется. Но в Vista и более поздних версиях некоторые страницы SPL могут быть переназначены для использования SuperFetch. SuperFetch - это упреждающий механизм кэширования файлов, доступный только для чтения, который хранит историю часто используемых файлов и пытается ускорить процесс, считывая такие файлы в оперативную память до того, как их фактически запрашивают.
Умная вещь в SuperFetch состоит в том, что страницы, используемые SuperFetch, не удаляются из списка резервных страниц, и поэтому могут быть переназначены за очень короткое время, как и все остальное в SPL. И они все еще считаются частью Cached. И как часть Доступно. Так что SuperFetch на самом деле не "использует" ОЗУ! Или, по крайней мере, это не убирает из " Доступно ", и не способствует " В использовании ".
SuperFetch по умолчанию отключен в системах с SSD для диска ОС. Список ожидания по-прежнему используется, как описано здесь, в качестве кэша страниц.
Список резервных страниц является частью ОЗУ, которая указана как Доступная, что означает, что любая и все ее страницы могут быть переназначены для чего-либо другого в любой момент - даже те страницы, которые используются SuperFetch. Он не является частью In Use, хотя и используется. Конечно, SuperFetch использует это! Он также используется каждый раз, когда ошибка программной страницы разрешается в SPL. Все, что я здесь говорю, это то, что утверждение, что In Use - это объем используемой оперативной памяти, в лучшем случае вводит в заблуждение. Microsoft должна была выбрать другой термин для использования.
Кэшированная часть 2: измененный список страниц
Начиная с Windows 8 и более поздних версий, счетчик Cached также включает физические страницы, которые находятся в списке измененных страниц. (MPL существует вечно; все, что нового, это считать его частью Cached.) Как и SPL, размер MPL можно увидеть на вкладке "Память" в Resource Monitor, хотя обычно он должен быть очень маленьким или нулевым.
MPL похож на SPL, за исключением того, что он используется для страниц, содержимое которых было изменено, пока они были резидентными. (Это записывается в MMU ЦПУ.) При удалении из своих рабочих наборов такие страницы перемещаются в MPL, а не в SPL. Потоки "Модифицированного средства записи страниц" в процессе "Система" периодически просыпаются, копируют содержимое этих страниц в соответствующие хранилища (либо файл страницы, либо для страниц с файловой поддержкой, их соответствующие файлы), а затем перемещают их в список резервных страниц, когда они становятся частью Доступного и обрабатываются так же, как если бы они были помещены в SPL. Они не были частью Available в MPL, потому что они не могут быть переназначены для чего-то еще, пока их содержимое не будет сохранено где-либо.
MPL также не считается частью использования.
Обратите внимание, что если вы (по глупости и вопреки добрым советам) отключили свой файл подкачки, система никогда не сможет записывать измененные страницы, подкрепленные файлом подкачки. Обычным симптомом здесь является нелепо большой MPL, который может вызвать нехватку доступной оперативной памяти и, следовательно, "перегрузку страниц", когда ОС тратит больше времени на копирование страниц в оперативную память и из нее, чем на выполнение работы, которую вы хотите выполнить.
Функция "Сжатая память" в Windows 10 несколько изменила часть "записи в файл подкачки"; Я не буду вдаваться в подробности, поскольку это не влияет на счетчики, о которых мы говорим.
Кэшированная часть 3: Кэш файловой системы
- ОБНОВЛЕНИЕ: В какой-то момент во многих версиях Windows 10, или, возможно, уже в Windows 8, это больше не является частью кэшированного счетчика диспетчера задач. Но он все еще существует, и счетчик PerfMon, о котором я упоминаю, все еще там и активен. Размер резидентного кэша файловой системы также включен в значение " Используется". Я должен сделать несколько тестов, чтобы точно определить, когда это было изменено.
или, по крайней мере, "резидентная" часть кэша файловой системы. Опять же - "Резидент" означает, что это часть оперативной памяти, находящаяся в оперативной памяти, большего виртуального распределения.
Эй, мы уже не говорили о кеше? "SuperFetch"? Да, но это не тот же кеш, что и SuperFetch. В отличие от SuperFetch, кеш файловой системы является реактивным кешем (никогда не предиктивным - то есть он никогда не кеширует ничего, пока не будет фактически использован, а затем кешируется для будущего быстрого использования (в том же экземпляре ОС).
Файловый кеш также играет важную роль в поддержке доступа к файлам на границах, которые не выровнены по секторам. Если вы открываете файл с опцией "без кэширования", все ваши операции чтения и записи должны быть кратны размеру сектора диска и должны начинаться с границ сектора. Файловый кеш позволяет вам читать и записывать только один байт за раз (по крайней мере, что касается вызовов API).
В более ранних версиях Windows резидентная часть файлового кэша была частью рабочего набора системы, а ее вклад в рабочий набор системы можно найти в счетчике PerfMon. Memory | System Cache Resident Bytes
, Начиная с Windows 7 и более поздних системный рабочий набор был разбит на четыре отдельных рабочих набора, причем файловый кэш занимал один из них, и этот же счетчик по-прежнему отражает его резидентный размер. В любом случае, резидентная часть кэша файловой системы включена в "используется" (потому что это рабочий набор).
- Примечание: "кэшированный" счетчик диспетчера задач не имеет никакого отношения к внутренним кэшам ЦП (L1, L2 и т. д.). Эти кэши, конечно же, существуют, но Windows не управляет ими, и они не отражаются ни в одном из счетчиков управления памятью ОС - ни "общее", ни "используемое", конечно же, не "кэшированное".
Не выгружаемые и выгружаемые бассейны
Счетчики Paged и Nonpaged предоставляют виртуальные размеры двух областей адресного пространства ядра, которые называются "пулы памяти". Оба используются для довольно небольших краткосрочных выделений памяти (обычно не более 1 МБ каждый), которые необходимы различным компонентам кода режима ядра Windows, в том числе драйверам устройств. Код режима ядра использует их способом, очень похожим на тот, который используется прикладными программами, использующими "кучи". (Причина, по которой Windows называет их пулами, а не кучами, является исторической.)
Один из пулов - Nonpaged, то есть он всегда хранится в оперативной памяти. Таким образом, для этого, размер, указанный диспетчером задач, является физическим (RAM) размером, а также виртуальным размером. Не выгружаемый пул используется компонентами, которые могут выполняться в ситуациях, когда сбои страниц не могут быть обработаны, например, процедуры обработки прерываний драйверов устройств, процедуры DPC и другие подпрограммы, которые должны выполняться с IRQL DISPATCH_LEVEL или выше. Я объяснил IRQL в другом ответе здесь.
Другой пул, называемый Paged by Task manager, действительно должен называться "страницей". Как и обычная виртуальная память, используемая процессами, она не обязательно выгружается, просто ее части могут быть. Как и во всех других печатаемых областях, его страницы будут "сброшены" в ОЗУ по требованию - т.е. при обращении к нему, а не в ОЗУ - и, возможно, "выгружены" позже, если физическая память заканчивается, а новые сбои страниц должны быть устранены.
Диспетчер задач размера для пула с возможностью просмотра страниц - это виртуальный размер. Подмножество этого будет "действительным", то есть в оперативной памяти (то есть в физическом размере). Диспетчер задач не сообщает о размере части оперативного (выгружаемого) пула в выгружаемом пуле, но его можно увидеть в инструменте Process Explorer (Просмотр | Информация о системе) в SysInternals или в счетчике PerfMon. Memory | Pool Paged Resident Bytes
,
Весь "невыгружаемый" пул и "выгружаемая" или "резидентная" часть выгружаемого пула являются частью того, что считается "используемым".
Для получения дополнительной информации о пулах памяти ядра см. Документацию по интерфейсу ядра. ExAllocatePool
,
Внимание: Nonpaged не является подстраницей Paged! Это отдельные виртуальные распределения. Таким образом, вполне возможно, например, что невыгружаемый пул будет отображаться с большим размером, чем выгружаемый, но не часто.
Внимание: ни в коем случае это не общий объем виртуального адресного пространства ядра.
Совершенные
Фиксированные счетчики относятся к конкретному типу виртуальной памяти. Чтобы действительно объяснить это, я должен объяснить другие типы.
Каждая страница виртуального адресного пространства может находиться в одном из пяти состояний: неиспользовано, не доступно для страницы, сопоставлено, зарезервировано и зафиксировано.
"Nonpageable", "Committed" и "mapped" виртуальные адресные пространства соответствуют виртуальной памяти и могут быть успешно доступны (прочитаны или записаны), возможно, с ошибкой страницы на этом пути; "Неиспользованные" и "зарезервированные" не могут быть доступны.
(Это сообщение об ошибке, которое вы иногда видите - "Инструкция в 0x(некоторый адрес) ссылается на память в 0x(некоторый адрес), память не может быть прочитана" (или "записана")? Это то, что происходит, если код в вашей системе пытается получить доступ к "неиспользуемому" или "зарезервированному" адресному пространству. Или если предпринята попытка записи на страницу только для чтения или получить доступ к виртуальному адресу, защищенному ядром, из пользовательского режима. nb: указанный адрес является виртуальным, а не физическим, и сообщение не означает, что у вас есть проблемы с вашей оперативной памятью. Это ошибка в программе.)
"Неразмещаемая" виртуальная память всегда физически "резидентна" и является почти исключительно областью кода режима ядра Windows. Это часть "в использовании". Уже обсужденный пул невыгружаемых страниц является примером нестраничной виртуальной памяти.
Предостережение. Несмотря на то, что виртуальная память без страниц всегда является резидентной, мы по-прежнему считаем ее "виртуальной", поскольку мы по-прежнему ссылаемся на нее по виртуальным адресам. Он также имеет все другие свойства виртуальной памяти, за исключением того, что он всегда "действителен", поэтому никогда не вызовет ошибку страницы при доступе.
"Сопоставленное" виртуальное адресное пространство можно переносить на / с диска. Его "резервное хранилище" - причудливое название для того, где его части хранятся, если их нельзя все одновременно хранить в ОЗУ - это файлы, которые были предоставлены при создании каждой сопоставленной области. (Соответствующие API здесь CreateFileMapping
а также MapViewOfFile
.) Содержимое отображаемых областей фактически начинается в этих файлах; он считывается в оперативную память по мере доступа ("пейджинг по требованию").
Кстати, отображаемая память исключительно распространена - в отображаемых областях живет весь исполняемый код. Он также очень часто используется для доступа к большим файлам, в отличие от традиционного доступа для чтения / записи.
Сопоставленные регионы могут быть общими для всех процессов. Если сопоставление настроено для доступа на чтение / запись (обычно это не делается для файлов кода!), То изменения в сопоставленном vas записываются обратно в соответствующие сопоставленные файлы.
Тем не менее, существует возможность создания "отображаемой области на основе файла подкачки", которая может быть общей для процессов, как и любая другая отображаемая область, но изменения в которой не будут сохранены где-либо после того, как все процессы отобразят ее.
"Зафиксированное" виртуальное адресное пространство также можно переносить на / с диска. Разница между этим и "mapped" заключается в том, что резервным хранилищем "Committed" vas, если это необходимо, является файл подкачки (если он у вас есть, что вам, безусловно, следует).
"Зафиксированный", как и "сопоставленный", разбит на страницы по требованию, но при первом обращении к странице выделенной памяти нет чтения с диска - потому что, в отличие от отображенной памяти, нет места для чтения исходного содержимого. Новая физическая страница просто выделяется процессу (из ранее доступной оперативной памяти, обычно списка нулевых страниц) и становится действительной в рабочем наборе процесса. Таким образом, страница выделенной памяти не занимает места в памяти до тех пор, пока на нее не ссылаются в первый раз.
Поскольку зарезервированная память является постраничной (даже если у вас нет файла подкачки, но он действительно должен быть), не все из них, вероятно, будут одновременно находиться в оперативной памяти - "резидентной". Как обычно, ОС старается сохранить самые последние страницы VAS в оперативной памяти; если доступной оперативной памяти недостаточно, ОС "выкладывает" другие страницы, удаляя их из рабочих наборов и помещая их в SPL или MPL. В последнем случае они скоро пишутся в их резервное хранилище.
Общий размер "commit" (т. Е. С поддержкой файла подкачки, или он был бы, если бы у вас был файл подкачки, что вам определенно необходимо) во всех процессах плюс ядро ОС - это первое число под словом Committed.
Он также включает несколько других вкладов: в основном невыгружаемые и выгружаемые пулы и любые сопоставленные области, которые сопоставляются при копировании и записи. Этот номер часто называют фиксацией.
Один из способов оценки загрузки за коммит: если у вас есть файл подкачки (который вам нужен), и все содержимое страницы, доступное для хранения (зафектировано, выгружаемый пул и т. Д.), За исключением отображаемой памяти, должно быть выгружено из ОЗУ - это сколько места в файле подкачки потребуется.
Второе число под словом " Committed" - это "limit commit". Это размер оперативной памяти плюс текущий общий размер файла (ов) файла подкачки. Стоимость коммита не может быть больше, чем это. Если процесс пытается зафиксировать виртуальную память такого размера, который превысил бы предел фиксации, то, если это возможно, Windows увеличит файл подкачки, чтобы освободить место (и вы увидите всплывающее окно "недостаточно памяти"). Если увеличение файла подкачки невозможно, в сообщении будет указано "недостаточно памяти", и процесс, который это сделал, завершится сбоем.
Резидентное подмножество платы за коммит является частью "в использовании". Обратите внимание, что даже если у вас нет файла подкачки (и если у вас его нет, что с вами не так?), Это не обязательно то же самое, что плата за коммит. С одной стороны, если вы фиксируете виртуальную память, но не получаете к ней доступ, части, к которым у вас нет доступа, никогда не будут занимать места в хранилище. Также возможно, что выделенная память будет удалена из рабочего набора и помещена в измененный список страниц. Обычно только часть выделенной памяти будет занимать оперативную память.
Диспетчер задач не может определить подмножество выделенной памяти в ОЗУ. Однако инструмент SysInternals "RAMmap" может показать это.
Добавление всего этого
Доступно + В использовании + Модифицированные складываются в общий объем оперативной памяти, используемой ОС.
общий объем оперативной памяти, используемой операционной системой, плюс объем ОЗУ с аппаратным резервированием должен равняться общему объему установленной оперативной памяти.
Доступно равно списку резервных страниц, а также списку бесплатных страниц и списку нулевых страниц.
Свободный, отображаемый на вкладке Память монитора ресурсов, представляет собой сумму списка нулевых страниц и списка свободных страниц.
(Я намеренно пропустил дальнейшее обсуждение списка нулевых страниц, потому что это не важно для счетчиков, о которых спрашивают.)
Cached = Резервный список страниц (некоторые из которых используются SuperFetch), плюс (для Windows 8 и более поздних версий) Модифицированный список страниц, плюс (для более ранних версий Windows, которые еще предстоит точно определить) вставленная или резидентная часть системный файловый кеш.
Предостережение: поскольку список страниц в режиме ожидания является частью как "Доступно", так и "Кэшировано", вполне возможно добавить "Доступно" и "Кэшировано" и получить общее количество, превышающее общий объем ОЗУ! Эти цифры просто не предназначены для сложения.
Вкладка "Память" в Resource Monitor отображает сумму свободных и нулевых значений в виде единого числа, помеченного как "Свободный" Монитор производительности может показать вам эти размеры индивидуально.
Достаточно ли у меня оперативной памяти?
"Насколько я знаю, ядро управляет памятью сложным образом, поэтому могу ли я сделать вывод, что, если у меня в оперативной памяти моего ноутбука свободная память, значит, моей памяти достаточно?"
Лучший показатель для "достаточно ли у меня оперативной памяти?" обычно это уровень ошибок вашей жесткой страницы. Жесткие сбои страниц - это сбои страниц, которые требуют чтения с диска. Это можно увидеть на графиках в правом столбце монитора ресурсов (вкладки "Обзор" и "Память") или для каждого процесса на вкладке Память. Счетчик PerfMon Memory | Page Reads/sec
также показывает это.
Общая частота отказов является расширенной частью жестких отказов и не столь интересна. Он включает в себя "программные ошибки страниц", которые не требуют чтения с диска и поэтому занимают намного меньше времени. (Трудно сказать, сколько времени они занимают, но я бы оценил его как максимум в несколько сотен инструкций.) К ним относятся ошибки, разрешенные в резервных и измененных списках страниц, ошибки в общих страницах, которые уже существуют для один или несколько других процессов, и "требуют нуля" сбои, которые происходят при первой ссылке на частные страницы. Не удивляйтесь, если вы увидите тысячи ошибок страниц в секунду. Эта страница, считываемая с диска, сильно замедляет работу (даже если ваш диск SSD).
Но как насчет "Доступно"? или "бесплатно"?
Многие люди беспокоятся об объеме "доступной" памяти или "свободной" памяти. Во-первых, это довольно распространенная ситуация для системы Windows, в которой не так много процессов в течение длительного времени выходили из-за отсутствия свободной памяти или почти ее отсутствия. Это ожидается, поскольку единственное событие, которое обычно возвращает память в состояние "Свободно", - это когда процесс завершается; физические страницы, которые были действительны для его "зафиксированной" памяти, затем перемещаются в "свободный" список.
"Доступен" включает в себя список "Ожидание" и так же готов к назначению для нового использования, как и "Свободный", поэтому, если у вас много "Доступных", вам не нужно больше беспокоиться о том, что он не "Свободный".
Даже для "Доступно" главное преимущество наличия большого количества доступной памяти - поддержка быстрого запуска новых программ или нового поведения в уже запущенных программах. В такие моменты вы увидите шквал жестких сбоев страниц - это совершенно нормально, действительно, неизбежно. Если ваша рабочая нагрузка этого не делает, ваша система может быть довольна меньшим процентом доступной оперативной памяти.
И снова я упомяну: SSD заставляет проблемы с жесткими страницами идти намного быстрее, чем если бы они шли на вращающийся диск. И они пойдут быстрее, если это SSD M.2 PCIe. Они все еще намного медленнее, чем мягкие неисправности.
Еще одна вещь: вы часто будете слышать утверждение, что "у вас никогда не будет достаточно оперативной памяти". Что ж, это правда, что (за исключением некоторых необычных обстоятельств) добавление ОЗУ в вашу систему никогда не вызовет проблем с производительностью. Однако вы наверняка можете потратить слишком много денег на оперативную память. Существует точка уменьшения отдачи, после которой добавление ОЗУ не ускорит вашу систему. Где этот момент зависит от вашей рабочей нагрузки и от различных аспектов вашего оборудования (особенно от того, есть ли у вас SSD или вращающийся диск). Как я уже сказал выше, избавление от вашего файла подкачки не устраняет подкачку на диск и с диска, потому что сопоставленные файлы все еще существуют и все еще читаются и записываются с помощью подкачки. Таким образом, избавление от вашего файла подкачки (что вы не должны делать в любом случае) не означает, что вы можете перестать беспокоиться о том, насколько быстро работает ваш диск.
Вопрос 1:
Что такое выделенная память, кэшированный, выгружаемый, невыгружаемый пул и чем они отличаются от используемой памяти.
Запоминание памяти: Запоминание памяти - это все виды памяти, выделенные для использования. Это включает как физическую память, так и виртуальную (подкачка). Зафиксированная память против доступной памяти
Кэшируемая память: память обычно встроена в процессор. Доступ к этой памяти намного быстрее, так как она настолько близка, насколько вы можете добраться до процессора, который ее использует.
Страничная память: страничная память - это виртуальная память, то есть физически не подключенная к системе. Когда система определит, что ей нужно больше памяти, чем той, которая доступна, она создаст виртуальную память, которая на самом деле является просто местом для хранения на жестком диске. Этот тип памяти намного медленнее, поскольку зависит от скорости чтения / записи жесткого диска.
Не постраничный: просто противоположность постраничной памяти. Это означает, что это будет общее количество памяти, исключая количество в памяти с подкачкой.
Вопрос 2:
Насколько я знаю, ядро управляет памятью сложным образом, поэтому могу ли я сделать вывод, что, если у меня в оперативной памяти моего ноутбука свободная память, значит, моей памяти достаточно?
Как правило, хорошо убедиться, что у вас достаточно физической памяти для выполнения самой интенсивной задачи, для которой вы будете использовать свой компьютер. Как объяснялось выше, память подкачки технически выполнит работу, но будет намного медленнее физической памяти. Я хотел бы предложить вам отслеживать уровни памяти, открывать и запускать наиболее интенсивные настройки, которые, по вашему мнению, вы когда-либо реально выполняли, и видеть, сколько памяти используется.