4

Вот конфигурация моей системы:

  • Windows 8 Developer Preview (32-разрядная версия)
  • 2 ГБ ОЗУ
  • Nvidia GeForce 8400 M (с 256 МБ ОЗУ)

Чтобы запустить приложение, интенсивно использующее память, мне нужно было увеличить виртуальное адресное пространство с 2 до 3 ГБ. (Обратите внимание, что это не имеет ничего общего с виртуальной памятью - совершенно другая концепция.)

Каковы возможные негативные побочные эффекты увеличения виртуального адресного пространства на 1 ГБ? Я предполагаю, что Windows будет кэшировать меньше операций чтения с диска, чаще использовать файл подкачки и т.д. Есть ли что-то более серьезное, о чем мне следует беспокоиться?

1 ответ1

6

В 32-разрядных версиях ваше виртуальное адресное пространство составляет всего 4 ГБ; 2 ГБ для пространства пользователя и 2 ГБ для системы. Когда вы берете 3 ГБ для пространства пользователя, вы оставляете только 1 ГБ для пространства системы. Это означает, что исчерпать адресное пространство системы вдвое проще, поэтому вы можете столкнуться с проблемами драйверов уровня ядра (такими как контроллеры дисков и другие операции ввода-вывода).

Я нашел эту отличную статью на TechNet, в которой объясняются некоторые подводные камни: « Управление памятью - демистификация /3 ГБ » ...

Вот подходящая реклама:

Помните, что у нас есть только 4 ГБ общего адресного пространства для работы. Если нам нужно выделить дополнительно 1 ГБ этого адресного пространства для пространства пользовательского режима, то системное пространство будет разделено пополам. Драйверы, куча, выгружаемая и не выгружаемая память имеют только половину ресурсов для работы сейчас. Однако из-за того, как работает отображение памяти, разрезание пространства ядра пополам делает намного больше, чем просто уменьшение адресного пространства. Многие структуры в пространстве виртуальной памяти ядра сокращены более чем на 50%. Например, мы взяли компьютер под управлением Windows Server 2003 Enterprise R2 с 1 ГБ ОЗУ и сравнили некоторые значения с включенным параметром /3GB и без него.

Сборка ОС по умолчанию:

Свободные системные PTE: 251 980 (1 007 920 кб)

Максимальный размер невыгружаемого пула: 206 848 КБ

С включенным /3GB:

Свободные системные PTE: 34 884 (13 953 кб)

Максимальный размер невыгружаемого пула: 129 312 кб

Как видите, PTE Free System падает более чем на 200 000. Имейте в виду, что это только тестовый сервер, который не находится под какой-либо нагрузкой. На машине, находящейся под средней и высокой нагрузкой, вполне могут быть исчерпаны свободные PTE - это означает, что система больше не может отображать системные страницы, такие как пространство ввода-вывода, стеки ядра и списки дескрипторов памяти. Кроме того, посмотрите на NonPaged Pool после включения параметра /3GB.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .