Как настроить смартфоны и ПК. Информационный портал
  • Главная
  • Windows 10
  • Почему доступная память меньше установленной. Где хранить файл подкачки

Почему доступная память меньше установленной. Где хранить файл подкачки

Сравнивая объемы оперативной памяти, выдаваемые BIOS и операционной системой
с физическим объемом установленной памяти, практически всегда можно видеть, что
доступно меньше памяти, чем установлено. "Пропажа" обычно составляет единицы
мегабайт, но иногда достигает более существенных размеров. В предлагаемом
материале перечисляются и детально рассматриваются причины данного явления.
Также приведены рекомендации по оптимизации использования адресного пространства
и оперативной памяти. Речь пойдет исключительно об объеме памяти, который BIOS
сообщает операционной системе и о том, почему он меньше физического объема.
Управление памятью внутри ОС – тема отдельной статьи.

Первая проверка

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

Известно, что в современных системах, идентификация модулей оперативной
памяти основана на использовании протокола SPD (Serial Presence Detect). На
каждом модуле DIMM, вместе с микросхемами оперативной памяти, установлена
микросхема постоянного запоминающего устройства (EPROM), объемом 256 байт. В нее
производителем модуля записаны его параметры. При старте компьютера, BIOS
считывает эти параметры и использует их для инициализации контроллера памяти.
Диагностические программы, запускаемые в сеансе ОС (например, Astra32, Everest),
также могут прочитать информацию SPD, таким образом она доступна для просмотра
пользователем. Если по информации SPD объем памяти (сумма объемов модулей)
соответствует значению, заявленному поставщиком, но вместе с тем, операционной
системе доступно меньше памяти, то причина в особенностях архитектуры и
схемотехники материнской платы, рассмотренных ниже, часть памяти выделена для
использования различными устройствами или недоступна вследствие ограничений
контроллера DRAM. Рассмотрению именно таких ситуаций посвящена данная статья.
Если же, объем памяти, определенный на основании SPD, меньше ожидаемого, то все
гораздо прозаичнее – нужно предъявлять претензию поставщику.

Ниже рассмотрены причины, по которым в распоряжение операционной системы
попадает меньше оперативной памяти, чем физически установлено на плате.
Очевидно, каждая из причин относится к одному из трех типов:

  1. Часть памяти используется для внутренних нужд BIOS или устройств системной
    платы.
  2. Часть памяти физически недоступна из-за ограничений контроллера памяти.
  3. Часть памяти физически доступна в адресном пространстве, но не
    используется из-за ограничений операционной системы.

Выделение памяти для System Management RAM

System Management RAM – это память, используемая BIOS для собственных нужд.
Физически, это часть оперативной памяти. Она "вырезана" из адресного
пространства с помощью картирующей логики, входящей в состав "северного моста"
чипсета. Данный вопрос детально рассмотрен в ранее опубликованной статье " и
". Сколько памяти
будет "отрезано" для SMRAM зависит от реализации BIOS. В большинстве платформ
это 128 Кбайт, используется диапазон 000A0000h-000BFFFFh, разделяемый с видео
адаптером. В некоторых платформах также используется Extended SMRAM,
расположенная выше 1MB и ее объем достигает нескольких мегабайт.

Выделение памяти для Shadow RAM

Shadow RAM или "теневая" память — область оперативной памяти, в которую
переписывается или распаковывается содержимое микросхемы ROM BIOS материнской
платы, а также дополнительные BIOS периферийных адаптеров. Первоначально это
было задумано как опция, исключительно для повышения производительности, так как
скорость работы RAM существенно выше, чем скорость работы ROM. Современные
реализации BIOS, используют хранение основного блока в упакованном виде, при
старте он распаковывается в Shadow RAM. Таким образом, операция Shadow из
опциональной превратилась в обязательную. Упаковка позволяет использовать
микросхему ROM меньшего объема, следовательно, более дешевую. Для корректной
эмуляции ПЗУ, картирующая логика, входящая в состав "северного моста" чипсета,
блокирует запись в данную область RAM. Распакованный блок BIOS, помещаемый в
Shadow RAM, иногда называют Runtime-блоком.

В большинстве платформ, для Runtime-блоков BIOS периферийных адаптеров
отводится диапазон 000C0000h-000EFFFFh. Для Runtime-блока системного BIOS –
диапазон 000F0000h-000FFFFFh. Отметим, что даже если указанные диапазоны
используются частично или не используются, весь 256-Кбайтный блок
000C0000h-000FFFFFh "отрезается" от оперативной памяти. Практически все
современные чипсеты позволяют его использовать только как Shadow RAM.

Примечание

Утверждение о том, что RAM (ОЗУ) существенно быстрее, чем ROM (ПЗУ)
справедливо для частного случая — применительно к элементной базе и схемотехнике
персональных компьютеров, так как используются медленные микросхемы ROM и
быстрые микросхемы RAM, к тому же, разрядность шины данных RAM на материнской
плате значительно больше. К физическим принципам работы ячеек RAM и ROM это
утверждение не относится.

