Смекни!
smekni.com

Исследование возможностей операционной системы Windows (стр. 9 из 11)

Ограничения памяти в ОС Windows Server

Особенности поддержки физической памяти в ОС Windows продиктованы ограничениями оборудования, условиями лицензирования, характеристиками структур данных операционной системы и вопросами совместимости драйверов. На странице "Ограничения памяти в различных выпусках ОС Windows" (на английском языке) веб-узла MSDN изложены ограничения памяти, характерные для различных версий Windows и номеров SKU в рамках каждой версии.

Как видите, во всех серверных версиях ОС Windows разным номерам SKU соответствуют разные формы поддержки физической памяти, обусловленные условиями лицензионных соглашений. К примеру, 32-разрядная версия ОС Windows Server 2008 Standard поддерживает лишь 4 ГБ физической памяти, в то время как 32-разрядная версия Windows Server 2008 Datacenter - 64 ГБ. С другой стороны, 64-разрядная версия ОС Windows Server 2008 Standard поддерживает всего 32 ГБ физической памяти, а 64-разрядная версия Windows Server 2008 Datacenter - целых 2 ТБ. Систем с физической памятью объемом 2 ТБ не так уж много - участники рабочей группы по вопросам производительности ОС Windows Server знают пару таких, одна из которых в какой-то момент была собрана в их собственной лаборатории.


Максимальный для 32-разрядных систем объем памяти - 128 ГБ - поддерживается версией Windows Server 2003 Datacenter Edition. Такое ограничение связано с тем, что в более мощных системах структуры, применяемые диспетчером памяти для отслеживания физической памяти, потребляли бы слишком большую часть пространства виртуальных адресов. Диспетчер памяти отслеживает страницы памяти при помощи массива, называемого базой данных PFN, и в целях оптимизации производительности отображает все содержимое этой базы в виртуальную память. Так как каждая страница памяти представлена структурой данных объемом 28 байт, в системе с физической памятью емкостью 128 ГБ для размещения базы данных PFN потребуется 930 МБ. В 32-разрядных ОС Windows предусмотрено пространство виртуальных адресов объемом 4 ГБ, зависящее от оборудования и по умолчанию распределяемое между текущим процессом пользовательского режима (например, блокнотом) и системой. В таких условиях база данных PFN объемом 980 МБ занимает почти половину из доступных 2 ГБ системной части пространства виртуальных адресов, а значит, на отображение ядра, драйверов устройств, системного кэша и других структур данных системы остается всего 1 ГБ (см. иллюстрацию). По той же причине в таблице ограничений объема памяти указаны пониженные лимиты для SKU при загрузке в режиме настройки систем с объемом памяти 4 ГБ (иначе называемом 4GT и включаемом параметрами загрузки /3GB или /USERVA файла Boot.ini и параметром /SetIncreaseUserVa программы Bcdedit). Дело в том, что для этого режима характерна такая схема разделения физической памяти, при которой процессам пользовательского режима достается 3 ГБ, а системе - всего 1 ГБ. В целях повышения производительности в ОС WindowsServer 2008 для системных нужд резервируется более значимая доля адресного пространства. Для этого максимальный объем физической памяти, поддерживаемый в 32-разрядных версиях ОС, сокращается до 64 ГБ.

Диспетчер памяти мог бы высвободить память путем выборочного отображения фрагментов базы данных PFN в системные адреса по мере необходимости, однако этот вариант слишком сложен и имеет потенциал снижения производительности, связанного с дополнительными операциями отображения и отмены отображения. Лишь недавно стали появляться системы настолько производительные, чтобы такой вариант можно было рассматривать как реалистичный. Впрочем, так как размер системной части адресного пространства не является ограничением для отображения всей базы данных PFN в 64-разрядных версиях ОС Windows, поддержка большего объема памяти реализована именно в них.

Версия ОС WindowsServer 2008 Datacenter поддерживает до 2 ТБ физической памяти. Такое ограничение не связано ни с особенностями реализации, ни с возможностями оборудования - все дело в том, что корпорация Майкрософт не объявляет о поддержке конфигураций, которые мы не в состоянии протестировать. На момент выпуска ОС WindowsServer 2008 "рекорд" по объему памяти находился на отметке 2 ТБ - на этом и остановились.

