Компьютер не использует более 4 из 8 ГБ ОЗУ ...? (64-битный компьютер)

17

Недавно, чтобы защитить свой компьютер от будущего, я добавил к своей первоначальной памяти 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 описывает все остальное ОЗУ как «Резервный»

mattycfp
источник
1
Как вы можете увидеть, что он не использует более 4 ГБ? Вы пробовали другие мои программы для тестирования или использования памяти? Chrome и Firefox не так требовательны к памяти ...
Mokubai
9
Пока никто не упомянул, что увеличение оперативной памяти само по себе не делает компьютер быстрее. Единственный раз, когда вы заметите заметное снижение скорости, это если ваша рабочая нагрузка потребляет столько ОЗУ, что Windows необходимо непрерывно перелистывать страницы на диск - в этом случае добавление большего объема ОЗУ определенно может ускорить процесс. Но 98% людей не занимаются тем, что требует> 4 ГБ ОЗУ, и, следовательно, никогда не получат ощутимой выгоды от наличия всей этой дополнительной ОЗУ.
misha256
1
@mattycfp Есть еще одна известная мне возможность, которая может ограничить использование оперативной памяти Windows. Возможно ли, что вы, кто-то еще или какое-либо программное обеспечение ограничивает использование ОЗУ?
Ознакомьтесь с
1
Firefox имеет ограничение в 2 ГБ для всех вкладок / процессов, и Chrome тоже. Это в дополнение к нормальному ограничению на процесс.
Джеймс Райан
6
Firefox и Chrome открыты с 20 вкладками, определенно недостаточно. У меня открыт Firefox с 157 вкладками, он даже не потребляет 1 ГБ оперативной памяти. Проверьте во время запуска игр. Ответ Джейми Ханрахана очень хороший и подробный. Для получения дополнительной информации читайте сообщение в блоге Марка Руссиновича «Расширяя границы Windows». ссылка .
sbecker

Ответы:

27

если это помогает, 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). Если вы достигнете этого предела, вы увидите всплывающие окна «системе не хватает памяти» или аналогичные. Конечно, лекарство состоит в том, чтобы добавить больше оперативной памяти и / или увеличить параметры файла подкачки.

Джейми Ханрахан
источник
15

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

Max Ram Setting

В этой статье есть больше деталей, но добраться до вышеупомянутого диалогового окна легко:

  1. Нажмите значок «Пуск» и введите msconfig.exeв поле поиска

    как запустить msconfig

  2. Запустите msconfig.exe, щелкните Bootвкладку, затем нажмите Advanced Options...кнопку, и вы в:

    msconfig диалог настроек загрузки

  3. Либо введите разумное значение, например 8192 для 8 ГБ ОЗУ, либо полностью снимите Maximum memoryфлажок, который заставит Windows использовать всю имеющуюся оперативную память. Я бы определенно попробовал ОБА варианты.

    максимальная установка оперативной памяти

misha256
источник
@ misha256 - Глубоко смущенный ответом, который изначально содержал очень мало контента, и да, если бы кто-то еще отправил один из ответов, я бы даже дважды не подумал об ответах (за исключением, может быть, оценки их полезности несколько жестче).
Ramhound
@ misha256, если бы это была проблема, то OP не видел бы около 4 ГБ в использовании и еще около 4 ГБ в режиме ожидания. ОЗУ, исключаемое этой опцией, не отображается в режиме ожидания; OP также не будет видеть «8 ГБ памяти, а 7,74 ГБ можно использовать». (256 МБ не «пригодно для использования» ожидается, например, из-за видеокарты).
Джейми Ханрахан
10

Вы можете использовать SysInternals RAMMap, чтобы увидеть, что именно ПК делает с вашей физической оперативной памятью. Другие инструменты, такие как Диспетчер задач или Обозреватель процессов, в основном ориентированы на виртуальную память и не являются лучшими инструментами для этой ситуации.

На вкладке «Использовать счетчик» вы можете увидеть, что большие порции не используются, пока вы не открыли много приложений.

SysInternals RAMMap

Это не означает, что ваш компьютер когда-либо останется в этом состоянии. Просто откройте несколько программ и память привыкнет.

Томас Веллер
источник
Термин «виртуальная оперативная память» не должен использоваться. Кроме того, я бы не сказал, что эти другие инструменты ориентированы в основном на виртуальную память - у них есть много доступных счетчиков, которые показывают использование физической памяти.
Джейми Ханрахан
5

