Нажмите "Enter", чтобы перейти к содержанию

Объем виртуальной памяти: Правильные размеры файла подкачки Windows

Виртуальная память в 32-разрядной версии Windows — Windows Server

  • Статья
  • Чтение занимает 7 мин

Применимо к: Windows Server 7 с пакетом обновления 1, Windows Server 2012 R2
Исходный номер базы знаний: 2160852

Аннотация

Эта статья содержит основные сведения о реализации виртуальной памяти в 32-разрядных версиях Windows.

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

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

Процессы и адресные пространства

Всем процессам (например, исполняемым файлам приложений), работающим в 32-разрядных версиях Windows, назначаются адреса виртуальной памяти (виртуальное адресное пространство) в диапазоне от 0 до 4 294 967 295 (2*32-1 = 4 ГБ), независимо от объема ОЗУ, установленного на компьютере.

В конфигурации Windows по умолчанию 2 гигабайта (ГБ) этого виртуального адресного пространства назначаются для частного использования каждого процесса, а остальные 2 ГБ совместно используются всеми процессами и операционной системой. Как правило, приложения (например, Блокнот, Word, Excel и Acrobat Reader) используют только часть 2 ГБ частного адресного пространства.

Операционная система назначает кадры страниц ОЗУ только используемым страницам виртуальной памяти.

Расширение физических адресов (PAE) — это функция 32-разрядной архитектуры Intel, которая расширяет адрес физической памяти (ОЗУ) до 36 бит. PAE не изменяет размер виртуального адресного пространства (который остается на уровне 4 ГБ), а только объем фактического объема ОЗУ, который может быть устранен процессором.

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

В следующем списке описывается объем ОЗУ, поддерживаемый различными версиями и выпусками Windows (по данным на май 2010 г.):

Версия WindowsОЗУ
Windows NT 4. 04 ГБ
Windows 2000 Professional4 ГБ
Windows 2000 Standard Server4 ГБ
Windows 2000 Advanced Server8 ГБ
Windows 2000 Datacenter Server32 ГБ
Windows XP Professional4 ГБ
Windows Server 2003 Web Edition2 ГБ
Windows Server 2003 Standard Edition4 ГБ
Windows Server 2003 выпуск Enterprise32 ГБ
Windows Server 2003 Datacenter Edition64 ГБ
Windows Vista4 ГБ
Windows Server 2008 Standard4 ГБ
Windows Server 2008 Enterprise64 ГБ
Windows Server 2008 Datacenter64 ГБ
Windows 74 ГБ

Файл подкачки

ОЗУ — это ограниченный ресурс, тогда как в большинстве практических целей виртуальная память не ограничена. Может быть много процессов, и каждый процесс имеет собственное 2 ГБ частного виртуального адресного пространства. Если память, используемая всеми существующими процессами, превышает объем доступной ОЗУ, операционная система перемещает страницы (4 КБ) одного или нескольких виртуальных адресных пространств на жесткий диск компьютера. Это освобождает кадр ОЗУ для других вариантов использования. В системах Windows эти страницы с разбиения на страницы хранятся в одном или нескольких файлах (Pagefile.sys файлах) в корне секции. В каждом разделе диска может быть один такой файл. Расположение и размер файла страницы настраиваются в свойствах системы (нажмите кнопку «Дополнительно «, нажмите кнопку «Производительность » и нажмите кнопку «Параметры «).

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

Производительность, ограничения архитектуры и ОЗУ

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

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

. Ниже перечислены некоторые часто сообщаемые ограничения архитектуры в Windows.

  • 2 ГБ общего виртуального адресного пространства для системы (ядра)
  • 2 ГБ частного виртуального адресного пространства на процесс (пользовательский режим)
  • 660 МБ системного хранилища PTE (Windows Server 2003 и более ранних версий)
  • 470 МБ хранилища страничного пула (Windows Server 2003 и более ранних версий)
  • 256 МБ хранилища невыплаченного пула (Windows Server 2003 и более ранние версии)

