Монитор ресурсов ошибок страниц

В Windows есть встроенное средство, позволяющее наблюдать за различного рода активностью, происходящей в компьютере. Благодаря ему можно не только отыскать проблемные приложения, но и, например, качественно их удалить. За отображение всех деталей работающих процессов отвечает «Монитор ресурсов», и далее мы расскажем, как его открыть и воспользоваться.

Запуск «Монитора ресурсов» в Виндовс 7

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

Способ 1: «Диспетчер задач»

Поскольку рассматриваемый инструмент неразрывно связан с работой исполняемых приложений и системных файлов, а значит и «Диспетчером задач», отвечающим за отображение данной активности, запустить «Монитор ресурсов» можно прямо оттуда.

  1. Вызовите «Диспетчер задач» любым удобным методом, например, комбинацией клавиш Ctrl + Shift + Esc или кликом правой кнопкой мыши по «Панели задач» >«Запустить диспетчер задач».
  2. Переключитесь на вкладку «Быстродействие».

Здесь щелкните по кнопке «Монитор ресурсов…».

Сам «Диспетчер задач» можно закрыть.

Способ 2: Окно «Выполнить» / «Командная строка»

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

Быстрее вызвать «Монитор ресурсов» через окно «Выполнить». Для этого нажмите сочетание клавиш Win + R и впишите команду perfmon /res . Нажмите «ОК» либо Enter.

Ту же самую команду можно вписать и в «Командную строку», но этот вариант актуален только для тех, кто ей часто пользуется, поскольку проще открыть окно «Выполнить», чем консоль.

Использование «Монитора ресурсов»

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

Правее можно настроить вид графическое представление загрузки ПК кнопкой «Вид» или вовсе скрыть эту панель кликом на стрелку.

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

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

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

Центральный процессор

На каждой вкладке есть дополнительные информационные блоки. Например, на вкладке «ЦП» можно не только увидеть таблицу со всеми работающими процессами и их загрузкой CPU в режиме реального времени, но и посмотреть «Связанные дескрипторы». Они отображают все, что использует в своей работе выбранный процесс. Это пригодится при поиске вируса или, например, когда не удается удалить конкретную программу с компьютера, потому что один из ее файлов занят другим процессом.

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

«Службы» позволяют увидеть, какие именно службы задействует в своей работе процесс.

Оперативная память

На вкладке «Память» в блоке «Процессы» тоже имеется таблица, которая на этот раз отображает подробные сведения касательно потребления процессами оперативной памяти. Это актуально для общих статистических данных, а также в случае подозрения наличия вирусной активности на ПК (ведь не редко вредоносное ПО чрезмерно нагружает компьютер) или просто для поиска проблемного компонента, потребляющего неприлично много этих ресурсов.

Быстро расскажем о предназначении некоторых столбцов:

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

В блоке «Физическая память» отображена общая статистика доступной и используемой RAM. К слову, иногда можно увидеть количество свободной памяти 0 мегабайт, что по факту не соответствует действительности и данные просто приплюсовались к тому, что помечено как «Ожидание».

Диск

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

Стоит отметить, что вирусы, которые работают с жестким диском, иногда не удается здесь обнаружить, поэтому при подозрениях лучше воспользоваться сторонними решениями типа Process Monitor.

«Работа диска» показывает то же самое, только для всех процессов, работающих в этом сеансе, но уже вместе с путями к файлам. Блок «Запоминающие устройства» содержит список всех подключенных накопителей, включая их логические разделы, выводит нагрузку на них в эту секунду в процентах, общее и свободное количество места.

Сеть

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

  • «Процессы с сетевой активностью» — позволяет увидеть все программы и файлы, выходящие в интернет, а также объем полученных и отправленных данных в килобайтах;
  • «Сетевая активность» — отображает то же самое, но уже для всех процессов, а также адреса, по которым происходит их обращение;
  • «TCP-подключения» — предназначен для просмотра локальных и удаленных адресов и портов, которые используются каждым процессом. Тут же есть данные о потерях и задержке при интернет-соединении каждого из них;
  • «Прослушиваемые порты» — показывает локальные адреса и порты, которые слушает каждый процесс, сетевой протокол, на котором он работает, а также есть ли разрешение на соединение от брандмауэра.
Читайте также:  Мерседес w203 отзывы владельцев

Если вы планируете часто обращаться к «Монитору ресурсов», можете сохранить свои настройки (выбранные процессы, развернутые вкладки), чтобы всегда быстро следить по одним и тем же параметрам. Это делается через меню «Файл». В соседнем меню есть пара других возможностей — регулировка столбцов, выбор ядер процессора (только для вкладки «ЦП») и остановка/запуск мониторинга.

