Как работать с RAMMap ?

Программа RAMMap представляет собой утилиту, которая позволяет увидеть как Windows действительно распределяет оперативную память. Благодаря программе на оперативную память компьютера можно взглянуть как не на абстрактную сущность, а действительно составить представление о том, для чего и какими файлами она используется. Работает в версиях от Windows Vista и позднее.

Наиболее интересными для рядового пользователя, наверное, окажутся лишь некоторые из вкладок. Это Use Counts и File Details. Однако для полноты понимания как программа работает, от пользователя требуется понимание работы RAM в принципе.

Скачать программу с сайта производителя

Теоретические абзацы

Все процессы пользовательского режима и большинство процессов от имени ядра получают доступ к данным через адреса виртуальной памяти. Эти данные и исполняемый код могут находиться как в ячейках физической памяти планок RAM, так и в файле подкачки жёсткого диска, но все они объединены одним условием – в момент запуска система приклеивает их к рабочему набору конкретного процесса, который в данный момент чем-то занимается (то есть читает, записывает и выполняет). И утилита RAMMap подходит к памяти как к общесистемному источнику памяти, который распределяется между запущенными в Windows процессами.

Интерфейс RAMMap

Окно программы представляет из себя интерфейс, напоминающий чем-то Диспетчер задач Windows NT, и включает в себя вкладки (во время работы обновляем состояние позиций клавишей  F5):

  • Use counts (постраничная разбивка памяти)
  • Processes (размеры рабочих наборов памяти)
  • Priority summary (размеры памяти для процессов, ранжируемых по приоритету)
  • Physical pages (объём затрачиваемой памяти на страницу)
  • Physical Ranges (адреса физической памяти)
  • File summary (данные файлов в RAM поимённо)
  • File Details (данные памяти для конкретных физических страниц поимённо)

Посмотрим на каждую из вкладок RAMMap внимательнее.

Use counts

вкладка use counts rammap

  • Total – (самый нижний) – общий размер RAM “полагающийся” Windows; этот размер совпадает с тем, что вы видите в Свойствах системы как размер установленной ОЗУ
  • Process Private – часть оперативной памяти, используемая исключительно отдельным процессом
  • Mapped File – нанесённые на карту памяти отпечатки файлов, сохраняемые в виртуальную её часть. Это может быть и сам процесс нанесения снимков файлов (запись или чтение) или для кэша системных файлов
  • Shareble – страницы памяти, которые могут использоваться сразу несколькими процессами
  • Page Table – содержит в себе элементы таблицы страниц, которые описывают использование виртуального адреса
  • Paged Pool – объединённая часть памяти ядра, которая может быть сохранена на диск
  • Nonpaged Pool – часть памяти ядра, которую на диск нанести нельзя и которая должна оставаться в физической памяти всегда
  • System PTE – элементы таблицы страниц позволяют наносить виртуальные адреса памяти в области физической памяти. Системные (System) элементы – это область памяти, используемая для динамической прорисовки системных страниц (диапазон адресов памяти для подключения устройств ввода-вывода, стеков ядра и прорисовки списков дескриптора памяти).
  • Session Private – часть памяти, которая видима только конкретными драйверами или устройствами в текущей сессии. Эту часть памяти забирает себе  Win32k.sys или системные драйверы (мышка, клавиатура, видео).
  • Metafile – это часть системного кэша, состоящая из метаданных NTFS. Метаданные NTFS включают в себя MFT, а также другие файлы метаданных. Учитывая, что в базе MFT есть запись о каждом атрибуте, а каждый файл имеет как минимум один атрибут, и затем приплюсовать сюда остальные метаданные NTFS, можно составить представление о том, до каких размеров MFT может разрастись при большом количестве файлов в Windows.
  • AWE – часть памяти, используемая интерфейсом AWE, который позволяет программам использовать физическую память с выходом за пределы 4-Гбайт виртуального адресного пространства.
  • Driver Locked – это страницы, которые на некоторое время могут заблокированы в физической памяти определённым драйвером. Речь идёт опять же об устройствах ввода-вывода или целых логических дисках.
  • Kernel Stack – память, закреплённая за областями оперативной памяти для потоков системного ядра.
  • Unused – размер памяти, которая сейчас не используется. Она также видна в списках Zeroed, Free и Bad.
  • Large Page – память, отведённая для поддержки страниц памяти большого объёма. Такая поддержка обеспечивает более эффективный доступ для программ, требующих соответствующих запросов к установленной в Windows памяти.

Посмотрим на столбцы вкладки Use Counts



  • Total – общий размер памяти для группы страниц
  • Active – (активные страницы) размер памяти, уже использующейся или готовой для немедленного использования без опасения за то, что возможно появление ошибки. Он составляется из того набора памяти, который уже находится в рабочем наборе одного или нескольких процессов или в одном из системных рабочих наборов (системный кэш), а также той части главной памяти (main memory), которую нельзя выделять под страницы виртуальной памяти.
  • Standby (страницы ожидания) – страницы памяти, которая сейчас не используется. Они в физической памяти “присутствуют”, но перед тем, как к ним обратятся, менеджер памяти сначала их перенаправит (вернёт в список Active, запишет в нулевую память Zeroed). По сути, это и есть кэш памяти – тот объём памяти, что хранится в RAM “на всякий пожарный”; лучше, чем выгружать всю память на диск полностью, когда она в полном объёме не требуется
  • Modified – память, перенесённая из рабочего набора страниц и изменённая вовремя работы. Схожа с предыдущими страницами, но это страницы физической памяти, которые были скорректированы и потому перед повторным использованием должны быть сначала записаны на диск
  • Modified no write – те же страницы изменённой в процессе работы памяти, но помеченные как “запрещённые к автоматической записи” на  диск
  • Transition – временное состояние страницы памяти, которая заблокирована в памяти в данный момент неким драйвером
  • Zeroed – память, помеченная как пустая и готовая к перемещению. Во время загрузки величина в этом столбце примечательная, однако когда система “устаканится”, большая часть страниц отсюда перебежит куда-то в сторону Standby в виде кэша
  • Free – свободные страницы пригодны к использованию, однако содержат в себе некие остаточные данные и потому, перед тем как попасть к пользователю, должны быть помечены как нулевые (Zeroed) в целях безопасности.  Обычно это та часть памяти, которая высвобождается после остановки какой-то задачи.
  • Bad – эти страницы помечены как дефектные, так как вызвали ошибки в работе оборудования.

Processes

Вкладка содержит анализ страниц физической памяти, которые ассоциируются с  конкретным процессом. Здесь мы можем увидеть номер сессии процесса в текущем сеансе (Session), присвоенный процессу номер (PID). Остальные столбцы вдоль каждого процесса показывают какую часть RAM, выделяемого для этого процесса, занимают страницы пользователя или/и системы: по показаниям в этой вкладке можно судить о том, от чьего имени процесс запущен, не “кривит” ли память. Столбец Page Table показывает общее количество памяти, выделяемой ядром этому процессу. Total суммирует показания по столбцам с Private по Page Table (именно показатель Total и отображается в Windows-ском Диспетчере задач). Однако Диспетчер в окне по умолчанию суммирует всё, что запущено от имени одной службы/программы. Надо лишь развернуть характерный столбец:

диспетчер задач windows и rammap

Priority Summary

Вкладка отображает объёмы памяти, выделяемые/выделяемых на процессы по присвоенному системой приоритету с момента включения компьютера. Самая интересная здесь вкладка –  Repurposed. Она показывает, сколько памяти было отозвано у других задач для удовлетворения нужд более приоритетных процессов с момента запуска Windows. Идеальный вариант с эффективно работающей системой – этот столбец по “нолям”. Этого достичь, однако, почти нереально. Более того, высокие числа в этом столбце с процессами в высоком приоритете (с 5-го и выше) говорят о том, что ресурсов системе либо не хватало, либо не хватает до сих пор: впору задуматься о приобретении дополнительной планки:

windows еле справляется со своими задачами
установленного объёма RAM явно недостаточно для выполнения некоторых задач

Physical Ranges

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

File Summary

В этой вкладке отображается полный путь к файлам, отнесённым системой в память. Столбцов несколько: Total – общая сумма, Active – на данный момент, Standby – готовая примкнуть и т.д. Сюда попадает всё: от файлов загрузчика до драйверов для мыши и клавиатуры. Можно взглянуть пристальнее, проранжировав столбцы по имени, месту запуска и т.п.

File Details

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

file details rammap

Как работать с RAMMap ?

Помимо информативной части вкладок, по которым можно судить о том, как Windows справляется с запускаемыми процессами, разнося задачи по страницам памяти, и выискивая пропажу гигабайт оперативки, в шапке RAMMap имеется кнопка действий, позволяющая принудительно “изымать” страницы памяти. Как вы понимаете, этот процесс ничего общего с принудительной остановкой какого-то процесса через Диспетчер задач не имеет. Так, нажав по кнопке Empty (Очистить) программы:

очистка памяти через rammap

взору откроются пять основных команд очистки страниц памяти RAM, работа с которыми сейчас конкретными процессами не ведётся, и которым после очистки может быть присвоен иной статус, что, в свою очередь, позволит им включиться в работу уже в составе приложения, которому, быть может, как раз сейчас памяти и не хватает. Далее по списку вниз:

  • Empty Working Sets – очистит работающие наборы. Освобождает память в системных и пользовательских наборах (процессы ядра останутся нетронутыми – система “не упадёт”), перенося высвободившуюся память на страницы Stanby и Modified.
  • Empty System Working Set – очистит только системный кэш
  • Empty Modifed Page List – очистит память из страниц списка Modifed, записывая несохранённые данные на жёсткий диск и сразу перенесёт их на страницы Standby
  • Empty Standby List – избавится, в свою очередь, от страниц из списка Standby, добавляя в свободную память (список Free)
  • Empty Priority 0 Standby List – очистит страницы памяти из списка страниц для процессов с низким приоритетом, отправляя их в список Free.

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

RAMMap – анализ и сохранение результатов

Для работы с системой не обязательно работать с окном непосредственно до эксперимента и после. Разработчики предлагают поместить исполнительный файл программы в папку с другими системными утилитами Windows/System32 и запускайте через cmd от имени администратора:

 rammap.exe 1.rmp /accepteula

RAMMap фоном проверит состояние памяти и сохранит данные в файл 1.rmp в той же директории. Чтобы открыть сохранённый вами или присланный на анализ файл, можно запустить cmd с таким скриптом:

 rammap.exe -o 1.rmp

или для владельцев Windows 64-x, помогающим 32-х битным соратникам (а вот из 32-х битной версии файлы с 64-х-“битки” уже не прочитать):

 rammap.exe -run32 -o 1.rmp

Впрочем, команды чтения и записи в файл доступны из окна самой команды.

Успехов.

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

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

Максимальный размер загружаемого файла: 50 МБ. Вы можете загрузить: изображение, видео. Ссылки на YouTube, Facebook, Twitter и другие сервисы, вставленные в текст комментария, будут автоматически встроены. Перетащите файлы сюда