Это относится к Windows Server 2003, но также может применяться к Windows XP и Windows 2000. Однако Windows Vista, Windows Server 2008 и Windows 7 не используют эти ограничения архитектуры. Ограничения на память пользователя и ядра (числа 1 и 2 здесь) одинаковы, но ресурсы ядра, такие как PTE и различные пулы памяти, являются динамическими. Эта новая функция позволяет использовать как страницу, так и невыплаченную память.

Это также позволяет PTE и пулу сеансов превышать ограничения, описанные ранее, до точки исчерпания всего ядра.

Часто используемые и заключенные в кавычки операторы, например:

При использовании сервера терминалов 2 ГБ общего адресного пространства будут полностью использоваться до того, как будет использовано 4 ГБ ОЗУ.

В некоторых случаях это может быть верно. Однако необходимо отслеживать систему, чтобы узнать, применимы ли они к конкретной системе. В некоторых случаях эти инструкции являются выводами из конкретных сред Windows NT 4.0 или Windows 2000 и не обязательно применяются к Windows Server 2003. В Windows Server 2003 были внесены значительные изменения, чтобы снизить вероятность того, что эти ограничения архитектуры будут фактически достигнуты на практике. Например, некоторые процессы, которые находились в ядре, были перемещены в процессы без ядра, чтобы уменьшить объем памяти, используемой в общем виртуальном адресном пространстве.

Мониторинг использования ОЗУ и виртуальной памяти

Монитор производительности является средством мониторинга производительности системы и определения расположения узкого места. Чтобы начать Монитор производительности, нажмите кнопку «Панель управления», «Администрирование» и дважды щелкните Монитор производительности. Ниже приведена сводка по некоторым важным счетчикам и их сведениям:

  • Память, зафиксированные байты: этот счетчик является мерой спроса на виртуальную память.

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

  • Process, Working Set, _Total: этот счетчик является мерой виртуальной памяти в активном использовании .

    Этот счетчик показывает, сколько ОЗУ требуется для того, чтобы виртуальная память, используемая для всех процессов, была в ОЗУ. Это значение всегда кратно 4096, то есть размер страницы, используемый в Windows. Так как потребность в виртуальной памяти выходит за пределы доступной ОЗУ, операционная система настраивает объем виртуальной памяти процесса в рабочем наборе, чтобы оптимизировать доступное использование ОЗУ и свести к минимуму разбиение по страницам.

  • Файл разбиения на страницы, %pagefile используется: этот счетчик представляет собой меру фактического использования файла страницы.

    Используйте этот счетчик, чтобы определить, является ли файл pagefile соответствующим размером. Если этот счетчик достигает 100, файл страницы заполнен, и работа будет остановлена. В зависимости от нестрогости рабочей нагрузки, возможно, файл страницы будет достаточно большим, чтобы он использовался не более чем на 50–075 %. Если используется большая часть файла страниц, наличие нескольких файлов на разных физических дисках может повысить производительность.

  • Память, страницы/с. Этот счетчик является одной из наиболее распространенных мер.

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

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

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

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

    Сумма этих счетчиков представляет собой меру того, сколько из 2 ГБ общей части виртуального адресного пространства размером 4 ГБ фактически используется.

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

  • Память, доступные МБ. Этот счетчик измеряет объем ОЗУ, доступный для удовлетворения требований к виртуальной памяти (новые выделения или восстановление страницы из файла страницы).

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

Ссылки

Расширения окна адресов

Оптимальный размер файла подкачки для Windows 10

Категория: Системное администрирование

При нехватке оперативной памяти Windows начинает задействовать в качестве альтернативы виртуальную память, которую часто называют файлом подкачки.

Располагается она в корне диска под именем «pagefile.sys». Это скрытый системный файл, который можно увидеть если в настройках папок включено их отображение.

