- Виртуальная память и файл подкачки Windows. Быть или не быть?
- Немного теории…
- Виртуальная память = swap + page ?
- Отключить файл подкачки – ускорить производительность?
- Управление виртуальной памятью.
- Управление ОЗУ, виртуальной памятью, подкачками страниц и памятью в Windows
- Аннотация
- Процессы и адресные пространства
- Файл подкачки
- Производительность, ограничения архитектуры и ОЗУ
- Мониторинг использования ОЗУ и виртуальной памяти
Виртуальная память и файл подкачки Windows. Быть или не быть?
Что такое файл подкачки Windows?
Page file или по-русски файл подкачки Windows, входящий в структуру виртуальной памяти – это особый файл, который используется Windows для хранения тех данных, которые уже не помещаются в оперативную память, когда та заполняется во время работы. Пресловутый файл подкачки Windows можно настроить, однако компьютер может с лёгкостью использовать файл подкачки Windows по своему усмотрению и без дополнительных настроек.
Нередко значение функции виртуальной памяти понимается неверно. Многие из пользователей воспринимают его как причину замедления работы компьютера (иногда не безосновательно). Теоретически всё ясно – пользоваться памятью, размещённой в области жёсткого диска, медленнее, чем физической. Но всем также ясно, что факт наличия файла подкачки Windows лучше, нежели его отсутствие. В чём проблема и кто прав? Начнём с того, что, говоря про виртуальную память, мы фактически подразумеваем именно ДВА файла : pagefile.sys и swapfile.sys.
Немного теории…
Просто чтобы вы знали с чем имеете дело. Подкачка (она же Paging) – схема управления оперативной памятью, при помощи которой система хранит и отдаёт данные на/с вторичных хранилищ по требованию в основную память. По такой схеме работы память может извлекать данные одноразмерными блоками, которые получили наименование страница (-ы) – page(s). (Для русского уха в понятиях подкачки и страница памяти общего ничего, хотя, как видно, английская этимология слов раскрывает “одинаковость” терминов.) Так вот, подкачка – важнейшая часть реализации виртуальной памяти любой операционной системы, благодаря которой хранилища, которые изначально не используются для работы с оперативной памятью, активно начинают её поддерживать.
Виртуальная память же – это техника или способ управления памятью, включающий использование и технических и программных средств. Эта “техника” представляет собой преобразование адресов памяти, используемых какой-то программой (виртуальные адреса) в физические (реально существующие) адреса памяти компьютера. Основное или главное хранилище памяти – как видится любой программой, службой, задачей – неразрывно следующие друг за другом сегменты адресного пространства. И Windows (в нашем случае) управляет этими ячейками виртуальных адресов, переназначая “реальную” память на виртуальную. За автоматический перевод виртуальных адресов в физические отвечает MMU (Диспетчер Памяти) центрального процессора. И программное обеспечение Windows даёт возможность пользователю расширять границы виртуальной памяти, создавая впечатление, что “оперативки” на компьютере стоит больше, чем есть на самом деле.
Виртуальная память = swap + page ?
Свэп файл (Swap file), “очередной” файл подкачки Windows располагается на жёстком диске. По умолчанию swap находится по адресу C:\swapfile.sys., второй лежит там же. Оба файла по умолчанию скрыты (как сделать скрытые файлы доступными для вашего взора, прочтите статью Операции с ярлыками).
Итак, компьютеру хранить данные легче прямо в планках оперативной памяти, чем просто читать и хранить на винчестере. Он хранит мегабайты памяти именно в них. К примеру, когда вы запускаете браузер, файлы Хрома или Мозиллы читаются с жёсткого диска и помещаются в RAM. Когда вы просматриваете страницу в сети, она хранится в оперативной памяти. А теперь о разнице между файлами.
В тот момент, когда установленного объёма RAM не хватает, Windows возвращает данные для хранения обратно на жёсткий диск и размещает его в файл подкачки swapfile.sys винчестера. Этот процесс и есть виртуальная память системы в действии. Она (в виде swapfile) выполняет роль дополнительной. Если вы не пользуетесь уже запущенной программой, Windows отсылает её в виртуальную часть памяти pagefile.sys. Это уже – запасная память. Косвенным признаком этого процесса (изъятие данных из виртуальной памяти) может служит помигивание индикатора загрузки жёсткого диска в тот момент, когда пользователь выводит на передний план запущенную программу после некоторого простоя. Подробнее о том, какой файл и за что отвечает, можно узнать в статье про Swapfile.sys Hiberfil.sys Pagefile.sys .
Отключить файл подкачки – ускорить производительность?
Да с какой стати-то? Да, скорость чтения из виртуальной памяти гораздо ниже, нежели напрямую. Однако при отключении файла подкачки программа, лишённая памяти RAM, прекратит исполнение, и при запуске нескольких приложений Windows впадёт в ступор. Тяжеловесные программы вообще откажутся запускаться. Где же выгода? Windows прекрасно регулирует использование ресурсов без вмешательства пользователя. Отключённая виртуальная память сэкономит несколько гигабайт пространства диска, но тогда вам придётся забыть о стабильности Windows. Другое дело, что помещённая информация на диск всегда фрагментирована, и надежда на прирост производительности благодаря большим объёмам “виртуалки” сводится к минимуму. Удалять pagefile стоит лишь для его же профилактики: Windows его воссоздаст.
Однако ситуация меняется, если в качестве хранилища в системе используется не “крутилка”, т.е. обычный HDD и флешки, а твёрдотелы SSD. Представьте себе: скорости обмена данными возрастают в разы, а значит, и скорость превращения виртуальной памяти в физическую также в плюсе. Вобщем, у виртуальной памяти одни плюсы куда не кинь взгляд:
- программам не нужно постоянно “заглядывать” в область совместно используемой памяти, “разрывая” ресурсы системы на части.
- не забывайте об усиливающейся защите благодаря изоляции памяти, которая работает по принципу исключения разных процессов друг от друга, если они используют память таким образом.
- pagefile.sys благодаря своим размерам, да и просто своим существованием, заставляет систему думать, что вы всё-таки решились “докупить оперативы”.
Управление виртуальной памятью.
Размер файла подкачки регулируется автоматически. Однако настройки файла подвластны изменениям. Это можно сделать, проделав следующий путь:
Пуск – правой мышкой по Компьютер – выбрать Свойства.
В появившемся окне в левой части выберите Дополнительные параметры системы. Во вкладке Дополнительно выберите в пункте Быстродействие кнопку Параметры…
В окне Параметры быстродействия выберите вкладку Дополнительно. В разделе Виртуальная память нажмите на кнопку Изменить… Вы увидите параметры настроек виртуальной памяти. Снимите галку с автоматического определения объёма файла подкачки и установите свой. Здесь же можно заставить систему хранить файл подкачки на другом локальном диске, если винчестер разбит на несколько дисков. Просто укажите нужный диск, укажите размер или предоставьте выбор системе и нажмите Задать и ОК.
Да пусть будет. Он вам мешает? А программам будет откуда черпать дополнительные ресурсы…
Управление ОЗУ, виртуальной памятью, подкачками страниц и памятью в Windows
Исходная версия продукта: Windows 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.0 | 4 ГБ |
Windows 2000 Professional | 4 ГБ |
Windows 2000 Standard Server | 4 ГБ |
Windows 2000 Advanced Server | 8 ГБ |
Windows 2000 Datacenter Server | 32 ГБ |
Windows XP Professional | 4 ГБ |
Windows Server 2003 Web Edition | 2 ГБ |
Windows Server 2003 Standard Edition | 4 ГБ |
Windows Server 2003 Enterprise Edition | 32 ГБ |
Windows Server 2003 Datacenter Edition | 64 ГБ |
Windows Vista | 4 ГБ |
Windows Server 2008 Standard | 4 ГБ |
Windows Server 2008 Enterprise | 64 ГБ |
Windows Server 2008 Datacenter | 64 ГБ |
Windows 7 | 4 ГБ |
Файл подкачки
ОЗУ — это ограниченный ресурс, тогда как в большинстве практических целей виртуальная память не ограничена. Может быть много процессов, каждый из которых имеет собственное 2 ГБ частного виртуального адресного пространства. Если память, используемая всеми существующими процессами, превышает объем доступной оперативной памяти, операционная система перемещает страницы (4 КБ) одного или более виртуальных адресных пространств на жесткий диск компьютера. Это освободит кадр ОЗУ для других видов использования. В системах Windows эти страницы с страницами хранятся в одном или Pagefile.sys файлах в корне раздела. В каждом разделе диска может быть один такой файл. Расположение и размер файла страницы настраиваются в свойствах системы (нажмите кнопку «Дополнительные»,«Производительность» и нажмите кнопку «Параметры»).
Пользователи часто задают вопрос о том, насколько большим должен быть этот pagefile? На этот вопрос не существует одного ответа, так как он зависит от объема установленной оперативной памяти и объема виртуальной памяти, требуемой для рабочей нагрузки. Если других сведений нет, то в качестве отправной точки является обычная рекомендация в 1,5 раза больше установленной оперативной памяти. В серверных системах обычно необходимо иметь достаточный объем оперативной памяти, чтобы не было нехватки и не использовался pagefile. В этих системах не может быть полезного предназначения для обслуживания большого pagefile. С другой стороны, если место на диске достаточно, то сохранение большого размера (например, в 1,5 раза больше установленного ОЗУ) не вызывает проблем, а также избавляет от необходимости беспокоиться о том, насколько большим будет размер ОЗУ.
Производительность, ограничения архитектуры и ОЗУ
В любой компьютерной системе по мере увеличения нагрузки (количества пользователей, объема работы) производительность снижается, но нелинейно. Любое увеличение нагрузки или спроса после определенного момента приводит к существенному снижению производительности. Это означает, что некоторым ресурсам не хватает ресурсов и они стали узким местом.
В определенный момент не удается увеличить ресурс, который находится в нехватке. Это означает, что достигнут предел архитектуры. Ниже lyly reported architectural limits in Windows include the following:
- 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) одинаковы, но ресурсы ядра, такие как PTES и различные пулы памяти, являются динамическими. Эта новая функция позволяет использовать как страницную, так и невыгежную память. Это также позволяет PTES и пулу сеансов увеличиваться за пределы, которые были рассмотрены ранее, до того момента, когда все ядро исчерпано.
Часто найденные и кавычках:
На сервере терминалов до использования 4 ГБ ОЗУ будет использоваться 2 ГБ общего адресного пространства.
В некоторых случаях это может быть верно. Однако необходимо отслеживать систему, чтобы узнать, применимы ли они к конкретной системе. В некоторых случаях эти заявления являются выводами определенных Windows NT 4.0 или Windows 2000 и не обязательно применимы к Windows Server 2003. В Windows Server 2003 были внесены значительные изменения, чтобы снизить вероятность того, что эти архитектурные ограничения будут фактически достигнуто на практике. Например, некоторые процессы, которые находились в ядре, были перемещены в процессы без ядра, чтобы уменьшить объем памяти, используемый в общем виртуальном адресной области.
Мониторинг использования ОЗУ и виртуальной памяти
Системный монитор — это инструмент, который позволяет отслеживать производительность системы и определять местоположение узкого места. Чтобы запустить монитор производительности, нажмите кнопку «Начните», выберите «Панель управления»,«Администрирование» и дважды щелкните «Монитор производительности». Вот сводка по некоторым важным счетчикам и их сведениям:
Память, зафиксированные вбайтах: этот счетчик является показателем потребности в виртуальной памяти.
Здесь показано, сколько бытов было выделено процессами и на что операционная система зафиксирует кадр страницы ОЗУ или слот страницы в этом окле (или, возможно, и то, и другое). По мере того как размер фиксных данных превышает объем доступной оперативной памяти, увеличивается размер подкачка, а используемый размер подкачка также увеличивается. В определенный момент действия по разгонам начинают значительно влиять на производительность.
Процесс, рабочий набор, _Total: этот счетчик является показателем активного использования виртуальной памяти.
Этот счетчик показывает, сколько ОЗУ требуется для того, чтобы виртуальная память, используемая для всех процессов, была в оперативной памяти. Это значение всегда является кратным 4096, что является размером страницы, используемой в Windows. Так как потребность в виртуальной памяти выходит за пределы доступной оперативной памяти, операционная система настраивает объем виртуальной памяти процесса в рабочем наборе, чтобы оптимизировать доступное использование ОЗУ и свести к минимуму разгибание по сети.
Файл подкачка, используемый %pagefile: этот счетчик является показателем того, какая часть файла страниц фактически используется.
Этот счетчик используется для определения размера подкачка. Если этот счетчик достигает 100, то подкачка заполнена, и все будет работать. В зависимости от настояния рабочей нагрузки, возможно, необходимо, чтобы размер подкачка был достаточно большим, чтобы он использовался не более 50–075 процентов. Если используется большая часть подкачка, наличие более одного на разных физических дисках может повысить производительность.
Память, страницы/с: этот счетчик является одной из наиболее распространенных мер.
Высокое значение этого счетчика не обязательно означает, что узкое место производительности связано с нехваткой ОЗУ. Операционная система использует систему подкачки для других целей, кроме замены страниц из-за чрезмерного обязательства памяти.
Память, выходные данные страниц/с: этот счетчик показывает, сколько страниц виртуальной памяти было записано на страницу, чтобы освободить кадры страниц ОЗУ для других целей каждую секунду.
Это лучший счетчик для отслеживания, если вы подозреваете, что разгон является узким местом производительности. Даже если количество зафиксированных данных больше установленного ОЗУ, если в большинстве периодов времени значение выходных данных страниц в секунду низкое или нулевое, проблем с производительностью недостаточного объема ОЗУ не возникает.
Память, кэш-память, невыгкупаемая память пула, память, количество на странице пула, память, общее количество системных кодов, память, общее количествобайтов системного драйвера:
Сумма этих счетчиков является показателем того, сколько из 2 ГБ общей части виртуального адресного пространства размером 4 ГБ фактически используется. Используйте их, чтобы определить, достигает ли ваша система одного из ограничений архитектуры, которые были рассмотрены ранее.
Память, доступное МБайт: этот счетчик измеряет объем ОЗУ, доступный для удовлетворения требований к виртуальной памяти (либо для новых выделений, либо для восстановления страницы из подкачка).
Если ОЗУ не хватает (например, «Зафиксированные», больше установленного ОЗУ), операционная система попытается сохранить определенную часть установленной оперативной памяти доступной для немедленного использования путем копирования страниц виртуальной памяти, которые не используются в активном режиме, на этот подкачка. Таким образом, этот счетчик не достигает нуля и не обязательно является хорошим показателем того, не хватает ли системе ОЗУ.