Цитата из очень хорошей статьи на эту тему:

Больше памяти на самом деле не увеличивает скорость обработки [компьютера]. Только более быстрый процессор может сделать это.

И по моему опыту, это абсолютно верно, в общем. Если вы не запускаете много программ одновременно и эти программы имеют значительные требования к оперативной памяти, вы вряд ли увидите какую-либо реальную выгоду от наличия более 4 ГБ ОЗУ.

Люди, кажется, не понимают, что 4 ГБ - это чертовски много ОЗУ. Заставить Windows использовать больше, чем это требует усилий. Вам нужно будет открыть множество разных приложений и в этих приложениях открыть несколько больших файлов. Добавьте несколько вкладок видео на YouTube, и вы можете начать видеть> 4 ГБ использования.

misha256
источник
2
@mattycfp Я только что открыл 16 Windows на своем компьютере с 4 ГБ, включая Internet Explorer, Firefox, Word, Excel, Outlook, Skype, Visual Studio 2010 (известная проблема с оперативной памятью), Photoshop, Media Player, VLC, MPC-HC, плюс некоторые другие случайные приложения, и я переключаюсь между ними, занимающимися чем-то, загрузкой документов, воспроизведением видео, всем, и мое фактическое использование оперативной памяти составляет 2,2 ГБ И машина БЫСТРАЯ, как и прежде. Видите ли, 4GB делает все так просто ;-)
misha256
3
@mattycfp 120 Windows FF? При этом вы, скорее всего, максимально используете свой ЦП, а не ОЗУ, особенно на ноутбуке. Также не забывайте, что FF - это 32-разрядное приложение, и несколько окон FF фактически совместно используют один 32-разрядный процесс, поэтому FF на самом деле довольно ограничен, он может использовать только 2 ГБ из ваших 8 ГБ. Вот почему вам нужно запускать множество различных приложений одновременно, чтобы проверить, как Windows использует вашу оперативную память, а не только 120 Windows FF.
misha256
4
@ misha256 Вы будете видеть прирост производительности , если ваша система постоянно обменивать память. По мере увеличения нагрузки на память увеличивается подкачка страниц, и система замедляется. Дело не в том, что добавление памяти заставит вас работать быстрее, но не даст вам замедлиться, особенно если задействованное программное обеспечение предполагает определенное количество страниц в своих системных требованиях. Эта статья, кажется, не упоминала много о подкачке страниц. Пейджинг - это то, что замедляет вас.
phyrfox
4
@ misha256 У меня открыты IRC, Spotify, Notepad ++, Chrome и диспетчер задач, и я использую 3,02 ГБ из моих общих 4 ГБ :( Открываю 3 экземпляра VS2013 (что я обычно делаю на работе), и это меня не устраивает. Это немного легче достичь предела 4 ГБ, чем вы думаете, но практически требуется
опытный
1
@ misha256 Исправление: FF поддерживает большие адреса и может обрабатывать до 3 ГБ в 32-разрядном процессе. 64-разрядная версия FF (в настоящее время находится в бета-версии для Windows), очевидно, может адресовать гораздо больше. Я также чувствую, что вы слишком много обобщаете, когда говорите, что трудно «использовать» (резидентный частный рабочий набор) более 4 ГБ ОЗУ; это действительно зависит от того, что вы делаете и сколько вы держите открытым. Мое базовое использование уже превышает это.
Боб
5

Windows делает некоторые умные вещи, такие как пейджинговая память. Может случиться так, что он считает большинство задач, которые вы выполняете, ненужными, и решает выгрузить кучу материала в файл подкачки, создавая впечатление, будто делает это просто для того, чтобы не использовать всю вашу оперативную память. Вы можете проверить эту теорию, отключив пейджинг, хотя это не то, что вы должны постоянно настраивать. В Интернете есть много учебников, чтобы сделать это. Одна из вещей, которую он делает (даже на моих машинах на 24 ГБ и 64 ГБ), - это сделать правила подкачки намного более строгими, когда потребление достигает приблизительно 50%, 80% и 90% (эти цифры являются приблизительными). Я заметил, что на каждом из этих этапов в файл подкачки загружается множество вещей.

Забавная вещь может быть что-то вроде этого:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define PAGE_SZ (1<<12)

int main() {
    int i;
    int gb = 2; // memory to consume in GB

    for (i = 0; i < ((unsigned long)gb<<30)/PAGE_SZ ; ++i) {
        void *m = malloc(PAGE_SZ);
        if (!m)
            break;
        memset(m, 0, 1);
    }
    printf("allocated %lu MB\n", ((unsigned long)i*PAGE_SZ)>>20);
    getchar();
    return 0;
}

Это некоторый C-код. Получите GCC или какой-нибудь компилятор, сделайте себе exe и наблюдайте, как увеличивается потребление памяти. Если вы хотите использовать более 2 ГБ памяти, вам нужно скомпилировать и запустить как 64-битный процесс. Если вам нравятся такие вещи, это может быть интересный эксперимент, если не больше :)