По умолчанию Windows 10 автоматически управляет размером виртуальной памяти. Указывать его объем вручную стоит только при использовании ресурсоёмких программ или возникновении BSOD ошибок на синем экране. Особенно стоит обратить внимание на ручные настройки при возникновении ошибок со следующими кодами:

  • PAGE_FAULT_IN_NONPAGED_AREA
  • KERNEL_DATA_INPAGE_ERROR

Как вычислить оптимальный размер

Есть формула для расчета правильного размера файла подкачки. Минимальное значение должно быть в полтора раза больше, чем оперативной памяти в компьютере. Например, если ОЗУ 8 гигабайт, то файл подкачки должен иметь минимум 12.


8 ГБ * 1.5 = 12 ГБ

Максимальное значение не должно троекратно превышать размер оперативной памяти:


8 ГБ * 3 = 24 ГБ

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

ОЗУ Виртуальная память
Min Max Оптимально
2 ГБ 3 ГБ 6 ГБ 6 ГБ
4 ГБ 6 ГБ 12 ГБ 8 ГБ
8 ГБ 12 ГБ 24 ГБ 12 ГБ
более 8 ГБ не требует ручной настройки

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

Если установлен SSD диск

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

  • Если объем оперативной памяти меньше 8 ГБ, то для SSD следует отключить использование виртуальной памяти и включить для одного из разделов HDD диска. Это можно сделать в настройках, которые будут рассмотрены в следующих главах.
  • Если ОЗУ 8 ГБ и более, то стоит оставить всё как есть и доверить управление размером операционной системе.

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

Вручную указать размер файла подкачки можно через системную утилиту «sysdm.cpl». Найдите её через стандартный поиск Windows 10.

  1. В поиске задаём название sysdm.cpl.
  2. В окне «Свойства системы» выбираем вкладку «Дополнительно» и в разделе «Быстродействие» нажимаем «Параметры».
  3. В новом окне «Параметры быстродействия» снова выбираем вкладку «Дополнительно», а в разделе «Виртуальная память» нажимаем «Изменить».

Осталось задать нужные размеры. Для этого снимаем флаг «Автоматически выбирать объем файла подкачки» и для диска C: задаём значения.

  • В исходный — указываем минимальный вычисленный размер.
  • В максимальный — оптимальный из таблицы.

Размер задается в мегабайтах, поэтому умножаем гигабайты на 1000 для простого вычисления приблизительного значения.

Для применения настроек требуется нажать кнопку «Задать».

Можно ли отключить файл подкачки

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

Производительность

.

Повлияет ли выделение слишком большого объема виртуальной памяти на ваш ноутбук отрицательно?

спросил

Изменено 5 лет, 8 месяцев назад

Просмотрено 25 тысяч раз

Например, это замедлит загрузку?

Также какие проблемы возникнут, если вы выделите больше памяти на жестком диске для виртуальной памяти, чем доступно, вызовет ли это какие-либо проблемы?

  • производительность
  • виртуальная память

2

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

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

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

надеюсь, что это поможет.

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

Блок управления памятью управляет виртуальной памятью. Он переводит адреса виртуальной памяти в фактические физические адреса. Чем больше объем виртуальной памяти, тем больше становится таблица адресов, в которую записывается, какой виртуальный адрес какому физическому адресу принадлежит. Теоретически большая таблица может привести к более медленному преобразованию адресов и, следовательно, к снижению скорости чтения и записи. Я не могу количественно оценить этот эффект. Наверное, это не актуально.

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

1

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

3

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

.

Почему Windows всегда использует столько виртуальной памяти, сколько установлено ОЗУ?

Во-первых, это огромная ошибка (не ваша), что диалоговое окно Windows, в котором вы устанавливаете размер файла подкачки, приравнивает файл подкачки к «виртуальной памяти». Файл подкачки — это просто резервное хранилище для одной категории виртуального адресного пространства, которое используется частной выделенной памятью. Есть виртуальное адресное пространство, поддерживаемое другими файлами (сопоставленными файлами), и есть v.a.s. это всегда невыгружаемый и поэтому всегда остается в ОЗУ. Но это все «виртуальная память» в том, что, по крайней мере, трансляция из виртуальных адресов в RAM всегда в работе.

