Выявление узких мест, связанных с работой памяти

Подкачка страниц (paging)

Дата и код в памяти разделены на страницы. На Intel компьютерах page = 4096 bytes. Каждая страница памяти хратится в страничном фрейме (page frame)

Подкачка страниц (paging) – это процесс перемещения страниц между физической и виртуальной памятью.

Чрезмерное перемещение страниц с диска в RAM и наоборот может очень сильно загрузить процессор. Эти проблемы легко могут выглядеть как проблемы с процессором или с диском.

Virtual Memory System

Комбинация из физической памяти (RAM), кэша файловой системы и виртуальной памяти на диске (pagefile.sys) называется Memory Subsystem.

Код и данные в RAM, которые не используются активно сбрасываются в виртуальную память на диск. Если на компьютере не хватает RAM, то обмен с виртуальной памятью происходит чаще, что сильно замедляет работу компьютера.

Вся память делится на зарезервированную, запомненную и свободную

  • Зарезервированная память (reserved memory): набор непрерывных адресов, которые Диспетчер виртуальной памяти (VMM) выделяет для процесса, но не учитывает в общей квоте памяти процесса др тех пор, пока она не будет фактически использована. Когда процессу необходимо произвести запись в память, ему выделяется нужный объем из зарезервированной памяти.
  • Выделенная память (committed memory): память, зарезервированная в файле pagefile.sys, на случай, когда потребуется выгрузить содержимое памяти на диск. Объем выделенной памяти процесса характеризует фактически потребляемый им объем памяти. Объем выделенной памяти ограничен размером файла подкачки. Предельный объем выделенной памяти в системе (commit limit) определяется тем, какой объем памяти можно выделить процессам без увеличения размеров файла подкачки.
  • Available Memory (свободная): память не являющаяся ни зарезервированной ни запомненной.

Пулы памяти (memory pools)

Объекты, создаваемые и используемые приложениями и операционной системой, хранятся в так называемых пулах памяти.

  • Перемещаемый или нерезидентный пул (paged pool) содержит объекты, которые можно при необходимости выгрузить на диск– это виртуальная память.
  • Неперемещаемый или резидентный пул (non-paged pool) - данные или код, которые должны остаться в памяти и не могут быть записаны или восстанавлены с диска.

Рабочий набор (working set) - это физическая память (RAM) видимая процессом или программой.

Ошибки страниц (page faults)

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

  • Программные прерывания (soft page fault) – это когда программа запрашивает страницу, которая находится в памяти, но вне рабочего набора. В этом случае не требуется восстановление страницы с диска.
  • Аппаратные прерываеия (hard page fault) – это когда программа запрашивает страницу, которая не содержится в физической памяти (RAM) и подлежит восстановлению с диска. Сбои страниц такого типа лучше всего показывают наличие узких мест в конфигурации памяти. Более 5 сбоев в секунду говорят о необходимости добавления RAM.

Счетчики для объекта Память

Page Faults/sec: Показывает насколько часто данные не находятся в рабочем наборе. Включает случаи аппаратных и программных прерываний
Page Inputs/sec: Показыает количество страниц восстанавленных с диска за секунду для обработки прерываний page fault. Сравнение с Page Faults/sec дает количество программных прерываний типа page fault.
Page Outputs/sec: Сколько страниц записывались на диск для освобождения RAM по запросу прерывания page fault.
Pages/sec: Общее количество страниц восстановленных с диска и записанных на диск.

Сумма Page Outputs/sec и Page Inputs/sec.

Сравнение с Page Faults/sec дает представление о количестве мягких и жестких сбоев страниц.

Допустимое среднее значение: 0 - 20 Pages/sec

Pages Reades/sec Показывает сколько раз в секунду система осуществляет чтение с диска по прерыванию page fault.
Pages Writes/sec Показывает сколько раз в секунду система осуществляет запись на диск по прерыванию page fault.
Available Bytes: Количество байт в физической памяти (RAM), свободных для всех программ и процессов.

Обычно низок, так как NT Disk Cache Manager использует свободную RAM для кэширования файловой системы и возвращает ее по требованию процесса или программы

Менее 4MB свободной памяти показывает наличие чрезмерного пистания страниц.

Committed Bytes: Общее количество выделенной памяти для всех процессов.

Показывает фактический объем памяти, используемый системой. Может быть больше размера RAM.

Превышение значением счетчика размера RAM показывает наличие узкого места.

Pool Non-paged Bytes Общее количество байт памяти в резидентном пуле. Эта память используется операционной системой для внутренних нужд.

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