Память частный рабочий набор что это
Перейти к содержимому

Память частный рабочий набор что это

  • автор:

Рабочий набор процессов

Рабочий набор программы — это коллекция этих страниц в виртуальном адресном пространстве, на которые недавно ссылались. Он включает как общие, так и частные данные. Общие данные включают страницы, содержащие все инструкции, выполняемые приложением, в том числе в библиотеках DLL и системных библиотеках DLL. По мере увеличения размера рабочего набора потребность в памяти увеличивается.

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

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

Система задает размеры рабочих наборов по умолчанию. Можно также изменить размеры рабочих наборов с помощью функции SetProcessWorkingSetSize . Установка этих значений не гарантирует, что память будет зарезервирована или резидентна. Будьте внимательны при запросе слишком большого размера минимального или максимального рабочего набора, так как это может снизить производительность системы.

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

Рабочий набор

Рабочий набор процесса — это набор страниц в виртуальном адресном пространстве процесса, которые в настоящее время находятся в физической памяти. Рабочий набор содержит только страничные выделения памяти; В рабочий набор не включаются ресурсы памяти, не допускающие перекачки, такие как расширения адресных окон (AWE) или большие страницы .

Если процесс ссылается на страницу памяти, которая в настоящее время не входит в рабочий набор, происходит ошибка страницы . Обработчик ошибки системной страницы пытается устранить ошибку страницы, и в случае успеха страница добавляется в рабочий набор. (Доступ к AWE или выделению больших страниц никогда не приводит к ошибке страницы, так как эти выделения не являются страничными.)

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

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

Страницы можно удалить из рабочего набора процесса в результате следующих действий:

  • Процесс уменьшает или очищает рабочий набор, вызывая функцию SetProcessWorkingSetSize, SetProcessWorkingSetSizeEx или EmptyWorkingSet .
  • Процесс вызывает функцию VirtualUnlock в не заблокированном диапазоне памяти.
  • Процесс отменяет сопоставление сопоставленного представления файла с помощью функции UnmapViewOfFile .
  • Диспетчер памяти обрезает страницы из рабочего набора, чтобы создать больше доступной памяти.
  • Диспетчер памяти должен удалить страницу из рабочего набора, чтобы освободить место для новой страницы (например, потому, что рабочий набор имеет максимальный размер).

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

Каждый процесс имеет минимальный и максимальный размер рабочего набора, который влияет на поведение процесса подкачки виртуальной памяти. Чтобы получить текущий размер рабочего набора указанного процесса, используйте функцию GetProcessMemoryInfo . Чтобы получить или изменить минимальный и максимальный размер рабочего набора, используйте функции GetProcessWorkingSetSizeEx и SetProcessWorkingSetSizeEx .

Интерфейс PSAPI для состояния процесса предоставляет ряд функций, возвращающих подробные сведения о рабочем наборе процесса. Дополнительные сведения см. в разделе Сведения о рабочем наборе.

Sysadminium

Изучая память процессов в системе Windows вы обязательно столкнётесь с таким понятием как рабочий набор процесса. В этой статье разберём что это такое.

Оглавление скрыть

Рабочий набор

Рабочий набор — это виртуальные страницы памяти в которых процесс хранит необходимые ему данные.

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

А если свободная память (free) окажется ниже порогового значения, то страницы изымаются из рабочих наборов. Такие страницы могут быть помещены с кэш. То есть они все равно останутся в оперативной памяти. При обращении к таким страницам, процесс получит ошибку page fault и страница вернется из кэша.

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

Наблюдение за рабочим набором процесса

Наблюдать за рабочим набором процесса будем с помощью «Системного монитора«.

  1. Находим оснастку «Системный монитор«:

Пуск / Системный монитор

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

Системный монитор / Удаление счетчиков

  1. И добавляем новый счетчик производительности:
    • Находим группу счетчиков «Процесс«, в ней находим процесс (я посмотрю за процессом Chrome).
    • Выбираем счетчики: «Ошибок страниц/с«, «Рабочий набор» и его пик.
    • Нажимаем кнопку «Добавить» и «OK«

Системный монитор / Добавление счетчиков

  1. Переключаем внешний вид на «Отчет».

Системный монитор / Настройка внешнего вида

  1. Смотрим данные:
    • Рабочий набор — это объем страниц в памяти для данного процесса в байтах.
    • Рабочий набор (пик) — это максимальный объем страниц, который был в памяти для данного процесса за все время работы процесса.
    • Ошибок страницы/с — это частота ошибок, когда поток не находит нужную страницу в памяти и её необходимо подгружать.

Системный монитор / Просмотр информации

Сумма рабочих процессов не равна используемой памяти

Суммарный объем всех рабочих наборов процессов не равен всей используемой оперативной памяти. Если помните, в системе присутствует общая память. Страницы от туда могут быть замаплены к разным процессам. Про это было написано тут. А каждый процесс думает что эта страница относится к его рабочему набору. Другими словами, одна общая страница будет считаться несколько раз для каждого процесса.

Что расходует оперативную память — как узнать?

Что расходует оперативную память - как узнать?