Изменить: Просто хотел отметить, что программа не умрет с этим. Я отредактировал его из некоторого предыдущего кода, так как я не уверен, что другой код сработал бы (память была бы разбита на страницы, в результате чего память не использовалась, смеется). Новый код содержит строку int gb = 2; // memory to consume in GB- изменение 2 отрегулирует объем памяти, который должна использовать программа, таким образом, вы можете настроить ее на использование столько, сколько вы хотите. Установка этого значения выше того, что есть в вашей системе, вероятно, приведет к сбою (не проверено, поэтому используйте с осторожностью)

XtrmJosh
источник
Я хотел бы скомпилировать его, но мой интернет продолжает
портить
5
@mattycfp Таким образом, вы не можете использовать> 4 ГБ ОЗУ в вашей ОС, и все ваши загрузки продолжают портиться? Пора (а) протереть жесткий диск и выполнить новую установку ОС, или (б) выбросить ноутбук в мусорное ведро и уже получить нужный.
misha256
1
Предложенная программа выделяет и «затрагивает» 2 ГБ виртуальной памяти, по одной странице за раз, что приведет к тому, что каждая страница будет перенесена в ОЗУ сразу после ее выделения. Но это не гарантирует, что Windows будет хранить все это в оперативной памяти одновременно. Поскольку программа не имеет постоянного доступа ко всем vm, страницы, выделенные первыми, могут быть выгружены. Вы можете получить тот же эффект, что и эта программа, с помощью средства Windows Internals «testlimit», опция -d.
Джейми Ханрахан
@mattycfp, если это так, вы, возможно, захотите убедиться, что ОЗУ не виновато ... Каждый загружаемый файл как-то поврежден? Иногда также возникают проблемы с несовместимыми флешками, поэтому вы должны проверить руководство по материнской плате и убедиться, что ваша RAM организована в соответствии с этими инструкциями (слоты будут иметь номера 1 и 2 или 1-4, и обычно 1 и 3 должны быть в паре с тот же «тип» или «марка и модель» ОЗУ, что и 2 и 4). & Да, эта программа должна занимать 2 ГБ, которую можно редактировать, изменив строку int gb = 2; // memory to consume in GB- просто измените 2.
XtrmJosh
Почему вы объявили, что gb имеет тип int, когда единственное использование приводит его к unsigned long? Вы также относитесь ко мне так же и делаете смешанное сравнение между int и cast-to unsigned. Так что просто сделай я без подписи, тоже.
JDługosz
1

Используете ли вы 32-разрядную программу для проверки скорости работы компьютера? Если это так, обратите внимание, что 32-разрядные адреса могут указывать только на 4 ГБ ОЗУ, даже если у вас есть больше ОЗУ. Вам нужно будет повторить тест с использованием 64-битной программы и проверить ее скорость при наличии 4 ГБ ОЗУ и еще раз при наличии 8 ГБ ОЗУ, если вы хотите получить полезные результаты. Кроме того, это должна быть 64-разрядная программа, которая может использовать более 4 ГБ памяти для более быстрой работы - не все из них могут. Чтобы определить, является ли программа 32-разрядной, запустите ее и оставьте ее работающей, затем запустите диспетчер задач Windows, нажмите «Процессы» и прокрутите вниз, пока не найдете нужную программу. Если за именем программы в столбце «Имя изображения» следует пробел, то * 32, тогда это 32-битная программа.

milesrf
источник
если вы запускаете несколько 32-битных программ, их общее использование ОЗУ может легко достигнуть 8 ГБ.
Джейми Ханрахан
0

Получите проводник процессов (procxp) от Sysinternals . Он имеет график ресурсов и может отображать использование памяти для каждого процесса, намного лучше, чем представление стандартного процесса.

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

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

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

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

JDługosz
источник