Выделение памяти для таблиц ACPI

Спецификация ACPI, которая используется для передачи от BIOS к ОС информации
о конфигурации платформы, а также для оптимизации энергопотребления,
представляет собой альтернативный подход к взаимодействию BIOS и ОС. Напомним,
что в "классических" функциях BIOS, например, в функциях дискового сервиса,
доступных через программное прерывание INT 13h, операционная система или другая
программа, для выполнения заданной операции, должна вызывать подпрограммы,
входящие в состав BIOS. Взаимодействие ОС и платформы посредством ACPI
выполняется принципиально по-другому. BIOS при старте платформы, перед загрузкой
ОС, записывает в специальную область памяти набор таблиц, описывающих выполнение
ряда операций. Упрощенно говоря, таблицы содержат информацию о том, какие данные
в какой регистр записывать для выполнения заданной операции. ОС считывает эту
информацию и использует при взаимодействии с оборудованием. Одно из преимуществ
такого подхода, в том, что независимо от системы команд процессора или текущего
режима работы (например, 16- 32- или 64-битный), можно использовать одни и те же
таблицы, так как построение таблиц ACPI, в отличие от выполняемых процедур BIOS,
не привязано к архитектуре процессора.

Объем памяти, выделяемый для хранения таблиц ACPI, зависит от реализации
BIOS. Обычно это сотни килобайт, часто BIOS округляет размер резервируемой
области до 1 Мбайта. Заметим, что в отличие от SMRAM (которая доступна только в
режиме SMM) и Shadow RAM (которая имеет защиту от записи), область памяти,
содержащая таблицы ACPI не имеет специального статуса с точки зрения контроллера
памяти. Факт ее резервирования состоит только в том, что BIOS при передаче ОС
информации об объеме памяти, передает значение с вычетом размера этой области.
Для таблиц ACPI используется диапазон адресов, непосредственно примыкающий к
верхней границе Extended памяти. Подробности в .

Выделение памяти для USB RAM

Как известно, контроллер USB является интеллектуальным устройством, способным
взаимодействовать с оперативной памятью в обход процессора (в режиме Bus
Master). Это взаимодействие состоит не только в передаче данных между
устройствами, подключенными к USB и буферами в оперативной памяти. Для работы
контроллера USB требуется достаточно много вспомогательной информации в памяти,
например расписание транзакций. Так как BIOS должен взаимодействовать с
устройствами USB до загрузки ОС (например, ввод с USB клавиатуры, загрузка с
Flash и т.п.), резервировать память должен BIOS, а не ОС. Обычно, резервируются
десятки килобайт.

Заметим, что такие устройства, как например, контроллер жестких дисков, также
поддерживают режим Bus Master и используют управляющую информацию, располагаемую
в оперативной памяти. Но разница в том, что контроллер дисков, в отличие от
контроллера USB, можно также использовать в режиме программного обмена (PIO
Mode), что BIOS и делает при передаче управления на загрузку ОС. Переход в режим
Bus Master (синоним DMA) и резервирование памяти под управляющие блоки, в этом
случае является обязанностью ОС, а не BIOS.

Выделение памяти для интегрированного видео адаптера

Если на материнской плате имеется интегрированный видео адаптер,
реализованный в составе "северного моста" чипсета, в качестве видео памяти
обычно используется часть оперативной памяти. Перед загрузкой ОС, BIOS
резервирует под видео память блок, размером единицы-десятки мегабайт. На
некоторых платах, в BIOS Setup есть возможность управлять размером выделяемого
блока. При старте ОС и загрузке видео драйвера, происходит инициализация
графического процессора и в распоряжение видео адаптера динамически может быть
выделено больше памяти.

Заметим, что существуют платы, у которых резервирование памяти для
интегрированного видео адаптера происходит даже в том случае, когда он не
используется. Одна из причин этого – небрежно написанный BIOS.

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

Лимит 4Гб и Memory-Mapped I/O

Данный фактор иногда отнимает больше памяти, чем все остальные, вместе
взятые. Причем, когда мы говорили о таких вещах как SMRAM, Shadow RAM, ACPI, то
речь шла о том, что память, которую BIOS "утаил" от операционной системы,
использовалась для внутренних нужд платформы. Здесь же, часть памяти просто
пропадает. Когда и почему это происходит?

Возьмем реальный пример. Платформа класса Intel Socket 775. Процессор Intel
Pentium 4 650 3.4 ГГц (ядро Prescott-2M), чипсет Intel 925XE. Устанавливаем 4 Гб
памяти и видим, что операционной системе доступно около 3.5 Гб. Куда пропало
около 0.5 Гб?

Расследование начнем с процессора. Читая документ и просматривая
назначение сигналов на Socket 775, видим, что процессор поддерживает 36-битную
адресацию. Старший разряд адреса — A35# (считая от нулевого). Для справки, это
контакт с координатами AJ6 на Socket 775. Количество адресуемых байтов равно 2 в
степени 36, то есть, наш процессор может адресовать 64 Гб памяти. Благодаря
механизму страничной трансляции, использование 36-битного адреса возможно как в
32- так и в 64-битном режиме. Подробности в . Таким образом, в цепочке,
которую мы прослеживаем, "слабым звеном" является явно не процессор.

