В чем опасность ручной настройки IncreaseUserVA?

Я запускаю visual studio 2010 в 32-битной системе и регулярно сталкиваюсь с проблемами с нехваткой виртуальной памяти, поэтому я больше не могу делать такие вещи, как копирование / вставка в VS.

Я проверил несколько вариантов и Microsoft line на этом указано выполнение с меньшим количеством открытых расширений, и если это не сработало, используйте команду bcedit /set IncreaseUserVA 3072.

Это, похоже, смягчило проблему, однако примерно через день использования внезапно запускается windows говорит мне, что у меня нет места на диске - на диске с более чем 100 ГБ. Например, он перестанет копировать файл, сказав, что для его копирования нет места. Однако нажатие кнопки "повторить" будет успешным. Многие другие программы, которые записывали что-то на диск, регулярно падали. (В Том Числе Skype...Почему ты все время писал на диск, скайп?!)

Я запустил chkdsk и сделал другие основные проверки, прежде чем сделать вывод, что мое изменение конфигурации должно быть ответственным. К счастью, восстановление по умолчанию работал и теперь я снова в действии.

большинство статей (за исключением, в частности, Microsoft) на IncreaseUserVA говорят "используйте на свой страх и риск", и явно я это сделал, и проиграл. Но может ли кто-нибудь объяснить, почему это поведение было показано / что может пойти не так с тем, что кажется законным изменением конфигурации Windows 7?

для записи-машина была ноутбуком dell Vostro с дисководом 260gb / 5400rpm, 3,2 ГБ (эффективной) оперативной памяти, под управлением Windows 7 со всеми обновления до SP1.

3 ответа:

Windows делит доступное 4 ГБ адресного пространства на 32-битной системе пополам, так что ядро получает 2 ГБ, а программа получает 2 ГБ (его виртуализация, поэтому каждая программа получает 2 ГБ). Команда "bcedit / set IncreaseUserVA 3072" изменяет секционирование таким образом, что каждая программа получает 3 ГБ, а пространство ядра-только 1 ГБ. В основном это работает нормально, но, как вы заметили, вы можете столкнуться с проблемами. Обычно это какой-то драйвер, который работает в пространстве ядра, который был жестко закодирован, чтобы предположить, что он имеет 2 ГБ адреса доступное пространство, которое вызывает проблемы при попытке использовать 2 ГБ адресного пространства, не потрудившись проверить, может ли он.

Если у вас 8 ГБ оперативной памяти и вам нужно больше адресного пространства пользователя, лучшим решением является установка Windows 2003 server. Никаких настроек не требуется,и ваши 32-разрядные приложения получают по 4 ГБ адресного пространства. Есть некоторые драйверы, которым это не нравится, и именно поэтому MS не включает это на настольной ОС. Сбои, вызванные наличием драйвера, который не поддерживает это непредсказуемы и трудно диагностировать и в основном в драйверах, которые не используются в серверной среде.

Это можно изменить ядро Vista / Win7 и добавить эту опцию в меню загрузки, чтобы получить ту же память, что и в 32-разрядных версиях сервера:

www.geoffchappell.com/notes/windows/license/memory.htm

есть готовый патч, который делает эти вещи, но я не тестировал его, и нет никакого источника к нему ...

я устанавливал IncreaseUserVa в некоторых случаях для 3g, чтобы получить большой проект для компиляции. Я замечаю, что если система переходит в спящий режим, она становится очень нестабильной после пробуждения. Серверы обычно не спят, я думаю.