Диспетчер задач может отображать неверные сведения о памяти
В этой статье описывается решение проблемы, при которой диспетчер задач показывает, что скорость памяти выше или ниже скорости, сообщаемой в BIOS.
Область действия: Windows Server 2012 R2, Windows 10 — все выпуски
Исходный номер базы знаний: 3070928
Симптомы
При просмотре сведений о памяти в диспетчере задач Windows значения, отображаемые для зарезервированного оборудования и скорости, могут отличаться от значений, отображаемых в других источниках. Например, диспетчер задач может показать, что скорость памяти выше или ниже скорости, сообщаемой в BIOS.
Причина
Эта проблема возникает из-за того, что диспетчер задач неправильно анализирует данные памяти SMBIOS.
Обходной путь
Чтобы обойти эту проблему, используйте альтернативный источник для просмотра сведений о памяти. Например, монитор ресурсов отображает правильное значение зарезервированной памяти оборудования и включается в Windows 7 и более поздние версии.
Обратная связь
Были ли сведения на этой странице полезными?
Не доверяйте информации о памяти в Диспетчере задач
За много лет использования Windows я привык к Диспетчеру задач. Оттуда я убил сотни приложений за плохое поведение. Там же смотрел, кто из них пожирает ресурсы. Пока я не начал работать с машинами, у которых сотни гигабайт памяти, а у приложений соответствующие запросы. В этой статье обсудим, почему Диспетчер задач плохо отслеживает память и что использовать взамен. Во-первых, о механизме выделения памяти в Windows.
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 [выделенная память] = рабочий набор + файл подкачки
По умолчанию Диспетчер задач показывает для любого процесса именно рабочий набор:
И это число, на которое я всё время смотрел. Откуда я знал, что в Диспетчере задач информация о переданной памяти находится в колонке Commit Size . Я так и не смог там найти информацию о виртуальной памяти.
Диспетчер задач позволяет добавить информацию о переданной памяти, если щёлкнуть правой кнопкой мыши по столбцам и выбрать соответствующий пункт
Эффективные метрики памяти
К счастью, есть много других ресурсов для отслеживания ресурсов. На каждой машине под Windows установлен PerfMon (Системный монитор), который выдаёт очень подробную информацию о каждом процессе и системе в целом:
Интересно, что Системный монитор умеет фактически исследовать и сравнивать метрики на двух или более компьютерах в сети. Это очень мощный инструмент, но Диспетчер задач, очевидно, удобнее для пользователей. В качестве промежуточного решения рекомендую Process Explorer:
Бум! Visual Studio, чего это ты до сих пор в 32-битном режиме (обратите внимание на его Virtual Size)? Пиковое использование памяти на моём компьютере на уровне 89% от максимума, ещё терпимо. Это пригодится позже.
Дополнение: многие указали на другие удобные инструменты, в том числе VMMap и RAMMap.
Отладка по информации о памяти
К счастью, это не какие-то ненужные мелочи ОС. Актуальная информация о потреблении памяти многократно помогала мне в отладке разных проблем.
Самое главное, это найти нетронутые части выделенной памяти. Данные о подкачке тоже важны: эта память передана, но используется редко или вообще не используется.
Даже если память будет иногда использоваться, важно понимать, что это дорогой ресурс, так что идти по такому пути ни в коем случае нельзя. Здесь появятся и утечки памяти.
По этим причинам я ранее слышал предложение полностью удалить файл подкачки и приравнять выделенную память рабочему набору. Однако это обоюдоострая идея. Тогда ОС не в состоянии сбросить память в случае неправильной работы приложений, которые иногда впустую резервируют память.
- Диспетчер задач
- Process Explorer
- Sysinternals
- управление памятью
- VMMap
- RAMMap
- Отладка
- Разработка под Windows
- Софт
Система не видит всю оперативную память (ОЗУ)! Почему в Windows доступно меньше памяти, чем установлено?
Вопрос от пользователя
Здравствуйте.
У меня на ноутбуке установлено 8 ГБ ОЗУ, но почему-то используется системой только 3,25 ГБ (про остальную в диспетчере задач написано просто «Зарезервировано аппаратно»). Подскажите, почему система не видит всю мою оперативную память и как все настроить должным образом?
Анастасия, Минск.
Логично, что, прежде чем увеличивать ОЗУ, необходимо начать использовать на 100% ту, что имеется . Причин, из-за которых система может не использовать всю память — достаточно много (ниже я выделю те, которые покрывают ~90% случаев). Отмечу, что большинство из них легко решаются даже начинающими пользователями ПК.
Почему системе может быть не доступна вся память
Встроенная видеокарта отнимает часть ОЗУ
Этот подраздел актуален для тех ноутбуков и ПК, на которых есть встроенная видеокарта (ее еще называются интегрированной, например, Intel HD, AMD Vega). Сейчас таких, в общем-то, большинство.
Начинать разбираться с вопросом нужно с диспетчера задач (для его вызова нажмите Ctrl+Shift+Esc).
Во вкладке «Производительность» вы можете увидеть два значения: сколько всего установлено памяти, и сколько из нее используется (в моем случае 12 ГБ всего, и 10,9 ГБ из них используется Windows — т.е. получается, что у меня куда-то пропал ~1 ГБ?!) .
Память — использование памяти (зарезервировано аппаратно 1,1 ГБ) / Windows 10
Кстати, если вы зайдите в панель управления и откроете вкладку «Система и безопасность/Система» — то вы также сможете узнать о том сколько памяти установлено и сколько доступно.
Установленная память — 12 ГБ, доступно 10,9 ГБ
Обратите внимание, что в диспетчере задач (если у вас ОС Windows 10) — можно также просмотреть, сколько памяти отнимает встроенная видеокарта (графический процессор). В моем случае использует она как раз этот самый 1 ГБ.
Использование выделенной памяти
Кстати, узнать о том, сколько памяти установлено на ПК и сколько из них использует встроенный видеоадаптер можно с помощью утилиты CPU-Z. Для этого, после ее установки и запуска используйте разделы Memory и Graphics . См. скриншот ниже.
CPU-Z — оперативная память, видеокарта
Если вас не устраивает, что строенная видеокарта отнимает такое большое количество памяти — то в ряде случаев, используя настройки BIOS (UEFI), можно изменить это значение. Разумеется, на каждом компьютере/ноутбуке (в зависимости от железа) значения «регулировки» могут быть разными (см. скрин ниже).
Кстати, стоит отметить, что количество выделенной памяти для интегрированной карты — может влиять на ее производительность.
Как может называться искомый параметр : Share Memory Size, Internal Graphic Mode Select, Onboard Video Memory Size и др.
Share Memory Size — выделение памяти видеосистеме
Память не определяется в BIOS
Если в диспетчере задач (или свойствах системы, см. скрин ниже) отображается общее количество установленной памяти меньше, чем физический имеющейся на ПК (например, у должно быть 8 ГБ, т.к. установлено 2 планки по 4 ГБ, но отображается в Windows только 4 ГБ) — возможно, что какая-то планка просто не определилась в BIOS.
Установленная память — 12 ГБ
Разумеется, в этом случае необходимо перезагрузить компьютер, войти в BIOS и посмотреть, определилась ли память там, какой ее общий объем.
Total memory — общая память — UEFI
Кстати, также узнать с каким планками памяти Windows может работать — можно с помощью утилиты AIDA64 (вкладка «Системная плата/SPD» ).
AIDA64 — системная плата
Почему может не определяться память в BIOS:
- планка памяти пришла в негодность (рекомендуется ее проверить на другом ПК/ноутбуке);
- установлена не та планка памяти. Вообще, перепутать планки достаточно сложно (т.к. DDR3, например, не установишь вместо DDR4) , однако если речь идет о ноутбуках — то легко можно установить DDR3L (с пониженным энергопотреблением) вместо DDR3 (а они не на всех устройствах обратно-совместимые!). Более подробно: https://ocomp.info/kakaya-ozu-podoydet-noutbuku.html
- окислились контакты планки памяти, попала пыль в разъем и пр. Попробуйте аккуратно почистить контакты памяти резинкой и кисточкой, разъем следует хорошо продуть;
Чистка контактов памяти резинкой и кисточкой
Неактуальные параметры загрузки
С целью ускорения компьютера, некоторые пользователи (иногда через спец. ПО) меняют параметры загрузки и сами того не подозревая, ограничивают использование ОЗУ. Поэтому, если у вас система видит, скажем, 8 ГБ, а использует только 4-5 ГБ — обязательно проверьте эти параметры.
- сначала нужно нажать сочетание Win+R , чтобы появилось окно «Выполнить»;
- далее ввести команду msconfig и нажать Enter;
msconfig
Загрузка — дополнительные параметры
Все галочки сняты!
Ограничение ОС Windows
Разные версии Windows могут «видеть» и использовать разное количество ОЗУ.
- если у вас 32-х битная ОС — то макс. количество памяти, которое в ней будет доступно — 3,25 ГБ (чтобы задействовать большое количество памяти — ОС необходимо переустановить на 64 битную) . Это актуально для любых ОС Windows XP/7/8/10;
- если используется Windows 7 starter (64 bit) — то у нее ограничение в 2 ГБ, у версии Windows 7 Home (64 bit) — 8 ГБ. У Windows 8/10 (64 bit) — ограничение в 128+ГБ (даже для домашних версий).
Для того, чтобы точно узнать свою версию ОС:
-
нажмите Win+R и введите команду dxdiag ;
Win+R — dxdiag
Какая у меня Windows, 32-64 bit
Материнская плата или ЦП не поддерживает нужный объем памяти
У каждой материнской платы и ЦП есть «свое» ограничение как по объему, так и по типу памяти, с которой они могут работать. Разумеется, обойти это ограничение нельзя*.
Узнать, эти ограничения можно:
- в документации, которая шла в комплекте к вашему железу;
- в тех. характеристиках, которые можете посмотреть на сайте производителя и в онлайн-магазинах;
- в спец. утилитах, например, в AIDA64 — вкладка «Системная плата/чипсет» . В моем примере макс. объем памяти 16 ГБ, поддерживаемые типы: DDR3-1066, DDR3-1333, DDR3-1600 (SDRAM).
Системная плата — чипсет — AIDA64
Дополнения по теме приветствуются.
Почему в диспетчере задач показывается не вся задействованная оперативная память?
Добрый день.
Заметил следующее: в диспетчере задач как-то неправильно показывается количество затраченной оперативной памяти во вкладке «Процессы». У меня на машине 16 гигабайт оперативной памяти. Если посчитать всю память по процессам, то получится ~4 гигабайта. А показывает 43%. Но ведь 43% от 16 6,88, но никак не 4. Куда деваются 2,5+ гигабайта?
Как мне это узнать? Проходился несколькими антивирусами (Касперский, др.Веб, Zemana AntiMailware), никто ничего не нашел.
Заранее благодарен за ответы.
- Вопрос задан более трёх лет назад
- 10109 просмотров
2 комментария
Простой 2 комментария