Следующим компонентом, на пути от процессора к памяти, является "северный
мост" чипсета, в нашем примере это микросхема Intel 82925XE, описанная в . Из
документа следует, что чипсет поддерживает 32-битную адресацию,
следовательно, объем адресного пространства памяти равен (2 в степени 32) байт,
то есть 4 Гб. Причем, все 4 Гб нельзя отдать под оперативную память, требуется
разместить еще ряд устройств, доступ к которым также осуществляется через
пространство памяти. Именно поэтому, доступный объем оперативной памяти будет
существенно меньше 4 Гб. Полный список таких устройств можно узнать из
документов . Для рассматриваемой платформы, наибольший объем отнимают видео
память и окно для доступа к конфигурационным регистрам PCI Express. Рассмотрим
их подробнее.

Классические адаптеры VGA, выпускавшиеся еще во времена шины ISA, используют
постраничный доступ к видео памяти через окно, размер которого не превышает 128
KB (000A0000h-000BFFFFh). Современные адаптеры, поддерживая этот режим для
совместимости, также поддерживают линейный доступ к видео памяти. При этом
адаптеру с 256 MB видео памяти требуется выделить столько же адресного
пространства. Из-за унификации при производстве видео адаптеров можно встретить
и такие ситуации, когда адаптер со 128 MB видео памяти требует выделения окна
размером 256 MB.

Классический механизм доступа к конфигурационному пространству шины PCI,
описанный в использует 256 байт конфигурационных регистров на
устройство. Спецификация PCI Express использует блоки регистров, размером 4 KB,
поэтому возникла необходимость в новом механизме доступа к ним. Новый механизм
использует регион адресного пространства, размером 256 MB, через который
конфигурационные регистры всех устройств адресуются как ячейки памяти.
Подробности в .

Вопросы организации регистров, отображенных на память (Memory-Mapped I/O)
рассмотрены в ранее опубликованной статье " ,
и
".

Операция Memory Remap

Начиная с чипсета Intel 955, лимит 4 Гб был преодолен. Разумеется, в
модельных рядах чипсетов для серверов и рабочих станций это произошло
значительно раньше.

Микросхема Intel 82955X принимает от процессора 36-битный адрес и
поддерживает адресное пространство 64 Гб. Максимальный объем оперативной памяти
– 8 Гб, на этот раз ограничение связано не с разрядностью адреса, который
"северный мост" способен принять от процессора, а с возможностями контроллера
DRAM.

Обычно, при использовании операции Memory Remap, диапазон 0-4 Гб форматирован
так же, как и раньше. Там находится оперативная память, фрагмент которой
недоступен из-за необходимости размещения других устройств. Новшество в том, что
указанный фрагмент не пропадает, а размещается по адресам выше 4 Гб.
Соответственно, если у нас памяти больше, чем 4 Гб, все, что не поместилось в
диапазоне 0-4 Гб, размещается выше.

Разумеется, польза от физической доступности памяти выше 4 Гб будет только
тогда, когда операционная система поддерживает адресацию выше 4 Гб. Это
обеспечивается в 64-битном режиме, а также в 32-битном режиме при использовании
PAE (Physical Address Extension). Если ОС не поддерживает адресацию выше 4 Гб,
перемещенная память будет недоступна. Подробности в .

Следует помнить и о том, что обращения к памяти инициируются не только
центральным процессором, но и другими устройствами, использующими технологию Bus
Master, например контроллером жестких дисков. Если контроллер поддерживает
только 32-битную адресацию при чтении и записи данных, то при размещении данных
выше 4 Гб, потребуется дополнительно использовать транзитный буфер,
расположенный ниже 4 Гб, так как контроллер дисков "не умеет" адресовать память
выше 4 Гб. Пересылку между транзитным и целевым буфером должен выполнить
центральный процессор. Это снижает производительность и отнимает память.
Поэтому, "истинно 64-битной" платформу можно считать только тогда, когда не
только процессор, но и Bus Master контроллеры поддерживают 64-битную адресацию.

Заключение

Логическим продолжением данного материала является изложение методов и
фрагментов кода, позволяющих для заданной платформы "с точностью до бита"
определить, как используется память, которую BIOS "утаил" от операционной
системы. Поэтому, при наличии читательского интереса, автор планирует
продолжение. Задача осложняется тем, что для получения ответов на многие из
поставленных вопросов, потребуется анализировать содержимое системных
конфигурационных регистров, архитектура которых не определяется единым для всех
платформ стандартом. Такие регистры по-своему реализованы в каждом чипсете. К
сожалению, подробная документация доступна далеко не на все чипсеты. Поэтому,
универсальных рецептов здесь не существует. Раскрывая данную тему, автор изложил
основные принципы, используя которые, заинтересованный читатель может провести
собственное исследование, для своей конкретной платформы.