Хотя объем оперативной памяти не является определяющим в производительности системы во всех случаях, как это может показаться на первый взгляд, его значение трудно переоценить. Недостаток ОЗУ может вызвать замедлении работы программ, а в некоторых случаях и их принудительное завершение. В таких случаях бывает полезно знать, на что именно тратятся драгоценные ресурсы памяти, поскольку на основе полученных данных можно будет принимать решение об оптимизации системы. Определить, какие процессы расходуют ОЗУ не представляет большой сложности, сделать это можно как средствами самой Windows, так и средствами сторонних утилит.

↑ Как узнать, что расходует оперативную память

↑ Диспетчер задач

Получить общие представления о распределении оперативной памяти можно с помощью Диспетчера задач. Здесь на вкладке «Процессы» в колонке «Память» можно видеть, сколько памяти в килобайтах такие-то процессы используют в данный момент времени. Аналогичные сведения в столбце «Память (Частный рабочий набор)» отображаются на вкладке «Подробно». При необходимости вы можете отсортировать процессы по объему потребляемых ими ресурсов, кликнув по заголовку столбца. Как видно из приложенного ниже скриншота, главным потребителем ОЗУ в нашем примере является процесс браузера Google Chrome. Примечание: выбрав в контекстном меню процесса опцию «Перейти к службам», можно увидеть службы, в этот процесс загруженные.

Общие сведения о распределении памяти доступны на вкладке «Производительность» в подразделе «Память». Особенный интерес представляет собой блок данных структуры памяти, его значения стоят того, чтобы рассмотреть их чуть более подробно. • Используется —RAM, используемая в настоящее время. • Доступно — объем памяти, доступной для использования Windows, драйверами, процессами и драйверами. • Выделено значение, представленное двумя числами — суммой оперативной памяти и памяти файла подкачки. • Кэшировано — объем памяти, выделяемый под хранение данных, которые могут понадобиться в будущем. На графике «Структура памяти» кэшированная память обозначается как «Зарезервировано». • Выгружаемый и не выгружаемый пулы — ресурсы RAM, используемые исключительно ядром Windows. выгружаемый пул отличается от невыгружаемого тем, что первый может быть записан в файл подкачки.

↑ Монитор ресурсов

Немногим больше сведений об использовании памяти конкретными процессами может дать оснастка «Монитор ресурсов», открыть которую можно из вкладки «Производительность» Диспетчера задач или командой resmon в окошке «Выполнить». Помимо цветного графика распределения памяти, в целом дублирующего блок структуры памяти в Диспетчере задач, Монитор ресурсов на вкладке «Память» отображает список запущенных процессов с изменяющимися в режиме реального времени значениями. Рассмотрим вкратце относящиеся к расходу ОЗУ. • Завершено — в колонке отображается максимальный объем файла подкачки, который был использован процессом за все время открытой им сессии. • Рабочий набор — объем ОЗУ, используемый процессом в настоящий момент времени. В этот объем включается также зарезервированная память. • Общий набор — это объем памяти, который может быть забран у текущего процесса для некоего другого процесса, если последний в порядке приоритета станет нуждаться в ресурсах. • Частный набор — это используемая процессом память, которая не может быть высвобождена и передана другим процессам.

↑ RAMMap

Если вы хотите анализировать распределение оперативной памяти на профессиональном уровне, вам понадобиться что-то более функциональное, чем Монитор ресурсов и Диспетчер задач. Например, утилита RAMMap, разработанную сотрудниками Microsoft Марком Руссиновичем и Брайсом Когсвеллом. Описать все ее возможности в рамках одной статьи средней длины не представляется возможным, впрочем, рядовому пользователю вполне будет достаточно знать лишь о некоторых аспектах работы с этим инструментом. Наибольший интерес в RAMMap представляют вкладки «Use Counts», «Processes» и «File Details». Первая содержит цветной график, в котором каждый цвет соответствует определенному типу памяти. Рассмотрим некоторые наиболее интересные значения. • Process Private — память, отведенная под исключительно отдельные процессы. • Mapped File — область памяти системного файлового кэша. • Shareble — используемая процессами память, которая может быть освобождена для других процессов. • Paged Pool и Nonpaged Pool — ОЗУ, отведенная исключительно под процессы ядра. Первый ее тип может быть записан в дисковый кэш, второй не может. • Session Private — часть памяти, используемая некоторыми системными драйверами. • Metafile — память, отведенная под ту часть системного кэша, который хранит метаданные NTFS и MFT. • Unused — свободная, неиспользуемая в данный момент RAM. • Total — общий размер ОЗУ, доступный для использования в вашей системе. Если содержимое вкладки «Use Counts» дает общее представление о типах используемых страниц памяти и отведенном под них объема ресурсов, то на вкладке «Processes» можно посмотреть, сколько памяти отводится под каждый конкретный процесс. Наконец, вкладка «File Details» отображает список файлов, отнесенных системой в память. Это могут быть не только исполняемые файлы, но и всякие другие файлы, используемые программами и операционной системой. Столбец «Size» на вкладке показывает не объем ОЗУ, а физический размер файла на жестком диске. В отличие от Диспетчера задач и Монитора ресурсов, RAMMap не позволяет управлять процессами, она служит для получения подробных сведений о распределении ресурсов памяти, впрочем, кое-что утилита всё же умеет. Так, если вы перейдете в меню «Empty», то найдете в нём несколько опций очистки страниц оперативной памяти, зарезервированной, но неиспользуемой в данный момент запущенными процессами.

tagsКлючевые слова

Рекомендуем другие статьи по данной теме

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *