Выделено больше оперативной памяти чем есть
Не доверяйте информации о памяти в Диспетчере задач
tl;dr: Диспетчер задач скрывает информацию о подкачке (paged memory) и виртуальном пространстве процесса. Лучше используйте Process Explorer из комплекта Sysinternals.
Выделение памяти в Windows
При запуске нового процесса ОС присваивает этому процессу непрерывное адресное пространство. В 32-разрядных системах это пространство может составить 4 ГБ, обычно 2 ГБ для ядра, а остальное для процесса. В этой статье проигнорируем использование памяти ядром. В 64-разрядных системах зарезервированная процессом память может вырасти до колоссальных 64 ТБ. Что этот процесс будет делать с несколькими терабайтами памяти, когда у нас на самом деле жалкие 8 ГБ? Сначала нужно понять, что такое зарезервированная и переданная память.
Зарезервированная и переданная память
Не все части этого огромного адресного пространства равны. Некоторые части адресного пространства процесса фактически поддерживаются либо физической оперативной памятью, либо диском (см. ниже). Зарезервированная память считается переданной (Committed), если ОС предлагает вам эту память при попытке её использовать. Остальная часть адресного пространства, а это подавляющее большинство, остаётся доступным для резервирования. То есть не всегда ОС может предложить вам этот блок памяти для использования: она может сделать копию на диске (файл подкачки), например, а может и не сделать. В C++ резервирование памяти осуществляется вызовом VirtualAlloc. Так что переданная память является аппаратно ограниченным ресурсом в ОС. Давайте посмотрим.
Файл подкачки ОС
Файл подкачки — замечательная идея. В принципе, ОС понимает, что некоторые части памяти особо не используются вашим приложением. Зачем тратить на него реальную физическую память? Вместо этого процесс в ядре записывает этот неиспользуемый фрагмент на диск. Пока к нему не обратятся снова, только тогда он вернётся в память.
Для более подробного объяснения, как работает память в Windows, рекомендую лекцию «Тайны управления памятью» Марка Руссиновича.
Отслеживание памяти
Здесь много за чем нужно следить и анализировать. К кому обратиться? Конечно, к Диспетчеру задач!
Память в RAM обычно называют рабочим набором (Working Set), в то время как всю выделенную память обычно именуют Private Bytes. Библиотеки DLL вносят путаницу в определения, поэтому пока их проигнорируем. Иначе говоря:
Private Bytes [выделенная память] = рабочий набор + файл подкачки
По умолчанию Диспетчер задач показывает для любого процесса именно рабочий набор:
Диспетчер задач позволяет добавить информацию о переданной памяти, если щёлкнуть правой кнопкой мыши по столбцам и выбрать соответствующий пункт
Эффективные метрики памяти
К счастью, есть много других ресурсов для отслеживания ресурсов. На каждой машине под Windows установлен PerfMon (Системный монитор), который выдаёт очень подробную информацию о каждом процессе и системе в целом:
Интересно, что Системный монитор умеет фактически исследовать и сравнивать метрики на двух или более компьютерах в сети. Это очень мощный инструмент, но Диспетчер задач, очевидно, удобнее для пользователей. В качестве промежуточного решения рекомендую Process Explorer:
Бум! Visual Studio, чего это ты до сих пор в 32-битном режиме (обратите внимание на его Virtual Size)? Пиковое использование памяти на моём компьютере на уровне 89% от максимума, ещё терпимо. Это пригодится позже.
Дополнение: многие указали на другие удобные инструменты, в том числе VMMap и RAMMap.
Отладка по информации о памяти
К счастью, это не какие-то ненужные мелочи ОС. Актуальная информация о потреблении памяти многократно помогала мне в отладке разных проблем.
Самое главное, это найти нетронутые части выделенной памяти. Данные о подкачке тоже важны: эта память передана, но используется редко или вообще не используется.
Даже если память будет иногда использоваться, важно понимать, что это дорогой ресурс, так что идти по такому пути ни в коем случае нельзя. Здесь появятся и утечки памяти.
По этим причинам я ранее слышал предложение полностью удалить файл подкачки и приравнять выделенную память рабочему набору. Однако это обоюдоострая идея. Тогда ОС не в состоянии сбросить память в случае неправильной работы приложений, которые иногда впустую резервируют память.
На компьютерах с Windows 7 объем доступной памяти может быть меньше, чем объем установленной
Проблема
На компьютере с ОС Windows 7 объем доступной памяти (ОЗУ) может быть меньше, чем объем установленной.
Например, 32-разрядная версия Windows 7 может сообщать, что на компьютере с установленным объемом памяти в 4 ГБ доступно только 3,5 ГБ системной памяти.
Другой пример: 64-разрядная версия Windows 7 может сообщать, что на компьютере с установленным объемом памяти в 8 ГБ доступно только 7,1 ГБ системной памяти.
Примечание. Указанные в примерах объемы доступной памяти не являются точными. Объем доступной памяти вычисляется путем вычитания объема зарезервированной оборудованием памяти из общего объема физической памяти.
Чтобы узнать объемы установленной и доступной памяти в Windows 7, выполните следующие действия.
Нажмите кнопку Пуск , щелкните правой кнопкой мыши значок Компьютер, затем выберите пункт Свойства.
Обратите внимание на значение, указанное в поле Установленная память (ОЗУ) раздела Система. Например, если там указано 4,00 ГБ (3,5 ГБ свободно), это значит, что из 4 ГБ установленной памяти доступно 3,5 ГБ.
Причина
Это предусмотренная ситуация, возникающая на компьютерах с ОС Windows 7. То, насколько сократится объем доступной системной памяти, зависит от ряда факторов:
Установленных на компьютере устройств и памяти, зарезервированной ими.
Способности системной платы к обработке памяти.
Версии и конфигурации BIOS системы.
Установленной версии Windows 7 (например, ОС Windows 7 Начальная поддерживает только 2 ГБ установленной памяти).
Других параметров системы.
Например, при наличии видеоадаптера с 256 МБ собственной памяти эта память должна отображаться в первых 4 ГБ адресного пространства. Если на компьютере уже установлено 4 ГБ системной памяти, часть адресного пространства должна быть зарезервирована для отображения памяти видеоадаптера. Для отображения памяти видеоадаптера используется часть системной памяти. В результате общий объем системной памяти, доступной операционной системе, сокращается.
Дополнительные сведения о том, как определить, каким образом на компьютере используется память, см. в подразделе «Выделение физической памяти в Windows 7» раздела «Дополнительные сведения».
Что попробовать предпринять
Существует еще несколько ситуаций, при которых объем доступной оперативной памяти меньше ожидаемого. Далее перечислены проблемы и их возможные решения.
Проверьте параметры конфигурации системы
Эта проблема может возникнуть, если по ошибке был выбран параметр Максимум памяти. Чтобы его отключить, выполните следующие действия:
Нажмите кнопку Пуск , введите запрос msconfig в поле Найти программы и файлы, затем выберите пункт msconfig в списке Программы.
В окне Конфигурация системы нажмите Дополнительные параметры на вкладке Загрузка.
Снимите флажок Максимум памяти и нажмите кнопку OK.
Обновление BIOS системы
Проблема может возникнуть, если на компьютере установлена BIOS устаревшей версии. При использовании устаревшего компьютера система может не иметь возможности получить доступ ко всей установленной оперативной памяти. В таком случае нужно обновить BIOS системы до последней версии.
Чтобы обновить BIOS на компьютере, посетите веб-сайт производителя компьютера и загрузите обновление BIOS. Или обращайтесь за помощью к производителю компьютера.
Проверка параметров настройки BIOS
Проблема может возникнуть из-за неправильных настроек некоторых параметров BIOS.
Включение перераспределения памяти
Проверьте, включено ли перераспределение памяти в параметрах BIOS. Перераспределение памяти дает Windows доступ к большему объему памяти. Перераспределение памяти можно включить в BIOS, вызвав меню BIOS при загрузке. Чтобы узнать, как вызвать это меню, см. руководство пользователя, поставляемое с компьютером. Точное название функции перераспределения памяти зависит от поставщика оборудования. Она может называться «перераспределение памяти», «расширение памяти» или иметь другое схожее название. Следует иметь в виду, что ваш компьютер может не поддерживать перераспределение памяти.
Изменение размера видеоапертуры AGP в параметрах BIOS
Просмотрите параметры BIOS и узнайте, сколько памяти выделено для видеоапертуры AGP. Это объем памяти, который система делит с видеоадаптером, используемым для отображения текстур и отрисовки. Данный объем памяти не будет использоваться системой, так как он заблокирован видеоадаптером. Размер видеоапертуры AGP можно настроить в параметрах BIOS. Стандартные значения: «32 МБ», «64 МБ», «128 МБ» и «Авто». После изменения этого параметра в BIOS перезагрузите компьютер, а затем проверьте объем доступной памяти. Можно попробовать применить каждый из параметров, чтобы посмотреть, какой из них даст лучший результат.
Проверка возможных проблем с установленными модулями памяти
Проблема может возникнуть из-за неполадок в установленных физических модулях памяти.
Проверка на наличие поврежденных модулей памяти
Чтобы проверить ПК на наличие этой проблемы, выключите компьютер, отключите его от сети, а затем поменяйте местами модули памяти.
Проверка расположения модулей памяти
Чтобы определить, в каком порядке модули памяти должны быть установлены в гнезда, см. руководство пользователя, поставляемое с компьютером. Если вы не используете все гнезда для модулей памяти, может требоваться использовать строго определенные. Например, в компьютере есть четыре гнезда для модулей памяти. Возможно, потребуется задействовать гнездо 1 и гнездо 3, если вы хотите установить только два модуля.
Используются ли платы-концентраторы для модулей памяти?
Если вы используете плату-концентратор для модулей памяти (плату, в которую можно установить несколько модулей памяти и которая при этом устанавливается в одно гнездо для модуля памяти), может потребоваться дополнительная настройка системы. И объем доступной памяти может быть меньше, чем ожидалось.
Дополнительная информация
В следующих разделах приведены дополнительные сведения об указанном в мониторе ресурсов выделении памяти, описываются используемые термины, а также дана дополнительная информация об учете памяти и ее ограничениях в Windows 7.
В следующей таблице указано, на какие категории монитор ресурсов распределяет память, установленную на компьютере с операционной системой Windows 7.
Память, зарезервированная для использования BIOS и некоторыми драйверами других периферийных устройств.
Память, используемая процессами, драйверами или операционной системой.
Память, содержимое которой должно быть перемещено на диск перед использованием по другому назначению.
Память, содержащая неиспользуемые кэшированные данные и код.
Память, не содержащая никаких важных данных. Именно она будет использоваться в первую очередь, если процессам, драйверам или операционной системе потребуется больший объем памяти.
Примечание. Чтобы узнать, каким образом распределена установленная память в Windows 7, выполните следующие действия.
Нажмите кнопку Пуск , введите запрос монитор ресурсов в поле Найти программы и файлы, затем выберите пункт Монитор ресурсов в списке Программы.
Перейдите на вкладку Память и просмотрите раздел Физическая память внизу страницы.
Состояние памяти в Windows 7
В следующей таблице даются определения состояниям установленной на компьютере с Windows 7 памяти, указанным в мониторе ресурсов.
Объем памяти (включая зарезервированную и свободную память), доступный для использования процессами, драйверами и операционной системой.
Объем памяти (включая зарезервированную и измененную память), содержащий кэшированные данные и код для быстрого доступа со стороны процессов, драйверов и операционной системы.
Объем физической памяти, доступной операционной системе, драйверам устройств и процессам.
Объем физической памяти, установленной на компьютере.
Учет памяти в Windows 7
В Windows 7 ведется учет объема физической памяти, установленной на компьютере. Операционные системы на основе Windows NT до Windows Vista с пакетом обновления 1 (SP1) сообщают об объеме памяти, доступной операционной системе. Учитываемый объем памяти в более ранних версиях Windows не включает в себя память, зарезервированную оборудованием. Это изменение связано только с учетом.
В Windows Vista с пакетом обновления 1 (SP1) и более поздних версиях Windows вы заметите изменения в учете памяти в следующих местах:
Значение ОЗУ в Центре начальной настройки
Значение Памяти в нижней части окна «Мой компьютер»
Значение Память в окне «Свойства системы»
Значение Суммарный объем системной памяти на странице Отображение и печать подробных сведений элемента Информация и средства производительности на Панели управления
Кроме того, компонент «Сведения о системе» (Msinfo32.exe) выводит на экран следующие записи на странице Сводные сведения о системе:
установленная физическая память (ОЗУ);
полный объем физической памяти;
доступная физическая память.
Учет памяти в следующих средствах диагностики не изменился:
Вкладка Производительность в диспетчере задач
Если объем физически установленной на компьютере оперативной памяти равен объему адресного пространства, поддерживаемому набором микросхем, общий объем системной памяти, доступной операционной системе, будет всегда меньше объема физической памяти.
Предположим, что в компьютере используется набор микросхем Intel 975X, поддерживающий 8 ГБ адресного пространства. Если установить 8 ГБ ОЗУ, объем системной памяти, доступной операционной системе, сократится из-за памяти, необходимой для конфигурации шины PCI. В данном случае для конфигурации шины PCI потребуется примерно от 200 МБ до 1 ГБ памяти, и именно на эту величину сократится объем памяти, доступный операционной системе. Реальный объем доступной памяти зависит от конфигурации.
Ограничения физической памяти в Windows 7
В следующей таблице указаны ограничения, распространяющиеся на объем физической памяти в различных версиях Windows 7.
Мониторинг физической против значения выделенной памяти
Доброго времени суток! Текущий блог я бы хотел посветить цифрам потребления оперативной памяти и немного рассказать о вариантах мониторинга и различиях в потреблении.
Натолкнул меня на эту мысль мой хороший коллега под ником М., у которого я так же обнаружил некорректные цифры потребления оперативной памяти. Да, они часто встречаются в видео и комментариях, где ребята тщетно пытаются выяснить у кого больше FPS и, в частности, показать работоспособность данной игры на конкретно выбранном компьютере. Но ровно как FPS, без показателей минимальных значений 0.1/1, времени кадра и максимального значение, это всего лишь среднее значение в данный момент, так и потребление озу, в варианте «физической», цифра, что не отражает реального потребления оперативной памяти всех процессов. Да да, у нас есть две цифры на выбор в программах и даже в диспетчере задач, в разделе «производительность» и вкладке «память», есть используемая (сжатая) и выделенная. Обратите внимание, что эти цифры отличаются, при том выделенная заметно больше. Сразу скажу, что в силу своего непрофессионализма данной области, блог будет иметь характер, с точки зрения простого пользователя.
Итак, в английском языке «выделенная память» в windows 10 называется commit charge (в диспетчере задач просто committed). Если интересует подробности данного термина и его характеристика, то вы теперь всегда можете узнать больше в интернете. Однако здесь, я попробую вкратце охарактеризовать простыми словами. Конечно этот параметр можно найти, к примеру в MSI Afterburner, сразу под строчкой Загрузка ОЗУ (RAM Usage) и в HWiNFO, части сенсоров, подраздела System: X System Product Name, где X название ваше материнской платы, а сама строчка Virual memory Committed и Virual memory Available, т.е. занятая и свободная виртуальная память (всё верно, виртуальная или выделенная память). Стоит внести ясность, что если у вас есть файл подкачки, то это значение будет просуммировано с объёмом вашей оперативной памяти.
Итак, к цифрам. Начнём с наиболее яркого примера – RDR2, где в моём бенчмарке указано 18 Гб потребления оперативной памяти. Чего не скажешь о моём коллеге М. (скриншот), где только 9,6 Гб, зато яркая строчка DDR4 – 32Gb (4000MHz).
Зачем там 32 Гб, если потребление не больше 10-ти? И можно подумать, что я специально излишне нагружаю оперативную память бразуером с 300 вкладками. Последнее опровергается просто – в конце видео (ниже под спойлером) продемонстрирован диспетчер задач, в том числе видно время работы ПК и вкладка памяти – используется (сжатая), которая соответствует 10,5 Гб и выделено уже 18Гб. Да, значение используемой память похоже на значение со скриншота товарища М. Выделенная больше физической всегда, и об этом дальше.
Стоит напомнить, что файл подкачки (ФП) служит для расширения оперативной памяти, т.е. используется при её нехватке. Система может отправлять неактивные или свёрнутые программы в ФП, так у меня как то оказалась Far Cry: New Dawn там. В моём случае 18 Гб превратятся 16 в оперативной и 2 Гб занято в ФП. Хотя нет, сейчас у меня 32Гб (2х16) и отключенный ФП, а значит всё в оперативной памяти. Проблем с этим нет вот уже многие годы. А это значит, если у тебя 16 Гб (или меньше), то отключать его не стоит, поскольку при неправильном мониторинге (выбранной загрузка озу или мониторинг физической памяти), в данной игре будет вылет с последующим сообщением о нехватке памяти, и удивлённым, вопрошающим лицом – «почему же при 10 Гб потребления ОЗУ в RDR2 у меня нехватка памяти?». Наконец перейдём к определению и всё что я нашёл о выделенной памяти и причинах, почему данное значение больше.
Как гласит сайт майкрософт, выделенная (так же виртуальная) – максимально доступная память, включающая все файлы подкачки, которую система может поддерживать. Если это значение достигает предела, система и процессы могут не получить выделенную память. Это состояние может вызвать зависание, сбой и другие неисправности.
Попросту это виртуальное адресное пространство частного процесса, часть которого может находится как в ОЗУ, так и файле подкачки. Так существуют и неиспользуемые, выделенные, области для будущих обращений программ. Поэтому это значение больше, чем физическая (используемая). Т.е. по сути, это место зарезервировано операционной системой под кэш, драйвера, программу и т.д. Не забывайте, что очистку кэша можно произвести и такой программой, как Empty tandbyList, прописав её в планировщик заданий. В итоге, когда запускаешь windows, то уже увидишь порядка 4 Гб в ОЗУ реально занятного пространства, а спустя, условно, часов 5 порядка 5-6 Гб. И совсем необязательно это строго область файла подкачки (пространство в HDD/SSD). Личное наблюдение в течении суток (и более при системе 32 и 16 Гб) показало, что у меня был занят в простое файл подкачки порядка 50 мегабайт, максимум 300. Сам файл подкачки «по выбору системы» и объём автоматически увеличивался, по мере необходимости. При фиксации 2Гб (наличии планок 8+8) вылетела ошибка нехватки, т.к. объём перевалил уже за 18Гб. Для меня наиболее ярким примером являются вышеупомянутая RDR2, а так же ARK, Tom Clancy’s The Division 2, Horizon Zero Dawn К последним играм, прогулявшись по youtube, я даже нашёл пару роликов, где кто-то всё же догадался добавить верные значения потребления ОЗУ. Не забывайте, что игра кэширует данные в оперативную память, и всего да 10 минут в игре можно потерять порядка 2Гб уже, легко. За 2 часа игры в ARK я терял 6Гб (к доступных 16 ОЗУ + файл подкачки), а начиналось всё с 14.
Приходим к выводу, что большинство роликов, хоть здесь, хоть на youtube, и конечно комментарии, связанные с величиной FPS (и всё?), а тем более потреблением ОЗУ, с красивыми цифрами, как у моего коллеги М., это видео, которые не несут большой ценности, элементарно из-за озу, просто вводят в заблуждение. Отслеживайте правильно, отмечая верные значения, если хотите показать действительную картину работу и оптимизацию на конкретно твоей конфигурации пк. Это будет хороший пример и приятное зрелище.
Грамотные и приятные комментарии по делу, критика, всегда приветствуется. Всем спасибо!
Выделено больше оперативной памяти чем есть
Сообщения: 36107
Благодарности: 6538
Мифы при том, что вас беспокоит запись на SSD.
Если вы знаете, как использовать ресурсы, лучше диспетчера памяти ОС, ограничьте максимальный размер ФП.