Источники информации


developer.intel.com :

1) Intel Pentium 4 Processor 660, 650, 640, and 630 and Intel Pentium 4
Processor Extreme Edition Datasheet. Document Number: 306382-001.
2) TLBs, Paging-Structure Caches, and Their Invalidation. Application Note.
Document Number 317080-001.
3) Intel 925X/925XE Express Chipset Datasheet. Document Number: 301464-003.
4) Intel I/O Controller Hub 6 (ICH6) Family Datasheet. Document Number
301473-001.
5) Intel 955X Express Chipset Datasheet. Document Number 306828-001.
6) Intel I/O Controller Hub 7 (ICH7) Family Datasheet. Document Number
307013-002.
7) AGP V3.0 Interface Specification (без номера).

Электронные документы, доступные на сайте
developer.amd.com :

8) AMD Functional Data Sheet, 754 Pin Package. Publication # 31410.
9) AMD Functional Data Sheet, 939 Pin Package. Publication # 31411.
10) AMD Functional Data Sheet, 940 Pin Package. Publication # 31412.

Электронные документы, доступные на сайте
pcisig.com :

Документы , на сайте pcisig.com доступны только для членов PCI
Special Interest Group. Воспользовавшись поисковыми системами, можно найти
данные документы для свободной загрузки.

11) PCI BIOS Specification. Revision 2.1.
12) PCI Local Bus Specification. Revision 3.0.
13) PCI-to-PCI Bridge Architecture Specification. Revision 1.1.

Электронные документы, доступные на сайте
acpi.info :

14) Advanced Configuration and Power Interface Specification. Hewlett-Packard
Corporation, Intel Corporation, Microsoft Corporation, Phoenix Technologies
Ltd., Toshiba Corporation. Revision 3.0.:

Книги:

15) В.Л. Григорьев. Микропроцессор i486. Архитектура и программирование.
Москва ТОО "ГРАНАЛ" 1993.
16) Ю.М. Казаринов, В.Н. Номоконов, Г.С. Подклетнов, Ф.В. Филиппов.
Микропроцессорный комплект К1810. Структура, программирование, применение.
Справочная книга. Москва "Высшая школа" 1990.
17) М. Гук. Аппаратные средства IBM PC. Энциклопедия. Санкт-Петербург,
издательство "Питер" 2006.

К нам обратилась клиентка со следующей проблемой: компьютер часто пишет "заканчивается виртуальная память", особенно после того как я в фотошопе поработаю, а там очень объемные работы получаются. Как увеличить эту память ?

Решение: Иногда для запуска и работы программы может не хватать объема оперативной памяти (ОЗУ). В этом случае, Windows использует виртуальную память. Физическим воплощением файла подкачки является файл win386.swp в каталоге Windows для Win9x/ME и файл pagefile.sys в корне диска, куда установлена операционная система, для WinNT, 2000, XP? Vista, 7 и 8.

Что такое виртуальная память и как она работает?

Виртуальная память или файл подкачки (swap-файл) представляет собой совмещение оперативной памяти и временного хранилища файлов на жестком диске или винчестере. В случае если памяти ОЗУ не достаточно, данные перемещаются во временное хранилище, называемое файлом подкачки. Подобное перемещение данных (как в файл подкачки, так и из него) позволяет освобождать оперативную память в количестве достаточном для выполнения необходимых операций.

От объема ОЗУ зависит производительность компьютера, чем его больше, тем быстрее функционируют программы. Если оперативной памяти недостаточно, то ее можно увеличить путем изменения размера виртуальной памяти в большую сторону. Однако здесь необходимо учитывать то обстоятельство, что все данные с ОЗУ считываются намного быстрее, нежели с винчестера. Поэтому лучшим вариантом в данной ситуации будет добавление оперативной памяти.

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

Сообщения об ошибках нехватки виртуальной памяти

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

Как определить требуемый объем файла подкачки?

При определении объема файла виртуальной памяти лучше исходить не из объема RAM, а из задач, выполняемых на данном компьютере. Для этого нужно запустить какую-либо программу мониторинга, умеющую регистрировать объем swap-файла (например, встроенный в Windows "Системный монитор") и заняться типичной для данного компьютера работой. Максимальный объем файла свопинга, зарегистрированный в течении этого сеанса, и будет требуемым размером.

Где хранить файл подкачки?

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

Как дефрагментировать файл подкачки?

Стандартный дефрагментатор Windows не умеет перемещать файл свопинга. Поэтому надо использовать утилиты других фирм. Например, можно использовать Speed Disk из состава Norton Utilities, разумеется, как можно более новых версий.

Постоянный размер файла подкачки

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

Добавить виртуальную память?

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