Ограничения памяти в клиентских версиях ОС Windows

64-разрядные клиентские версии ОС Windows поддерживают разные объемы памяти - от 512 МБ в WindowsXPStarter до 128 ГБ в VistaUltimate. В то же время, все 32-разрядные клиентские версии ОС Windows, в том числе WindowsVista, WindowsXP и Windows 2000 Professional, поддерживают физическую память в объеме до 4 ГБ. 4 ГБ - это максимальный физический адрес, доступный в стандартном режиме управления памятью x86. Некоторое время назад поддержка памяти в объеме свыше 4 ГБ была бессмысленна - системы с таким объемом памяти, даже серверные, встречались чрезвычайно редко.

К моменту разработки пакета обновления 2 (SP2) для ОС WindowsXP появление клиентских систем с объемом памяти свыше 4 ГБ уже прогнозировалось, что заставило разработчиков приступить к интенсивному тестированию WindowsXP на подобных системах. Кроме того, в пакете обновления 2 (SP2) для ОС WindowsXP была реализована поддержка расширений физических адресов (PAE) по умолчанию для устройств, поддерживающих технологию NoExecute, что, во-первых, необходимо для предотвращения исполнения данных (DEP), а во-вторых, обеспечивает возможность поддержки памяти в объеме более 4 ГБ.

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

Фактические ограничения памяти в 32-разрядных клиентских системах

Согласно официальным условиям лицензии, в 32-разрядных клиентских версиях ОС допускается установка памяти в объеме до 4 ГБ. Фактически же лимит поддержки объема памяти ниже - кроме того, он зависит от набора микросхем и характеристик подключенных устройств. Дело в том, что в таблицу физических адресов включается не только оперативная память, но и память устройств. При этом для совместимости с 32-разрядными операционными системами, которые не способны обрабатывать адреса свыше 4 ГБ, в системах x86 и x64 память устройств отображается ниже границы адресации 4 ГБ. Предположим, если в системе установлено 4 ГБ оперативной памяти, а окна в память сетевых адаптеров, аудио- и видеоустройств в сумме составляют 500 МБ, то 500 МБ из 4 ГБ оперативной памяти окажутся за границей адресации.

Следовательно, оснащение 32-разрядной системы с клиентской версией ОС Windows памятью объемом 3 ГБ и выше, вполне возможно, не принесет желаемого эффекта. В ОС Windows 2000, Windows XP и Windows Vista RTM с объемом доступной памяти можно ознакомиться в диалоговом окне System Properties (Свойства системы), на странице Performance (Быстродействие) диспетчера задач. В ОС Windows XP и Windows Vista (в том числе с пакетом обновления 1 (SP1)) эти сведения можно также получить с помощью служебных программ Msinfo32 и Winver. С выходом пакета обновления 1 (SP1) для ОС Windows Vista некоторые из этих инструментов стали указывать объем установленной, а не доступной, памяти, о чем сказано в специальной статье базы знаний Microsoft.

Как свидетельствует утилита Msinfo32, при загрузке моего ноутбука под управлением 32-разрядной версии Vista доступно 3,5 ГБ памяти из четырех установленных.

Схему распределения физической памяти можно узнать с помощью служебной программы Meminfo.

Как преодолеть ограничения

Из трех основных ресурсов - процессора, памяти и дисковой подсистемы - характеристики памяти, как правило, оказывают наибольшее влияние на общую производительность системы. Чем памяти больше, тем лучше. Быть уверенными в том, что весь потенциал установленной памяти реализован, вам помогут 64-разрядные версии ОС Windows. Они, между прочим, предоставляют ряд других преимуществ по части производительности, о которых я расскажу в одном из предстоящих выпусков серии "Преодолевая ограничения Windows", посвященном виртуальной памяти и её ограничениям.

3.4.3.2 Виртуальная память

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

В настоящее время эта технология имеет аппаратную поддержку на всех современных процессорах.

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

Также существует термин swap (англ. swap, /swɔp/) также означающий виртуальную память (точнее способ её представления), или же означает подкачку данных с диска.