Теперь вы знаете, как быстро запускать «Монитор ресурсов» и грамотно анализировать предоставляемые им сведения.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Что это такое? Как понимать его показания? В справке не описано.
Это нормально, когда у программы он растет со скоростью 2-3 тыс единиц в секунду?


homm © ( 2007-05-01 14:42 ) [1]

> Что это такое? Как понимать его показания?

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


> Это нормально, когда у программы он растет со скоростью
> 2-3 тыс единиц в секунду?

Нет 🙂 Пора идти в магазин за оперативой 🙂


Eraser © ( 2007-05-01 14:42 ) [2]

> [0] DVM © (01.05.07 13:42)


> Что это такое?

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

> Это нормально, когда у программы он растет со скоростью
> 2-3 тыс единиц в секунду?

не очень (хотя тут нужно смотреть конкретную ситуацию), нужно побольше ОЗУ.


homm © ( 2007-05-01 15:05 ) [3]

> Это нормально, когда у программы он растет со скоростью
> 2-3 тыс единиц в секунду?

Я счас подергал окошко оперы за края, погонял апатчь, до 5 тышь в секунду доходило. Вот же уродский оптимайзер памяти у винды 🙁 Так что пара тысячь в секунду — вполне нормально.


DVM © ( 2007-05-01 15:35 ) [4]

Я вот попытался локализовать в своей программе место, которое более всего увеличивает счетчик – оказалось это место в FastDIB. А именно:

procedure FastDIB2Bitmap(Src:TFastDIB;Dst:TBitmap);
begin
if Src.Handle<>0 then
begin
Dst.Handle:=Src.Handle;
// bitmaps can be selected for only one device context at a time
if(Src.hDC<>0)and Src.FreeDC then DeleteDC(Src.hDC);
if(Src.hPen<>0)then DeleteObject(Src.hPen);
if(Src.hFont<>0)then DeleteObject(Src.hFont);
if(Src.hBrush<>0)then DeleteObject(Src.hBrush);
Src.hDC:=0;
Src.FreeDC:=False;
Src.FreeBits:=False;
Src.FreeHandle:=False;
end;
end;

Вот такие преобразования моя программа делает до 200 в секунду.
Если я комментирую преобразование, то счетчик не растет практически.

Памяти 100% достаточно. Ее количество не влияет на этот счетчик. 2Гб ее.


Eraser © ( 2007-05-01 16:40 ) [5]

ну если это не дает лишней нагрузки на CPU – можно смело забить, если нагрузку дает – исключить вызов FastDIB2Bitmap.


antonn © ( 2007-05-01 16:43 ) [6]

щас может тупой вопрос задам:)
А так – procedure FastDIB2Bitmap(Src:TFastDIB; var Dst:TBitmap);
?


DVM © ( 2007-05-01 17:13 ) [7]


> ну если это не дает лишней нагрузки на CPU

Не нагрузки не дает абсолютно. Память не растет, никакие ресурсы не уменьшаются.


> щас может тупой вопрос задам:)
> А так – procedure FastDIB2Bitmap(Src:TFastDIB; var Dst:TBitmap);
>
> ?

Все то же самое.


Eraser © ( 2007-05-01 17:28 ) [8]

> [6] antonn © (01.05.07 16:43)

в Делфи идентификатор объекта является указателем на объект )


antonn © ( 2007-05-01 18:09 ) [9]


> в Делфи идентификатор объекта является указателем на объект
> )


Sapersky ( 2007-05-01 20:51 ) [10]

Я вот попытался локализовать в своей программе место, которое более всего увеличивает счетчик – оказалось это место в FastDIB.

По логике, нужно сначала всё освободить, потом присваивать Handle. Возможно, и освобождать необязательно, во всяком случае в примере Bumpmap сделано так:

procedure TBumpForm.SetThumbnail(Image:TImage; Bmp:TFastDIB);
var
Tmp: TFastDIB;
begin
Tmp:=TFastDIB.Create;
Tmp.SetSize(105,105,Bmp.Bpp);
if Tmp.Bpp=8 then
begin
Tmp.Colors^:=Bmp.Colors^;
Tmp.UpdateColors;
end;

Bilinear(Bmp,Tmp);
Tmp.FreeHandle:=False;
Image.Picture.Bitmap.Handle:=Tmp.Handle;
Tmp.Free;
Image.Refresh;
end;

