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


8

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

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

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


Спасибо всем, кто ответил, все сообщения очень информативны, и есть много соображений, которые необходимо учитывать. Я также прочитал некоторую документацию и заметил, что для MS SQL Server это вам не нужно даже для 32-разрядных систем, вы можете включить расширение оконного
окна

Ответы:


11

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

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


3
Мне всегда интересно, когда я получаю отрицательные голоса, почему я получаю отрицательные голоса. Я не верю, что что-то в этой публикации действительно неверно, но если бы это было так, я бы хотел знать, чтобы я мог удалить публикацию или исправить ее. Мне любопытно, в чем проблема с даунвотерами ... (и, конечно, я понимаю, что они никогда не вернутся, чтобы ответить на этот комментарий ... о, хорошо ...)
Эван Андерсон

5

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


5

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

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

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

Заголовки выкладывать должны включать в себя:

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

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


4

Множество недостатков. По умолчанию 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?)


Я думаю, вместо «пул режима ядра» лучше сказать «виртуальное адресное пространство ядра». Также «общий» означает для меня «одинаковый для всех приложений». Это так?
dma_k

1

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


1

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

Иногда эти проблемы можно обойти, добавив ключ / 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


1

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

devenv не такой бинарный . SQL Server и Exchange есть, например.

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


actaully devenv.exe является большим адресным программным обеспечением.
Джек Болдинг

правильно, я пропустил это на моем редактировании о x64. Отредактировано снова
gbn
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.