Последовательность действий для увеличения файла подкачки:

  1. Правый клик на "Компьютер"
  2. Далее на "Свойства"
  3. Слева найти и нажать: "Дополнительные параметры системы"
  4. Найти и нажать: "Быстродействие: Параметры"
  5. Нажать "Дополнительно"
  6. Найти и нажать: "Виртуальная память: Изменить"
  7. Выбрать диск, но на котором много свободного места.
  8. Выберите ниже "Указать размер"
  9. В "Исходный размер" поставить цифру в размер оперативной памяти
  10. В "Максимальный" - 1,5 раза больше размера оперативной памяти
  11. Нажать "Задать", а потом ОК.

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

Добавить виртуальной памяти в Windows 7

В случае получения предупреждений о нехватке виртуальной памяти необходимо увеличить минимальный размер файла подкачки. ОС Windows задает исходный минимальный размер файла подкачки равным объему установленных ОЗУ, а максимальный размер файла подкачки в три раза превосходит объем ОЗУ компьютера. Если предупреждения появляются при использовании этих рекомендованных значений, необходимо увеличить минимальный и максимальный размеры.

  1. Откройте компонент «Система». Для этого нажмите кнопку Пуск, щелкните правой кнопкой мыши Компьютер и выберите пункт Свойства.
  2. В левой области выберите Дополнительные параметры системы. Если отображается запрос на ввод пароля администратора или его подтверждения, укажите пароль или предоставьте подтверждение.
  3. На вкладке Дополнительно в разделе Производительность нажмите кнопку Настройка.
  4. Откройте вкладку Дополнительно и в разделе Виртуальная память нажмите кнопку Изменить.
  5. Снимите флажок Автоматически выбирать объем файла подкачки.
  6. В списке Диск [метка тома] выберите диск, содержащий файл подкачки, размер которого необходимо изменить.
  7. Выберите переключатель Указать размер, введите в поле Исходный размер (МБ) или Максимальный размер (МБ) новый размер в мегабайтах, нажмите кнопку Установить, а затем - ОК.

Примечание

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

  • Если у Вас несколько жестких дисков, то установка файла подкачки на другой HDD, чем установлена операционная система, обычно значительно ускоряет быстродействие.
  • Если у Вас несколько жестких дисков - то файл подкачки ставится на самый быстрый из них.
  • Если у Вас несколько разделов на жестком диске, то файл подкачки надо ставить на самый первый из них - физически расположенный самым первым, так как доступ к этим областям жесткого диска наиболее быстрый.
  • Лучше всего ограничить минимальный объем файла подкачки, чтоб предотвратить излишнюю его фрагментацию примерно объемом 1-1.5 объема вашей оперативной памяти. Впрочем если Вы используете графику или компьютер работает в роли сервера базы данных, то можно поставить размером 2-3 объема RAM.
  • Практически не имеет смысла ограничивать максимальный объем, так как это может привести к сбою программ из-за нехватки памяти, а если уж и ограничивать, то никак не меньше чем 4 объема RAM.
  • После этих настроек компьютер надо перезагрузить и запустить какой-нибудь дефрагментатор (типа Norton Speed Disk) чтоб полностью дефрагментировать файл подкачки и поместить его в начало раздела.
  • Учтите, что после выключения компьютера, файл подкачки может содержать Ваши пароли, логины, остатки Вашей конфиденциальной информации и т.п. Это возможностью иногда пользуются дяди из компетентных органов и хакеры, загрузившись в ДОС и покопавшись в остатках Ваших программ в файле подкачки могут найти интересные вещи.

Компьютерная память, более обычно называют RAM (Random Access Memory), является частью вашей машины, в которой хранятся файлы и программы, которые в настоящее время или недавно были использованы вашим ПК. Когда ваш компьютер должен запустить программу, он загружает его с жесткого диска и сохраняет ее на некоторое время в вашей памяти. Здесь он будет оставаться до тех пор, пока ваш компьютер закончен с запуском программы, или компьютер выключен. Все, что хранится в оперативной памяти теряется, когда ваш компьютер выключается.

Проще говоря, RAM это рабочее пространство на вашем компьютере используется для хранения и запуска активных программ и файлов. Чем больше ваше рабочее пространство, тем больше программ она может обрабатывать и тем быстрее ваш компьютер будет запускать их. Тем не менее, это может стать немного запутанным для пользователей Windows XP и последующий период. Для этих пользователей, Windows отобразит четыре категории ОЗУ под статистикой использования памяти: Свободный, Доступно, кэширования данных, и Total.

Общий объем памяти не требует пояснений. Это общий объем физической памяти для Windows имеет доступ. Сохраненная память представляет собой часть оперативной памяти, которая была использована в системе в последнее время. Два, что вы должны быть обеспокоены являются два, которые являются наиболее запутанным, доступны и свободной памяти. Для повседневного пользователя, эти категории кажутся идентичными, однако они измеряют два различных типа памяти.



Что такое Свободная память?

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

Что такое свободная память?

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

Доступная память играет важную роль в более поздних версиях Windows. Начиная с Windows 7, Windows начинает предварительно загружать файлы в доступную память, что может понадобиться в будущем. Идея заключается в том, что если некоторые из этих файлов уже сидят в оперативной памяти, вы будете испытывать заметное увеличение скорости вашей машины. Если эта память будет простаивать в любом случае, почему бы не использовать его? Если эти файлы не нужны, они легко выгружено из оперативной памяти, чтобы освободить место для чего-то еще.

Это первый пост в блоге из серии "Pushing the Limits of Windows", которую я буду писать ближайшие месяцы и в которой буду описывать как Windows и приложения используют конкретный ресурс, лицензионные и реализационные ограничения ресурса, как измерить использование ресурса и как диагностировать его утечки. Чтобы эффективно управлять своими Windows системами вам нужно понимать как Windows управляет физическими ресурсами, такими как процессоры (CPUs) и память (memory), а также логическими ресурсами, такими как виртуальная память (virtual memory), дескрипторы (handles) и объекты оконного менеджера (window manager objects). Знание пределов и ограничений этих ресурсов и методы слежения за ними позволит вам соотносить использование ресурсов с приложениями, которые их используют, эффективно изменять систему для определённой нагрузки и идентифицировать приложения с утечкой ресурсов.

Физическая память

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

Кроме влияния на производительность, количество установленной физической памяти привносит и другие ограничения. Например, размер не подкачиваемого пула (non-paged pool) - буфера операционной системы - очевидно, ограничен физической памятью. Физическая память также влияет на ограничения системной виртуальной памяти, размер которой является грубой суммой физической памяти плюс максимальным размером всех файлов подкачки. Ещё Физическая память может неявно влиять на максимальное число одновременно работающих процессов, о чём я буду говорить в будущем посте, посвящённому ограничениям на процессы и потоки.

Ограничения памяти на серверных Windows

Поддержка физической памяти Windows диктуется ограничениями аппаратной части, лицензированием, структурами операционной системы и совместимостью драйверов. Страница Memory Limits for Windows Releases в MSDN описывает ограничения в различных версиях Windows, а также в пределах версий по редакциям (SKU).

Вы можете увидеть различия в поддержки памяти у разных редакций Windows, диктуемые лицензионными ограничениями. Например, 32-х битная Windows Server 2008 Standard поддерживает только 4 Гб, в то время как 32-х битная же Windows Server 2008 Datacenter поддерживает уже 64 Гб. Аналогично, 64-х битная Windows Server 2008 Standard поддерживает 32 Гб, а 64-х битная Windows Server 2008 Datacenter может оперировать целыми 2 Тб. Вокруг нас не так много систем с 2 Тб физической памяти на борту, но команда производительности Windows Server (Windows Server Performance Team) знает парочку, включая одну, которая была у них в лаборатории для тестов. Вот скриншот Менеджера Задач (Task Manager), работающего на такой системе:

Максимальное ограничение в 128 Гб на 32-х битных Windows, поддерживаемое редакцией Windows Server 2003 Datacenter, следует из того, что структуры, используемые менеджером памяти для отслеживания физической памяти, занимали бы слишком много виртуального адресного пространства на системах с большим количеством памяти. Менеджер памяти следит за каждой страницей (page) памяти, храня данные о ней в массиве, называемом базой данных PFN (PFN database), и (по соображениям производительности) проецируя всю базу данных PFN в виртуальную память. Поскольку в ней каждая страница физической памяти представлена структурой данных размером 28 байт, то вся БД PFN для системы с 128 Гб занимает около 930 Мб. 32-х битные Windows имеют 4 Гб виртуального адресного пространства, которое аппаратно делится на две части: пользовательскую, в котором выполняется процесс пользователя (например, Блокнот), и системную. Поэтому 980 Мб занимают практически половину их доступных 2 Гб из системной части виртуального адресного пространства, оставляя только 1 Гб для ядра, драйверов устройств, системного кэша и других системных структур данных, что делает совершенно неразумным дальнейшее увеличение размера БД:

По этой же причине в таблице с ограничениями также указываются пределы для той же редакции, но при загрузке с модификацией этих 4 Гб (опция называется 4GT и включается указанием в Boot.ini /3GB или /USERVA, а также опцией /Set IncreaseUserVa в Bcdedit), потому что опция 4GT передвигает границу между пользовательской и системной частью виртуального адресного пространства, что даёт до 3 Гб пользовательской части, но оставляет только 1 Гб для системы. Для улучшения производительности, 32-х битный Windows Server 2008 увеличивает зарезервированную часть для системного адресного пространства понижением максимального размера поддерживаемой памяти до 64 Гб.

Менеджер памяти мог бы поддерживать и больше памяти, проецируя БД PFN по кускам в адресное пространство по мере необходимости, но это добавило бы сложности и уменьшило производительность за счёт добавленных накладных расходов на операции проецирования и снятия проекции (map and unmap operations). Только недавно системы стали настолько большими, что нужно задумываться об этом, но поскольку размер адресного пространства не является ограничением для БД PFN на 64-х битных Windows, то поддержка большего количества памяти перекладывается на 64-х битные Windows.

Максимальный предел в 2 Тб на 64-х битном Windows Server 2008 Datacenter не следует из каких-либо ограничений реализации или аппаратной части, но Microsoft поддерживает только те конфигурации, который она может протестировать. Ко времени релиза Windows Server 2008, самая большая система в мире имела 2 Тб, поэтому Windows ограничивает свою поддержку памяти именно 2-мя Тб.

Ограничения памяти на клиентских Windows

64-ти битные клиентские редакции Windows поддерживают различное количество физической памяти как средство усиления различий между редакциями (SKU-differentiating feature) - от нижнего предела в 512 Мб для Windows XP Starter до 128 Гб для Vista Ultimate. Все 32-х битные клиентские редакции Windows, однако, (включая Windows Vista, Windows XP и Windows 2000 Professional) поддерживают максимум 4 Гб физической памяти. 4 Гб - это максимальный размер физической памяти, доступный из стандартного режима управления памятью на x86. В те времена не было необходимости даже рассматривать большее число памяти на клиентских системах, потому что даже сервера с таким количеством памяти были редкостью.

Однако, ко времени, когда Windows XP SP2 был в разработке, клиентские системы с более чем 4 Гб памяти появились в обозримом будущем, поэтому команда Windows начала широкомасштабное тестирование Windows XP на системах с памятью более 4 Гб. Windows XP SP2 также включал по-умолчанию поддержку Physical Address Extensions (PAE) на железе, которое реализовывало память no-execute, потому что оно требовалось для Data Execution Prevention (DEP), но оно же включало поддержку для памяти выше 4 Гб.

Но при этом разработчики Windows обнаружили, что многие системы начинали вылетать, зависать или вообще не загружаться, потому что некоторые драйвера устройств (часто это такие видео или аудио драйвера, которые обычно используются на клиентских системах, а не на серверах) не были запрограммированы работать с физическими адресами больше 4 Гб. В результате, драйвера обрезали такие адреса, приводя к порче памяти и побочным эффектам такой порчи. Серверные системы обычно имеют более общие устройства с простыми и более стабильными драйверами, а поэтому обычно не встречаются с подобными проблемами. Эта проблематичная экосистема клиентских драйверов привела к принятию решения об игнорировании памяти выше 4 Гб на клиентских редакциях, даже если система теоретически может адресовать столько памяти.

Реальные ограничения памяти на клиентских 32-х битных Windows

Хотя 4 Гб памяти заявлено как предел для 32-х битных редакций Windows, но реальный предел будет ниже и зависит от чипсета системы и подключенных устройств. Причина в том, что физическое адресное пространство включает в себя не только оперативную память (RAM), но также и память устройств, а системы x86 и x64 проецируют память устройств ниже границы в 4 Гб для обеспечения совместимости с 32-х битными операционными системами, которые не знают, как обращаться с адресами выше 4 Гб. Если система имеет 4 Гб оперативной памяти и устройства, типа видео, аудио или сетевых адаптеров, будут реализовывать окна в свою память (которая в сумме пусть будет равна 500 Мб), то 500 Мб памяти из 4-х Гб будут расположены выше границы в 4 Гб, как показано ниже:

В результате этого, если у вас есть система с 3 Гб или более памяти под управлением клиентской версии 32-х битной Windows, вы не сможете получить в своё распоряжение всю оперативную память. На Windows 2000, Windows XP и Windows Vista RTM вы можете узнать, сколько оперативной памяти доступно системе в диалоговом окне Свойства системы, странице Производительность Менеджера Задач и, в Windows XP и Windows Vista (включая SP1), в утилитах Msinfo32 и Winver. На Window Vista SP1 некоторые из этих мест теперь показывают установленную память, а не доступную для системы память, как указано в этой статье Knowledge Base .

На моём ноутбуке с 4 Гб памяти, когда я загружаю 32-х битную Vista, количество доступной физической памяти будет 3.5 Гб, как показано в утилите Msinfo32:

Вы можете посмотреть раскладку физической памяти с помощью утилиты Meminfo от Alex Ionescu (он также внёс вклад в 5-ю редакцию Windows Internals, которую я написал в соавторстве с Дэвидом Соломоном). Вот вывод Meminfo, которую я запустил на этой же системе с ключом -r для создания дампа диапазонов физической памяти:

Обратите внимание на пробел в адресном пространстве со страницы 9F000 до страницы 100000, и ещё один от DFE6D000 до FFFFFFFF (4 Гб). Однако, когда я загружаюсь на этой же системе в 64-х битной Vista, все 4 Гб показываются как доступные и вы можете видеть, как Windows использует ещё 500 Мб оперативной памяти, находящиеся выше границы в 4 Гб:

Откуда берутся эти пробелы ниже 4 Гб? На этот вопрос нам поможет ответить Диспетчер Устройств. Для проверки, запустите "devmgmt.msc", выберите "Ресурсы по подключению" в меню "Вид", и разверните узел "Память". На моём ноутбуке главным похитителем памяти стала, что и неудивительно, видеокарта, которая потребляет 256 Мб в диапазоне E0000000-EFFFFFFF:

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

