ОЗУ, виртуальная память, файлы подкачки и управление памятью в Windows

Применимо к: Windows Server 7 с пакетом обновления 1, Windows Server 2012 R2
Исходный номер базы знаний: 2160852

Сводка

В этой статье содержатся основные сведения о реализации виртуальной памяти в 32-разрядных версиях Windows.

В современных операционных системах, таких как Windows, приложения и многие системные процессы всегда ссылались на память с помощью адресов виртуальной памяти. Адреса виртуальной памяти автоматически преобразуются оборудованием в реальные (ОЗУ). Только основные части ядра операционной системы обходят это преобразование адресов и напрямую используют реальные адреса памяти.

Виртуальная память используется всегда, даже если объем памяти, необходимый для всех запущенных процессов, не превышает объем ОЗУ, установленный в системе.

Процессы и адресные пространства

Всем процессам (например, исполняемым файлам приложений), работающим в 32-разрядных версиях Windows, назначаются адреса виртуальной памяти ( виртуальное адресное пространство), от 0 до 4 294 967 295 (2*32-1 = 4 ГБ), независимо от того, какой объем ОЗУ установлен на компьютере.

В конфигурации Windows по умолчанию 2 гигабайта (ГБ) этого виртуального адресного пространства предназначены для частного использования каждого процесса, а остальные 2 ГБ совместно используются всеми процессами и операционной системой. Как правило, приложения (например, Блокнот, Word, Excel и Acrobat Reader) используют только часть частного адресного пространства в 2 ГБ. Операционная система назначает кадры страниц ОЗУ только тем страницам виртуальной памяти, которые используются.

Расширение физических адресов (PAE) — это функция 32-разрядной архитектуры Intel, которая расширяет адрес физической памяти (ОЗУ) до 36 бит. PAE не изменяет размер виртуального адресного пространства (который остается на уровне 4 ГБ), а только объем фактической ОЗУ, который может быть решен процессором.

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

В следующем списке описывается объем ОЗУ, поддерживаемого различными версиями и выпусками Windows (по состоянию на май 2010 г.):

Версия Windows ОЗУ
Windows NT 4.0 4 ГБ
Windows 2000 Professional 4 ГБ
Windows 2000 Standard Server 4 ГБ
Windows 2000 Advanced Server 8 ГБ
Windows 2000 Datacenter Server 32 ГБ
Windows XP Professional 4 ГБ
Windows Server 2003 Web Edition 2 ГБ
Windows Server 2003 Standard Edition 4 ГБ
Windows Server 2003 выпуск Enterprise 32 ГБ
Windows Server 2003 Datacenter Edition 64 ГБ
Windows Vista 4 ГБ
Windows Server 2008 Standard 4 ГБ
Windows Server 2008 Enterprise 64 ГБ
Windows Server 2008 Datacenter 64 ГБ
Windows 7 4 ГБ

Файл подкачки

ОЗУ — это ограниченный ресурс, тогда как в большинстве практических целей виртуальная память не ограничена. Процессов может быть много, и каждый процесс имеет собственные 2 ГБ частного виртуального адресного пространства. Если объем памяти, используемый всеми существующими процессами, превышает доступный объем ОЗУ, операционная система перемещает страницы (4 КБ) одного или нескольких виртуальных адресных пространств на жесткий диск компьютера. Это освобождает кадр ОЗУ для других применений. В системах Windows эти страницы с выходом на страницы хранятся в одном или нескольких файлах (Pagefile.sys файлах) в корневой папке секции. В каждой секции диска может быть по одному такому файлу. Расположение и размер файла подкачки настраиваются в разделе Свойства системы (нажмите кнопку Дополнительно, щелкните Производительность, а затем нажмите кнопку Параметры ).

Пользователи часто спрашивают , насколько большой должен быть файл подкачки? Нет единого ответа на этот вопрос, так как он зависит от объема установленной ОЗУ и от того, сколько виртуальной памяти требуется рабочей нагрузке. Если нет других сведений, рекомендуется использовать в 1,5 раза больше установленной ОЗУ. В серверных системах обычно требуется достаточный объем ОЗУ, чтобы никогда не было недостатка и чтобы файл подкачки не использовался. В этих системах это может не служить полезной цели для поддержания большого файла подкачки. С другой стороны, если дискового пространства достаточно, поддержание большого файла подкачки (например, в 1,5 раза больше установленного ОЗУ) не вызывает проблем, и это также избавляет от необходимости беспокоиться о том, насколько велик его размер.

Производительность, ограничения архитектуры и ОЗУ

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