Ваше наблюдение верно: размер файла подкачки в Windows распределяется по простому расчету: по умолчанию = объем ОЗУ, а максимум = в два раза больше. (Раньше это было 1,5x и 3x.) Им нужно что-то установить, и эти факторы обеспечивают результат, которого почти всегда достаточно. Это также гарантирует достаточно места для файла подкачки, чтобы поймать дамп памяти в случае сбоя системы (при условии, что вы включили ядро ​​​​или полные дампы).

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

Ах… начинается с «начального размера». Это НЕ «минимально допустимый». Вот почему вы видите его в размере вашей оперативной памяти, потому что Windows использует его для начального размера.

Но… вы хотите сказать, что фактический размер файла подкачки достигает максимального значения? например если для него установлено начальное значение 16 ГБ, максимальное значение 32 ГБ, вы видите фактический размер («текущий выделенный») в 32 ГБ? Кстати, он всегда должен возвращаться к исходному размеру при перезагрузке.

Вы видите всплывающие окна «Системе не хватает виртуальной памяти»? потому что вы должны, когда ОС расширяет файл подкачки за пределы текущего размера.

ОС не будет увеличивать файл подкачки, если только что-то не попытается выделить столько частной выделенной памяти, что ей потребуется увеличенное пространство файла подкачки для хранения материала. Но, может быть, что-то есть. Взгляните на вкладку «Процессы» диспетчера задач. Столбец «Размер фиксации» показывает это для каждого процесса. Нажмите на заголовок столбца, чтобы увидеть, кто боров. 🙂

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

Это связано не с доступной оперативной памятью, а с чем-то, что называется «фиксация заряда» и «фиксация лимита». «Предел фиксации» представляет собой сумму (ОЗУ — невыгружаемая виртуальная память) + текущий размер файла подкачки. (Не свободная ОЗУ, а только ОЗУ.) Таким образом, система, скажем, с 8 ГБ ОЗУ и 16 ГБ текущего файла подкачки, будет иметь ограничение на фиксацию около 24 ГБ («примерно», потому что ОЗУ, которое содержит невыгружаемое содержимое, не учитывается в пределе фиксации) .

«Плата за фиксацию» — это объем частного адресного пространства, существующего в настоящее время в системе. Это должно быть меньше, чем предел фиксации, иначе система не может гарантировать, что материал имеет место быть.

На вкладке «Производительность» диспетчера задач вы можете увидеть эти два числа с легендой «Зафиксировать (ГБ)». например Я смотрю на машину с надписью «Commit (GB) 1/15». Текущая плата за фиксацию составляет 1 ГБ из лимита в 15 ГБ.

Если такая программа, как 7zip, пытается сделать, например. VirtualAlloc размера > (commitLimit — commitCharge), т. е. больше, чем «оставшийся» предел фиксации, тогда, если ОС не может расширить файл подкачки, чтобы сделать предел фиксации достаточно большим, запрос на выделение не выполняется. Это то, что вы видите. (На самом деле в Windows нет сообщения об ошибке «недостаточно физической памяти», а не для доступа в пользовательском режиме! Только для виртуальной.)

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

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

Мне кажется, что 7zip слишком агрессивно пытается выделить v.a.s., возможно, он масштабирует свои запросы в зависимости от размера вашей оперативной памяти? Вы уверены, что нет меньшего размера файла подкачки, где 7zip был бы счастлив? Вы используете 32-битную или 64-битную версию 7-zip? Использование 32-разрядной версии устранило бы эту проблему, поскольку она не может использовать более 2 или, может быть, 3 ГБ виртуального адресного пространства.

Ваш комментарий будет первым

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *