Есть ли какие-либо недостатки переключателя "/3Gb" в boot.ini для 32-битной Windows?
Microsoft рекомендует использовать ключ /3Gb в Boot.ini, чтобы получить больше памяти для процесса, работающего в 32-битной системе.
В настоящее время мне нужно много памяти для процесса devenv (Visual Studio 2008), потому что у меня есть комплексное решение, которое имеет много проектов и форм и потребляет много ресурсов во время разработки.
Я хотел бы спросить, если кто-нибудь знает, каковы негативные аспекты использования ключа /3Gb, есть ли обстоятельства, когда его не рекомендуется использовать.
7 ответов
На настольном компьютере проблем, скорее всего, нет. Выгружаемый пул ядра меньше на компьютере W2K3 / WXP с набором ключей /3GB. Это, вероятно, не проблема для настольного компьютера, потому что вы не должны приближаться к исчерпанию выгружаемого пула ядра. На сервере исчерпание выгружаемого пула ядра вызовет проблемы, и, скорее всего, вы его исчерпаете.
Вот несколько подробностей о памяти ядра, связанной с ключом /3GB. Если вы действительно хотите, вы можете запустить отладчик ядра NT и профилировать вашу систему до и после изменений, используя информацию в этом документе: http://blogs.technet.com/markrussinovich/archive/2009/03/26/3211216.aspx
У вас будет меньше памяти для вашего ядра - переключатель корректирует разделение адресного пространства режима ядра / адресного пространства пользовательского режима, ранее от 2 ГБ до 2 ГБ, от 1 ГБ до 3 ГБ. Прочтите статью Раймонда Чена на /3GB и последующие действия, прежде чем продолжить.
Прежде чем вносить какие-либо изменения, вы должны сначала проверить, связаны ли процессы, которые вы хотите запустить, с флагом LARGEADDRESSAWARE. С флагом не будет никаких изменений в том, как процесс использует память.
Вы можете использовать SDK Tools для этого:
свалка / заголовки exeName
Заголовки выкладывать должны включать в себя:
Приложение может обрабатывать большие (>2 ГБ) адреса
Я сделал проверку на devenv.exe и в VS2008 он включает флаг.
Множество недостатков. По умолчанию 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?)
Он работает надежно (за исключением драйверов отладки и т. Д.) На ОС сервера предприятия для двоичных файлов LARGEADDRESSAWARE.
devenv не такой бинарный. SQL Server и Exchange есть, например.
Вам потребуется x64 битная ОС и VS x64 edit: LARGEADDRESSAWARE обнаружен на x64, чтобы преодолеть ограничение в 2 ГБ.
Мы использовали его на нескольких системах, на которых работали приложения для обработки изображений на большом количестве больших изображений, и никогда не замечали никаких проблем. В любых ситуациях, когда вам требуется дополнительный гигабайт памяти приложения, вы, вероятно, позволите приложению работать и больше ничего не делать с системой, поэтому, вероятно, это не окажет большого влияния.
Я видел, как это мешает видеокартам странным образом. Но любой драйвер может плохо работать с этим переключателем, если он не написан должным образом.
Иногда эти проблемы можно обойти, добавив ключ /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