В какой-то момент ресурс, который находится в дефиците, невозможно увеличить. Это означает, что достигнуто ограничение архитектуры . Некоторые часто сообщаемые ограничения архитектуры в Windows включают следующие:

  • 2 ГБ общего виртуального адресного пространства для системы (ядро)
  • 2 ГБ частного виртуального адресного пространства на процесс (режим пользователя)
  • 660 МБ системного хранилища PTE (Windows Server 2003 и более ранних версий)
  • 470 МБ страничного хранилища пула (Windows Server 2003 и более ранние версии)
  • 256 МБ хранилища не погашенного пула (Windows Server 2003 и более ранние версии)

Это относится, в частности, к Windows Server 2003, но это также может относиться к Windows XP и Windows 2000. Однако Windows Vista, Windows Server 2008 и Windows 7 не используют эти ограничения архитектуры. Ограничения на память пользователя и ядра (здесь числа 1 и 2) одинаковы, но ресурсы ядра, такие как PTE и различные пулы памяти, являются динамическими. Эта новая функция включает как страничные, так и невыгружаемые памяти. Это также позволяет PTE и пулу сеансов выйти за пределы, которые обсуждались ранее, вплоть до того момента, когда все ядро будет исчерпано.

Часто встречающихся и цитируемых утверждений, таких как:

При использовании сервера терминалов 2 ГБ общего адресного пространства будут полностью использованы до использования 4 ГБ ОЗУ.

В некоторых случаях это может быть верно. Однако необходимо отслеживать систему, чтобы узнать, применяются ли они к конкретной системе. В некоторых случаях эти утверждения являются выводами из конкретных сред Windows NT 4.0 или Windows 2000 и не обязательно применяются к Windows Server 2003. В Windows Server 2003 были внесены значительные изменения, чтобы снизить вероятность того, что на практике эти ограничения архитектуры будут достигнуты. Например, некоторые процессы, которые находились в ядре, были перемещены в процессы, отличные от ядра, чтобы сократить объем памяти, используемой в общем виртуальном адресном пространстве.

Мониторинг использования ОЗУ и виртуальной памяти

Монитор производительности — это главный инструмент для мониторинга производительности системы и определения расположения узкого места. Чтобы запустить Монитор производительности, нажмите кнопку Пуск, панель управления, Администрирование, а затем дважды щелкните Монитор производительности. Ниже приведена сводка по некоторым важным счетчикам и их сведениям:

  • Память, зафиксированные байты. Этот счетчик является мерой потребности в виртуальной памяти.

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

  • Процесс, рабочий набор _Total. Этот счетчик является мерой активно используемой виртуальной памяти.

    Этот счетчик показывает, сколько ОЗУ требуется, чтобы виртуальная память, используемая для всех процессов, была в ОЗУ. Это значение всегда кратно 4096, то есть размер страницы, используемый в Windows. По мере увеличения спроса на виртуальную память за пределами доступной ОЗУ операционная система корректирует объем виртуальной памяти процесса в рабочем наборе, чтобы оптимизировать доступное использование ОЗУ и минимизировать разбиение на страницы.

  • Файл подкачки, %используемый файл подкачки. Этот счетчик является мерой того, сколько файлов подкачки фактически используется.

    Используйте этот счетчик, чтобы определить, имеет ли файл подкачки подходящий размер. Если этот счетчик достигает 100, файл подкачки будет заполнен, и все перестанет работать. В зависимости от волатильности рабочей нагрузки вы, вероятно, хотите, чтобы файл подкачки был достаточно велик, чтобы он использовался не более 50–075 процентов. Если используется большая часть файла подкачки, то наличие нескольких файлов на разных физических дисках может повысить производительность.

  • Память, страниц в секунду. Этот счетчик является одним из самых неправильно понятых мер.

    Высокое значение для этого счетчика не обязательно означает, что узкое место производительности связано с нехваткой ОЗУ. Операционная система использует систему разбиения на страницы для целей, отличных от переключения страниц из-за нехватки памяти.

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

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

  • Memory, Cache Bytes, Memory, Pool Nonpaged Bytes, Memory, Pool Paged Bytes, Memory, System Code Total Bytes, Memory, System Driver Total Bytes:

    Сумма этих счетчиков определяет, сколько из 2 ГБ общей части 4 ГБ виртуального адресного пространства фактически используется. Используйте их, чтобы определить, достигает ли ваша система одного из рассмотренных ранее ограничений архитектуры.

  • Память, доступные Мбайты. Этот счетчик измеряет объем ОЗУ, доступный для удовлетворения потребностей в виртуальной памяти (либо для новых выделений, либо для восстановления страницы из файла подкачки).

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

Ссылки

Расширения адресных окон