Недавно, чтобы защитить свой компьютер от будущего, я добавил к своей первоначальной памяти 4 ГБ. Я увеличил общую память до 8 ГБ, и у меня нет заметных изменений в скорости - даже когда это должно быть. Я заглянул в диспетчер задач и увидел, что мой компьютер НЕ будет использовать более 4 ГБ памяти, даже если открыты и Chrome, и Firefox с 20 вкладками в каждой.
После исследования все, что всем предлагалось сделать, это проверить, сколько памяти можно использовать. Как ни странно, там написано, что у меня 8 ГБ памяти, а 7,74 ГБ можно использовать.
Технические характеристики моего HP Pavilion g7-1075dx можно найти здесь. Это ноутбук с Windows 7 Home Premium 64-битный с AMD Phenom II.
Мой главный вопрос: на моем 64-битном компьютере почему мой компьютер не использует более 4 ГБ памяти, даже если используется более 7?
РЕДАКТИРОВАТЬ: если это помогает, Resource Monitor описывает все остальное ОЗУ как «Резервный»
Ответы:
«Standby» RAM находится в использовании. Он используется в качестве кеша страниц (он содержит страницы, недавно потерянные из всех рабочих наборов процессов; т. Е. Сбои страниц в них могут быть устранены без перехода на диск), а также для упреждающего кэширования файлов с помощью SuperFetch.
Он считается «доступным», поскольку резервные страницы не нужно записывать на диск, чтобы их можно было использовать для другого использования. Например, когда процесс сталкивается с ошибкой страницы, которая требует чтения с диска, этому физическому процессу должны быть выделены новые физические страницы, и при необходимости они могут быть взяты из списка ожидания. (Это не первый выбор для поиска страниц для этой цели, это будет бесплатный, а затем список нулевой страницы.)
Другими словами, ваша система работает так, как должна быть.
Вы можете заставить свою систему легко перевести ОЗУ в состояние «используется» с помощью инструмента командной строки
testlimit
, одного из инструментов, используемых в экспериментах в Windows Internals . Он не является частью обычных инструментов sysinternals, но связан с ними; найти его здесь на сайте sysinternals. Загружаемый файл представляет собой ZIP-файл, содержащий две версии: testlimit.exe и testlimit64.exe. Оба они связаны с поддержкой больших адресов, поэтому 32-разрядная версия сможет выделять до 3 ГБ на 32-разрядной машине, загруженной с / 3 ГБ, до 4 ГБ на 64-разрядной машине.c:\> testlimit -?
дает помощь.c:\> testlimit -d 4 -c 512
попытается выделить 2 ГиБ виртуального адресного пространства частного процесса в 512 распределениях по 4 МБ каждый. Это должно нормально работать на 64-битной машине. На 32-битной машине, не загруженной с / 3GB (большинство нет), это может привести к ошибке немного раньше, потому что в процессе уже есть несколько MiB вещей (например, сама программа, все библиотеки DLL и т. Д.), Поэтому для программы выделяется не совсем 2 ГиБ.В обоих случаях будет иметь место уменьшение «доступной» оперативной памяти и увеличение оперативной памяти «в использовании», но не обязательно на 2 ГБ, поскольку нет гарантии, что ОС оставит все 2 ГБ в частном рабочем наборе процесса. Даже если это произойдет в краткосрочной перспективе, вы можете заметить, что рабочий набор процесса уменьшится позже, когда ОС решит: «Хм, вы на самом деле ничего с этим не делаете, другим процессам это нужно больше» и выводит его на экран.
Слишком сильно увеличьте размер «чанков» выделения, соответственно сократив количество чанков, и скорее всего он потерпит неудачу раньше, поскольку каждое выделение должно быть практически непрерывным. Например, попробуйте найти семь блоков по 512 МБ в адресном пространстве 4 ГиБ, и вы, скорее всего, потерпите неудачу.
Если вы используете опцию l (eak) вместо d (irty), программа выделит виртуальное пространство, но никогда не будет ссылаться на него. Это не приведет к заметному уменьшению «доступной» оперативной памяти.
(Параметр d (irty) берет свое имя от «бита грязной страницы» в записи таблицы страниц x86 / x64, который устанавливается при обращении к соответствующей виртуальной странице с операндом в стиле «модифицировать»), что означает, что содержимое страницы имеет Это указывает Windows на то, что, если страница должна быть удалена из рабочего набора процесса, ее содержимое должно быть сохранено где-то перед тем, как страница может быть использована для чего-то другого. Страницы с установленным битом «грязный» переходят к «измененный список страниц» сразу после выселения, после чего Windows записывает их в соответствующие хранилища.)
Вам потребуется достаточное количество «коммитов», чтобы эти тесты работали, как описано выше (даже для опции l (eak), даже если эта опция не использует сколько-нибудь заметного объема ОЗУ). В частности, ваш «предел фиксации» должен быть как минимум на 2 ГиБ (или сколько вы выделяете) выше, чем «заряд фиксации» перед началом теста. Обратите внимание, что это применимо, даже если вы используете опцию l (eak), а не просто d (irty). Если вы достигнете этого предела, вы увидите всплывающие окна «системе не хватает памяти» или аналогичные. Конечно, лекарство состоит в том, чтобы добавить больше оперативной памяти и / или увеличить параметры файла подкачки.
источник
На самом деле Windows можно настроить для ограничения использования оперативной памяти. Я не знаю, как или кто настроил бы этот параметр на вашем ноутбуке, но вы должны проверить:
В этой статье есть больше деталей, но добраться до вышеупомянутого диалогового окна легко:
Нажмите значок «Пуск» и введите
msconfig.exe
в поле поискаЗапустите msconfig.exe, щелкните
Boot
вкладку, затем нажмитеAdvanced Options...
кнопку, и вы в:Либо введите разумное значение, например 8192 для 8 ГБ ОЗУ, либо полностью снимите
Maximum memory
флажок, который заставит Windows использовать всю имеющуюся оперативную память. Я бы определенно попробовал ОБА варианты.источник
Вы можете использовать SysInternals RAMMap, чтобы увидеть, что именно ПК делает с вашей физической оперативной памятью. Другие инструменты, такие как Диспетчер задач или Обозреватель процессов, в основном ориентированы на виртуальную память и не являются лучшими инструментами для этой ситуации.
На вкладке «Использовать счетчик» вы можете увидеть, что большие порции не используются, пока вы не открыли много приложений.
Это не означает, что ваш компьютер когда-либо останется в этом состоянии. Просто откройте несколько программ и память привыкнет.
источник
Цитата из очень хорошей статьи на эту тему:
И по моему опыту, это абсолютно верно, в общем. Если вы не запускаете много программ одновременно и эти программы имеют значительные требования к оперативной памяти, вы вряд ли увидите какую-либо реальную выгоду от наличия более 4 ГБ ОЗУ.
Люди, кажется, не понимают, что 4 ГБ - это чертовски много ОЗУ. Заставить Windows использовать больше, чем это требует усилий. Вам нужно будет открыть множество разных приложений и в этих приложениях открыть несколько больших файлов. Добавьте несколько вкладок видео на YouTube, и вы можете начать видеть> 4 ГБ использования.
источник
Windows делает некоторые умные вещи, такие как пейджинговая память. Может случиться так, что он считает большинство задач, которые вы выполняете, ненужными, и решает выгрузить кучу материала в файл подкачки, создавая впечатление, будто делает это просто для того, чтобы не использовать всю вашу оперативную память. Вы можете проверить эту теорию, отключив пейджинг, хотя это не то, что вы должны постоянно настраивать. В Интернете есть много учебников, чтобы сделать это. Одна из вещей, которую он делает (даже на моих машинах на 24 ГБ и 64 ГБ), - это сделать правила подкачки намного более строгими, когда потребление достигает приблизительно 50%, 80% и 90% (эти цифры являются приблизительными). Я заметил, что на каждом из этих этапов в файл подкачки загружается множество вещей.
Забавная вещь может быть что-то вроде этого:
Это некоторый C-код. Получите GCC или какой-нибудь компилятор, сделайте себе exe и наблюдайте, как увеличивается потребление памяти. Если вы хотите использовать более 2 ГБ памяти, вам нужно скомпилировать и запустить как 64-битный процесс. Если вам нравятся такие вещи, это может быть интересный эксперимент, если не больше :)
Изменить: Просто хотел отметить, что программа не умрет с этим. Я отредактировал его из некоторого предыдущего кода, так как я не уверен, что другой код сработал бы (память была бы разбита на страницы, в результате чего память не использовалась, смеется). Новый код содержит строку
int gb = 2; // memory to consume in GB
- изменение 2 отрегулирует объем памяти, который должна использовать программа, таким образом, вы можете настроить ее на использование столько, сколько вы хотите. Установка этого значения выше того, что есть в вашей системе, вероятно, приведет к сбою (не проверено, поэтому используйте с осторожностью)источник
int gb = 2; // memory to consume in GB
- просто измените 2.Используете ли вы 32-разрядную программу для проверки скорости работы компьютера? Если это так, обратите внимание, что 32-разрядные адреса могут указывать только на 4 ГБ ОЗУ, даже если у вас есть больше ОЗУ. Вам нужно будет повторить тест с использованием 64-битной программы и проверить ее скорость при наличии 4 ГБ ОЗУ и еще раз при наличии 8 ГБ ОЗУ, если вы хотите получить полезные результаты. Кроме того, это должна быть 64-разрядная программа, которая может использовать более 4 ГБ памяти для более быстрой работы - не все из них могут. Чтобы определить, является ли программа 32-разрядной, запустите ее и оставьте ее работающей, затем запустите диспетчер задач Windows, нажмите «Процессы» и прокрутите вниз, пока не найдете нужную программу. Если за именем программы в столбце «Имя изображения» следует пробел, то * 32, тогда это 32-битная программа.
источник
Получите проводник процессов (procxp) от Sysinternals . Он имеет график ресурсов и может отображать использование памяти для каждого процесса, намного лучше, чем представление стандартного процесса.
Вы можете посмотреть на физическое использование оперативной памяти по сравнению с использованием виртуального spqce, чтобы убедиться, что вы просто не используете все это или вам кажется, что вам нужно больше, но вы ограничиваете физическое использование.
Большинство обычных программ используют другой размер рабочего набора, который будет поддерживать низкий спрос. Если программа выделяет тонну памяти, она на самом деле не использует все это одновременно ...
Windows будет агрессивно перемещать страницы из вашей программы в список, где они доступны, но если произойдет сбой страницы, он будет удален из списка без необходимости загружать его из файла подкачки. В режиме ожидания может быть в том числе и эти. Различные инструменты по-разному маркируют разные наборы.
Вы можете попробовать отключить файл подкачки, по крайней мере, для этого теста. Это приведет к реальному использованию памяти данных. Хотя может быть достаточно procxp, чтобы это ясно увидеть.
источник