Изучая память процессов в системе Windows вы обязательно столкнётесь с таким понятием как рабочий набор процесса. В этой статье разберём что это такое.
Рабочий набор
Рабочий набор — это виртуальные страницы памяти в которых процесс хранит необходимые ему данные.
Если объем свободной памяти компьютера превышает пороговое значение, страницы остаются в рабочем наборе даже если они не используются.
А если свободная память (free) окажется ниже порогового значения, то страницы изымаются из рабочих наборов. Такие страницы могут быть помещены с кэш. То есть они все равно останутся в оперативной памяти. При обращении к таким страницам, процесс получит ошибку page fault и страница вернется из кэша.
Если возрастет нагрузка на оперативную память, то данные могут быть выгружены в файл подкачки. При этом возврат данных из подкачки займет большее времени чем возврат страниц из кэша.
Наблюдение за рабочим набором процесса
Наблюдать за рабочим набором процесса будем с помощью «Системного монитора«.
- Находим оснастку «Системный монитор«:
- Удаляем счетчик производительности, который был по умолчанию:
- И добавляем новый счетчик производительности:
- Находим группу счетчиков «Процесс«, в ней находим процесс (я посмотрю за процессом Chrome).
- Выбираем счетчики: «Ошибок страниц/с«, «Рабочий набор» и его пик.
- Нажимаем кнопку «Добавить» и «OK«
- Переключаем внешний вид на «Отчет».
- Смотрим данные:
- Рабочий набор — это объем страниц в памяти для данного процесса в байтах.
- Рабочий набор (пик) — это максимальный объем страниц, который был в памяти для данного процесса за все время работы процесса.
- Ошибок страницы/с — это частота ошибок, когда поток не находит нужную страницу в памяти и её необходимо подгружать.
Сумма рабочих процессов не равна используемой памяти
Суммарный объем всех рабочих наборов процессов не равен всей используемой оперативной памяти. Если помните, в системе присутствует общая память. Страницы от туда могут быть замаплены к разным процессам. Про это было написано тут. А каждый процесс думает что эта страница относится к его рабочему набору. Другими словами, одна общая страница будет считаться несколько раз для каждого процесса.