А вообще, откуда надобность выполнять подобное преобразование 200 раз/c? Может лучше выкинуть TBitmap и выполнять все операции с TFastDIB? А то мне сейчас лень смотреть, но подозреваю, что в TBitmap.SetHandle куда больше действий, чем просто присвоение переменной.

Ещё, имейте в виду, что FastGate – это не оригинальный FastLIB. Автор этого модуля уже допускал ляпы при "улучшении" библиотеки, так что аккуратнее с ним (хотя, строго говоря, и "оригинал" не безгрешен).


DVM © ( 2007-05-01 22:03 ) [11]


> А вообще, откуда надобность выполнять подобное преобразование
> 200 раз/c?

Да есть вот задачи. Видеонаблюдение.


> Может лучше выкинуть TBitmap и выполнять все операции с
> TFastDIB?

Так и планирую сделать, но есть свои грабли и очень много вносить изменений. В принципе FastDIB тут прикручен из-за фантастически быстрой SetSize.


> TBitmap.SetHandle куда больше действий, чем просто присвоение
> переменной.

Да, там намного больше действий.


> Sapersky

Не подскажите, как правильно скопировать один TFastDIB в другой. Не Assign(), а именно копирование? У меня вот какая штука:

Во вторичном потоке происходит декодирование JPEG в TFastDIB. Далее этот FastDIB с сообщением высылается в основной поток и там преобразуется в TBitmap, который и отрисовывается при необходимости в основном потоке по WM_PAINT. Так сделано сейчас. Так вот получается, что и основной поток и вторичный на деле же работают с одним и тем же хэндлом одного и того же битмапа по сути. Ведь FastDIB2Bitmap просто присваивает хэндл. И пока первичный поток отрисовывает его на окне вторичный ведь может и поменять его содержимое. Или я неправ? Так можно делать или надо полностью копироваить битмап в основной поток и там работать с ним?


homm © ( 2007-05-01 22:06 ) [12]

Хм, а я кажеться понял почему так много ошибок доступа в этом месте. Потому что по Dst.Handle:=Src.Handle; Dst фактически заново создаеться, под новый битмап выделяеться память. А менеджер памяти в виндовсе имеет такое замечательное свойство, не выделять память физически, а лишь помечать страницы как зарезервированые. А вот когда уже на новый хэндл уже копируеться изображение со старого, идет непосредственное обращение к страницам, и они выделяются физически (в ОП), а счетчик ошибок доступа мотает. Так что эта строчка имхо — большая дыра в производительности. Попробуй как минимум создавать TBitmap как DIB, как максимум, здесь вобще нужно логику программы переделывать.


homm © ( 2007-05-01 22:11 ) [13]

Читайте также:  Максимальная температура видеокарты gtx 760

> Так вот получается, что и основной поток и вторичный на
> деле же работают с одним и тем же хэндлом одного и того
> же битмапа по сути.

Скорее всего нет. Как я понимаю невозможно преобразовать DDB в DIB не выделив под него второй хэндл.


DVM © ( 2007-05-01 22:21 ) [14]


> Потому что по Dst.Handle:=Src.Handle; Dst фактически заново
> создаеться, под новый битмап выделяеться память

Да, получается, что так.


> Так что эта строчка имхо — большая дыра в производительности.

Может быть, но это далеко не самая тяжелая операция. Декодирование из JPEG во вторичных потоках занимает в тысячи раз больше времени.


> как максимум, здесь вобще нужно логику программы переделывать.

Я вот попробовал переделать на TFastDIB в основном потоке – проблема с ошибками страницы исчезла.


DVM © ( 2007-05-01 22:25 ) [15]

Возникла другая проблема – как мне правильно передать с сообщением переменную типа TFastDIB из вторичного потока в первичный с сообщением и присвоить полченное в основном потоке значение переменной в первичном потоке. Просто присваиванием очевидно нельзя – возникают сразу утечки GDI ресурсов (вот здесь отличие от TBITMAP).


Sapersky ( 2007-05-02 00:38 ) [16]

Не подскажите, как правильно скопировать один TFastDIB в другой. Не Assign(), а именно копирование?

Dst.MakeCopy(Src, True); // делается SetSize и Move
Или можно (при UseGDI = True) установить размер Dst = Src, потом
Src.Draw(Dst.hDC, 0, 0); // фактически BitBlt
удобно тем, что конвертирует битмапы разных форматов, хотя, как правило, не очень качественно. Впрочем, для этого есть FConvert.pas.

