Контроль использования памяти в Windows

Самый простой способ узнать, сколько оперативной памяти используется в данный момент времени — открыть Диспетчер задач (Task Manager), нажав [Ctrl]+[Shift]+[Esc], и перейти на вкладку «Быстродействие» (Performance) (рис.3.8). Подробное описание информации вкладки «Быстродействие» для Windows XP представлено в табл. 3.1.

Контроль использования памяти в Windows - student2.ru Контроль использования памяти в Windows - student2.ru
Рис. 3.8а. Диспетчер задач Windows XP Рис. 3.8б. Диспетчер задач Windows 7

Таблица 3.1. Расшифровка данных Диспетчера задач

Категория Значение Смысл
Всего (Totals) Дескрипторов (Handles) Уникальные идентификаторы, позволяющие программам обращаться к системным ресурсам, таким как файлы, ключи реестра, шрифты и растровые изображения. Теоретически это значение может использоваться для выявления программ, не освобождающих системные ресурсы после завершения работы. На практике оно оказывается полезным в основном для разработчиков, использующих специализированные средства отладки для выявления утечек памяти в приложениях
Потоков (Threads) Поток - объект внутри процесса, выполняющий инструкции программы. Многопоточные программы могут делать несколько операций одновременно. Как и предыдущее, это значение полезно в основном для разработчиков программ в процессе тестирования приложений  
Процессов (Processes) Общее количество процессов (программ, подсистем и служб), инициированных всеми пользователями данного компьютера
Выделение памяти (Commit Charge) Всего (Total) Общее количество физической и виртуальной памяти, занимаемой операционной системой и всеми программами в настоящий момент. Это значение также отображается в нижнем правом углу окна Диспетчера задач. Выделение памяти растет по мере открытия программ и файлов данных и должно уменьшаться при их закрытии
Предел (Limit) Общее количество физической и виртуальной памяти, доступной операционной системе и всем приложениям, которые о тоже отображается в нижнем правом углу Диспетчера задач. Чтобы увеличить предельное значение, добавьте в компьютер оперативной памяти и/или увеличьте размер файла подкачки
Пик (Peak) Максимальное общее количество памяти, использовавшееся на протяжении текущего сеанса (в килобайтах). Если это значение часто оказывается близким или равным Пределу, в систему нужно нарастить память
Физическая память (Physical memory) Всего (Total) Полное количество физической памяти данного компьютера (в килобайтах). Поделите на 1024, чтобы перевести это значение в мегабайты  
Доступно (Available) Общий объем физической памяти (в килобайтах), который будет выделен выполняемым программам прежде, чем начнется обмен данными с файлом подкачки. Windows всегда старается зарезервировать некоторое количество памяти для новых приложений, даже если оно превышает количество установленной физической памяти  
Системный кэш (System Cache) Общее количество физической памяти (в килобайтах), используемое для хранения часто вызываемых программ и данных. Windows пытается отвести под системный кэш как можно больше памяти, но при необходимости будет уменьшать объем кэша для предоставления программам и функциям операционной системы свободной памяти
Память ядра (Kernel Memory) Всего (Total) Полный объем оперативной памяти (в килобайтах), занимаемый основными компонентами операционной системы (включая драйверы)
Выгружаемая (Paged) Объем памяти (в килобайтах), используемой основными компонентами Windows и отображенной на страницы в виртуальной памяти
Невыгружаемая (Nonpaged) Объем кода операционной системы и драйверов (в килобайтах), который должен выполняться в физической памяти и не может быть перенесен в виртуальную


Вкладка «Быстродействие» для Windows 7 имеет значимые нововведения по сравнению с соответствующей вкладкой Диспетчером задач Windows XP.

Число в графе «Всего» (Total) раздела «Физическая память» (Physical Memory) указывает на общий объем оперативной памяти для данной системы. В графе «Кэшировано» (Cached) указано количество физической памяти, которая недавно использовалась системными ресурсами. Она остается в кэше на случай, если снова понадобится системе, но доступна для других процессов. В новой графе «Доступно» (Available) указывается количество неиспользуемой в данный момент физической памяти, а в графе «Свободно» (Free) — количество памяти, которая используется кэшем, но не содержит полезной информации.

В разделе «Память ядра» (Kernel Memory) содержатся две графы — «Выгружаемая» (Paged) и «Невыгружаемая» (Nonpaged). В сумме они указывают, сколько памяти использует ядро. Выгружаемая — это виртуальная память, а невыгружаемая — физическая.

В разделе «Система» (System) появились графы «Дескрипторов» (Handles) и «Потоков» (Threads), связанные с составными компонентами процессов. В графе «Дескрипторов» указывается количество идентификаторов объектов (дескрипторов), которые используются запущенными в данный момент процессами. В графе «Потоков» указано число подпроцессов, запущенных в рамках более крупных процессов. Цифра в графе «Процессов» (Processes), естественно, указывает на общее количество запущенных процессов, которые можно увидеть на вкладке «Процессы».

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

Еще более подробную информацию можно получить, нажав кнопку «Монитор ресурсов» и выбрав вкладку «Память» (рис. 3.9).

Контроль использования памяти в Windows - student2.ru

Рис. 3.9. Вкладка «Память» окна монитора ресурсов Windows 7

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

Контроль использования памяти в Windows - student2.ru

Рис. 3.10. Таблица «Процессы»

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

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

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

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

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

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

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

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

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

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

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

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

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

Контроль использования памяти в Windows - student2.ru
Рисунок 3.11. Гистограмма в таблице «Физическая память» позволяет составить общее представление о распределении памяти в Windows 7

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

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

К компонентам, влияющим на объем зарезервированной памяти, относятся:

• BIOS;

• компоненты материнской платы — например, усовершенствованный программируемый контроллер прерываний ввода/вывода (APIC);

• звуковые карты и другие устройства, осуществляющие ввод/вывод с отображением на память;

• шина PCI Express (PCIe);

• видеокарты;

• различные наборы микросхем;

• флеш-накопители.

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

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

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

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

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

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

В контексте принятого в Windows 7 подхода к управлению памятью, свободная память бесполезна. Чем больше памяти задействовано, тем лучше!!!

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

Порядок выполнения работы


1. Перезагрузите компьютер и сразу же после запуска откройте Монитор ресурсов Windows 7.

2. Перейдите на вкладку «Память» и обратите внимание на соотношение секций в гистограмме физической памяти.

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

РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА

  1. Гордеев А.В. Операционные системы: Учебник для вузов. 2-е изд. – СПб.: Питер, 2009. – 416 с.
  2. Х.М. Дейтл, П.Дж. Дейтл, Д.Р. Чофнес Операционные системы. Основы и принципы: Третье издание. Пер. с англ. –М.: ООО «Бином-Пресс», 2006 г. – 1024 с.
  3. Шоу А. Логическое проектирование операционных систем: Пер. с англ. – М.: Мир, 1981. – 360 с.
  4. Рихтер Дж. Windows для профессионалов: создание эффективных Win32 приложений с учетом специфики 64-разрядной версии Windows/Пер, англ - 4-е изд. - СПб; Питер; М.: Издательско-торговый дом "Русская Редакция", 2001. - 752 с.; ил.
  5. Иртегов Д.В. Введение в операционные системы. – 2-е изд., перераб. и доп. – СПБ; БХВ-Петербург, 2008. – 1040 с., ил. - (Учебное пособие)

Наши рекомендации