Назад | Перейти на главную страницу

Есть ли недостатки переключателя «/ 3Gb» в boot.ini для 32-битной Windows?

Microsoft советует использовать переключатель / 3Gb в Boot.ini, чтобы получить больше памяти для процесса, работающего в 32-битной системе.

Сейчас мне нужно много памяти для девенв процесс (Visual Studio 2008), потому что у меня есть сложное решение, которое включает множество проектов и форм и требует много ресурсов во время разработки.

Хотел бы спросить, если кто-нибудь знает, каковы отрицательные стороны использования переключателя / 3Gb, есть ли обстоятельства, при которых его использовать не рекомендуется.

На настольной машине проблем скорее всего нет. Выгружаемый пул ядра меньше на машине W2K3 / WXP с переключателем / 3GB. Вероятно, это не проблема для настольного компьютера, потому что вы не должны приближаться к исчерпанию выгружаемого пула ядра. На сервере исчерпание выгружаемого пула ядра вызовет проблемы, и гораздо более вероятно, что вы его исчерпаете.

Вот несколько хороших подробностей о том, что касается памяти ядра, связанной с переключателем / 3GB. Если вы действительно хотите, вы можете запустить отладчик ядра NT и профилировать свою систему до и после изменения с информацией в этом документе: http://blogs.technet.com/markrussinovich/archive/2009/03/26/3211216.aspx

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

Для этого вы можете использовать SDK Tools:

dumpbin / заголовки exeName

Выдаваемые заголовки должны включать:

Приложение может обрабатывать большие (> 2 ГБ) адреса

Я проверил devenv.exe, и в VS2008 он включает флаг.

У вас будет меньше памяти, доступной для вашего ядра - переключатель регулирует разделение адресного пространства режима ядра / адресного пространства пользовательского режима, ранее от 2 ГБ до 2 ГБ, с 1 ГБ до 3 ГБ. Читать Сообщение Раймонда Чена на / 3GB и последующие действия, прежде чем продолжить.

Множество недостатков. По умолчанию Windows выделяет каждому процессу пул памяти размером 4 ГБ, который распределяется 50/50 между процессами режима ядра (общий для всех приложений) и процессами пользовательского режима (уникальными для каждого приложения) (упрощенное объяснение). Таким образом, приложение, работающее в системе, имеет 2 ГБ памяти для игры, а сама система имеет собственные 2 ГБ. Важное примечание: эти вторые 2 ГБ - это те же 2 ГБ для всех приложений, работающих в системе.

Переключатель / 3GB регулирует разделение таким образом, что режим ядра получает 1 ГБ, а пользовательский режим - 3 ГБ.

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

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

Здесь есть довольно хорошее обсуждение всего этого: http://blogs.technet.com/askperf/archive/2007/03/23/memory-management-demystifying-3gb.aspx

В вашем конкретном случае, я думаю, переход на 64-битную версию и увеличение объема оперативной памяти будет более жизнеспособным решением, поскольку / 3GB действительно не даст вам того, что вы хотите (работает ли это даже на XP?)

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

Я видел, как это странным образом мешает работе видеокарт. Но любой драйвер может неправильно работать с этим переключателем, если он неправильно написан.

Иногда эти проблемы можно обойти, добавив переключатель / USERVA.

http://support.microsoft.com/kb/319043
http://support.microsoft.com/kb/833721
http://support.microsoft.com/kb/839490
http://support.microsoft.com/kb/316739

Он работает надежно (за исключением отладки драйверов и т. Д.) Только на корпоративной серверной ОС для двоичных файлов LARGEADDRESSAWARE.

devenv не такой двоичный. Например, SQL Server и Exchange.

Вам понадобится x64-битная ОС и VS x64 редактировать: LARGEADDRESSAWARE обнаружен на x64 чтобы преодолеть ограничение в 2 ГБ.