И пока первичный поток отрисовывает его на окне вторичный ведь может и поменять его содержимое. Так можно делать или надо полностью копироваить битмап в основной поток и там работать с ним?

Если вторичный поток не изменяет размер битмапа, т.е. не портит указатель/Handle, то, наверное, можно его спокойно рисовать, в крайнем случае нарисуется половина старого, половина нового. Хотя сам не пробовал, не знаю, как функции GDI отнесутся к тому, что кто-то будет писать в используемую ими область памяти. Можно на всякий случай прицепить к битмапу крит. секцию.
Если изменяет – тогда однозначно нужна или синхронизация, или копирование, или и то, и другое.

Просто присваиванием очевидно нельзя – возникают сразу утечки GDI ресурсов (вот здесь отличие от TBITMAP).
Что такое "присваивание"?
Если Assign – возможно, "аффтар" FastGate с ним напортачил в новой версии, пытаясь добиться того же поведения, что и у TBitmap. В оригинале это поведение довольно специфическое – битмап-источник уничтожается.
В общем, лучше "присваивание" делать как Dst := Src с соответствующей синхронизацией или MakeCopy.


Игорь Шевченко © ( 2007-05-02 10:29 ) [17]


> Вот же уродский оптимайзер памяти у винды

Слону, сам понимаешь, пофиг.


DVM © ( 2007-05-02 13:00 ) [18]


> Sapersky (02.05.07 00:38) [16]

Большое спасибо. Метод TFastDib.MakeCopy() действительно то что нужно.

Счетчики ошибок страницы не растут. Утечек тоже нет. Как обстоят дела с производительностью такого решения выясняю.

В своей прошлой статье «Как использовать Монитор ресурсов Windows 7 для эффективной диагностики» я рассказал о возможностях Монитора ресурсов Windows 7 (Resource Monitor), объяснил, как с его помощью наблюдать за распределением системных ресурсов между процессами и службами, а также упомянул, что его можно использовать для решения конкретных задач — например, для анализа расходования памяти. Именно об этом и пойдет речь в данной статье.

Немного о памяти

Прежде чем приступать к анализу, коротко расскажу о том, как Microsoft Windows 7 управляет памятью. После этого вам будет проще понять, какая информация представлена в Мониторе ресурсов Windows 7.

Диспетчер памяти Windows 7 создает виртуальную систему памяти, которая состоит из доступной физической RAM и файла подкачки на жестком диске. Это позволяет операционной системе выделять блоки памяти фиксированной длины (страницы) с последовательными адресами в физической и виртуальной памяти.

Запуск Монитора ресурсов Windows 7

Чтобы запустить Монитор ресурсов Windows 7, откройте меню «Пуск» (Start), введите в строке поиска «Resmon.exe» и нажмите [Enter]. В открывшемся окне выберите вкладку «Память» (Memory, рис. A).

На вкладке «Память» есть таблица «Процессы» (Processes, рис. B), в которой перечислены все запущенные процессы, а сведения об используемой памяти разбиты на несколько категорий.

В колонке «Образ» (Image) указывается имя исполняемого файла процесса. Процессы, запущенные приложениями, узнать очень легко — например, процесс «notepad.exe» со всей очевидностью принадлежит Блокноту (Notepad). Процессы с именем «svchost.exe» представляют различные службы операционной системы. Название службы указывается в скобках рядом с именем процесса.

Графа «ИД процесса»

В колонке «ИД процесса» (PID) указывается номер процесса — уникальное сочетание цифр, позволяющее идентифицировать запущенный процесс.

В столбце «Завершено» (Commit) указывается объем виртуальной памяти в килобайтах, зарезервированный системой для данного процесса. Сюда входит и используемая физическая память, и сохраненные в файле подкачки страницы.

Графа «Рабочий набор»

В графе «Рабочий набор» (Working Set) указывается объем физической памяти в килобайтах, используемой процессом в данный момент времени. Рабочий набор складывается из общей и частной памяти.

В колонке «Общий» (Shareable) указан объем физической памяти в килобайтах, которую данный процесс использует совместно с другими. Использование одного сегмента памяти или страницы подкачки для родственных процессов позволяет сэкономить место в памяти. При этом физически сохраняется только одна копия страницы, которая затем сопоставляется с виртуальным адресным пространством других процессов, которые к ней обращаются. Например, все процессы, инициированные системными библиотеками DLL — Ntdll, Kernel32, Gdi32 и User32 — используют общую память.

В столбце «Частный» (Private) указывается объем физической памяти в килобайтах, используемой исключительно данным процессом. Именно это значение позволяет определить, сколько памяти нужно тому или иному приложению для работы.