Потребление адресов памяти ниже 4 Гб может быть весьма значительным на топовых игровых конфигурациях, имеющими видеокарты с большими объёмами памяти. Например, я купил одну такую систему в бутике игрового стенда компании - она шла с 4 Гб памяти и двумя видеокартами по 1 Гб каждая. Я не уточнил версию ОС, полагая, что они сообразят поставить 64-х битную Виста, но система пришла с 32-х битной версией. В результате только 2.2 Гб памяти было доступно для Windows. Вы можете увидеть гигантскую дыру в памяти с адреса 8FEF0000 по FFFFFFFF в следующем выводе Meminfo с этой системы после того, как я поставил на неё 64-х битную версию Windows:

Диспетчер Устройств показывает, что 512 Мб из этой дыры в зарезервированно для видеокарт (256 Мб каждая), и похоже, что firmware просто зарезервировало больше памяти, либо для динамического проецирования, либо же в результате использования консервативных оценок:

С такими проблемами могут встретиться даже системы имеющие на борту только 2 Гб. Проблемы возникают из-за чипсетов, агрессивно резервирующих регионы памяти для устройств. Наш общий семейный компьютер, который мы купили всего несколько месяцев назад от известного OEM поставщика, сообщает о доступности только 1.97 Гб из 2-х установленных:

Диапазон физических адресов от 7E700000 до FFFFFFFF зарезервирован шиной PCI и устройствами, что оставляет теоретический максимум физического адресного пространства в 7E700000 байт (1.976 Гб), но даже часть из этого резервируется для памяти устройств, что оставляет Windows только 1.97 Гб.

Поскольку теперь производители устройств обязаны отправлять как 32-х битный, так и 64-х битный драйвера в лаборатории Windows Hardware Quality Laboratories (WHQL) для получения сертификата подписи, то большинство производителей устройств сегодня могли бы поддерживать физические адреса выше 4 Гб. Однако, 32-х битные Windows будут продолжать игнорировать память выше этой границы, потому что всё ещё существуют определённые сложности с измерением риска такого изменения, а производители OEM двигаются (или, по крайней мере, должны) в сторону перехода на 64-х битные Windows, где эта проблема просто не стоит.

Суть заключается в том, что вы можете использовать всю установленную у вас память (до предела, установленного редакцией системы) с 64-х битной Windows, вне зависимости от её количества, и если вы покупаете высокопроизводительную геймерскую систему, то вам определённо стоит попросить продавца установить на неё 64-х битную Windows.

Достаточно ли у вас памяти?

Вне зависимости от того, сколько памяти у вас есть, настоящий вопрос заключается в том, достаточно ли этой памяти? К сожалению, не существует какого-либо простого правила, с помощью которого вы точно узнаете ответ на этот вопрос. Хотя есть общее руководство, которое вы можете использовать, оно основано на мониторинге доступной системе памяти за промежуток времени, особенно в моменты работы приложений, требовательных к памяти. Windows определяет доступную память как физическую память, которая не была привязана к процессу, ядру или драйверу устройства. Как следует из этого названия, доступная память доступна для присвоения её по требованию процесса или системы. Системный менеджер памяти, конечно же, пытается использовать максимум памяти, используя свободную память как файловый кэш (список standby), как обнулённую память (список страниц, заполненных нулями), а функция Superfetch в Vista также использует её для предзагрузки (prefetch) данных и кода в списке standby и упорядочивает их по наибольшей вероятности использования в ближайшее время.

Когда доступная память становится дефицитом, это означает, что либо процессы, либо система активно используют физическую память, и если доступная память находится в районе нуля продолжительное время, то вы вероятно выиграете от установки большего количества памяти. Есть несколько способов отслеживать доступную память. В Windows Vista вы можете неявно следить за доступной памятью, наблюдая за историей использования физической памяти (Physical Memory Usage History) в Диспетчере Задач, Task Manager. Вот снимок экрана Диспетчера Задач на моём настольнике с 8 Гб памяти (хмм, я думаю, что у меня, пожалуй, даже слишком много памяти!):

На всех версиях Windows вы можете увидеть график доступной памяти, используя оснастку Производительность (Performance Monitor) и добавляя в ней счётчик Available Bytes из раздела Memory:

Вы также можете видеть мнгновенные значения в диалоге System Information утилиты Process Explorer , или, на версиях Windows до Vista, на вкладке Производительность Диспетчера Задач (Task Manager"s Performance page).

Преодолевая пределы

Из процессора (CPU), памяти и дисков - память обычно наиболее важна для общей производительности системы. Чем больше памяти - тем лучше. И 64-х битные Windows являются способом убедиться, что вы используете все возможности вашей системы. Кроме того, 64-х битные Windows могут иметь и другие бонусы в плане производительности, о которых я поговорю в следующем посте серии Pushing the Limits, когда я буду говорить о виртуальной памяти.

Лучшие статьи по теме