Графа «Ошибок отсутствия страницы в памяти/сек.»

В графе «Ошибок отсутствия страницы в памяти/сек.» (Hard Faults/sec) указано среднее за последнюю минуту количество ошибок отсутствия страницы в памяти в секунду. Если процесс пытается использовать больше физической памяти, чем доступно в данный момент времени, система записывает часть данных из памяти на диск — в файл подкачки. Последующее обращение к данным, сохраненным на диск, и называется ошибкой отсутствия страницы в памяти.

О чем говорят ошибки отсутствия страницы в памяти

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

Читайте также:  Монолог про любовь из фильма

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

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

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

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

Таблица «Физическая память»

В таблице «Процессы» приводятся детальные сведения о распределении памяти между отдельными процессами, а таблица «Физическая память» (Physical Memory) дает общую картину использования RAM. Ее ключевой компонент — уникальная гистограмма, показанная на рис. C.

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

Секция «Зарезервированное оборудование»

Слева расположена секция «Зарезервированное оборудование» (Hardware Reserved), обозначенная серым цветом: это память, выделенная на нужды подключенного оборудования, которую оно использует для взаимодействия с операционной системой. Зарезервированная для оборудования память заблокирована и недоступна диспетчеру памяти.

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

• BIOS;
• компоненты материнской платы — например, усовершенствованный программируемый контроллер прерываний ввода/вывода (APIC);
• звуковые карты и другие устройства, осуществляющие ввод/вывод с отображением на память;
• шина PCI Express (PCIe);
• видеокарты;
• различные наборы микросхем;
• флеш-накопители.

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

Секция «Используется» (In Use, рис C), обозначенная зеленым цветом, представляет количество памяти, используемой системой, драйверами и запущенными процессами. Количество используемой памяти рассчитывается, как значение «Всего» (Total) за вычетом суммы показателей «Изменено» (Modified), «Ожидание» (Standby) и «Свободно» (Free). В свою очередь, значение «Всего» — это показатель «Установлено» (Installed RAM) за вычетом показателя «Зарезервированное оборудование».

Оранжевым цветом выделена секция «Изменено» (Modified), в которой представлена измененная, но не задействованная память. Фактически она не используется, но может быть в любой момент задействована, если снова понадобится. Если память не используется достаточно давно, данные переносятся в файл подкачки, а память переходит в категорию «Ожидание».

Секция «Ожидание», обозначенная синим цветом, представляет страницы памяти, удаленные из рабочих наборов, но по-прежнему с ними связанные. Другими словами, категория «Ожидание» — это фактически кэш. Страницам памяти в этой категории присваивается приоритет от 0 до 7 (максимум). Страницы, связанные с высокоприоритетными процессами, получают максимальный приоритет. Например, совместно используемые процессы обладают высоким приоритетом, поэтому связанным с ними страницам присваивается наивысший приоритет в категории «Ожидание».

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

В категории «Свободно», обозначенной голубым цветом, представлены страницы памяти, еще не выделенные ни одному процессу или освободившиеся после завершения процесса. В этой секции отображается как еще не задействованная, так и уже освобожденная память, но на самом деле, еще не задействованная память относится к другой категории — «Нулевые страницы» (Zero Page), которая так называется, потому что эти страницы инициализированы нулевым значением и готовы для использования.

О проблеме свободной памяти

Теперь, когда вы в общих чертах представляете, как работает диспетчер памяти, ненадолго остановимся на распространенном заблуждении, связанном с системой управления памятью в Windows 7. Как видно из рис. C, секция свободной памяти — одна из самых маленьких в гистограмме. Тем не менее, ошибочно на этом основании полагать, будто Windows 7 потребляет чересчур много памяти и что система не может нормально работать, если свободной памяти так мало.

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

Хотите понаблюдать систему управления памятью Windows 7 в действии? Перезагрузите компьютер и сразу же после запуска откройте Монитор ресурсов Windows 7. Перейдите на вкладку «Память» и обратите внимание на соотношение секций в гистограмме физической памяти.

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

Проделав этот экстремальный эксперимент, вы поймете, как Windows 7 управляет памятью на вашем конкретном компьютере, и сможете использовать Монитор ресурсов Windows 7 для наблюдения за распределением памяти в нормальных условиях повседневной работы.

А что думаете вы?

Нравится ли вам идея использовать Монитор ресурсов Windows 7 для наблюдения за распределением памяти? Поделитесь своим мнением в комментариях!

Читайте также:

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

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

Adblock detector