Пользователь
0,0
рейтинг
15 марта 2012 в 21:50

Файл подкачки Windows из песочницы

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

Самые распространенные советы выглядят примерно следующим образом: для машин с маленьким ОЗУ нужно задавать размер файла подкачки k*RAM, где RAM — объем физической памяти, k — какой-нибудь коэффициент, коих много самых разнообразных. И 1,5, и 2, и даже 3 встречал. Если же планок памяти стоит на 4Гб и больше, то «смело отключайте виртуальную память в принципе».

Статья о том, стоит ли верить ли этим советам, и если да, то насколько.

Что такое файл подкачки?


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

Если отключить файл подкачки


Если попытаться отключить файл подкачки в windows 7, система выдаст предупреждающее окно, в котором сообщит о неприятных последствиях:


Отсюда следует, что не стоит полностью отказываться от использования виртуальной памяти, иначе в случае краха не получится даже проанализировать причину сбоя. Указанный на скриншоте минимальный размер в 1МБ берется из расчета конфигурации дампа памяти в настройках «загрузка и восстановление»:


Если выбрать для записи отладочной информации полный дамп, то размер увеличивается на несколько порядков. У меня он составил 400МБ.

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

Если перенести файл подкачки на другой раздел


Куча статей по оптимизации вашей ОС рекомендует перенести файл подкачки на отдельно созданный и отформатированный в FAT32 раздел жесткого диска. При этом повышается быстродействие и уменьшается фрагментация этого файла.

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

Размер файла подкачки


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

Для начала потребуется утилита Process Explorer, она является бесплатным аналогом дефолтного Task Manager'a, но обладает многими преимуществами. Скачать можно по ссылке.

После запуска Process Explorer'a выберите самые ресурсоемкие в плане используемой памяти приложения, которые используете в повседневной жизни, и запустите их все одновременно. В окне Process Explorer'a нажмите CTRL+I или выберите в меню View/System Information, из всего многообразия представленных в окне данных нужно выбрать область Commit Charge


Значение Peak — пиковое значение выделенной памяти для всех приложений, складываемое из физической и виртуальной памяти.

Далее вооружаемся калькулятором и вычитаем из этого значения размер оперативной памяти. Если получается отрицательное значение — берем требуемые системой 400МБ (может быть другое значение), необходимые для создания дампа. Если получается положительное значение — выставляем таким минимальное и максимальное значение файла подкачки. Можно подстраховаться и установить «про запас» максимум выше, но тогда вырастет фрагментация файла в случае увеличения его размеров. Поэтому лучше зафиксировать на одном месте.

Литература


Статья Марка Руссиновича Pushing the Limits of Windows: Virtual Memory;
Перевод на русский язык Преодолевая ограничения Windows: виртуальная память;
Описание программы Process Explorer .
Олег @xandr0s
карма
19,2
рейтинг 0,0
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (78)

  • +2
    Плашка памяти дешевле нового НЖМД
    • +3
      Вне зависимости от объема RAM, если вам нужны корректные дампы памяти, необходим файл подкачки.
      • 0
        Объясните пожалуйста, как можно анализировать падение системы из дампа памяти если вы не знаете как с ним работать?
        • +6
          В интернете туториалов на тему предостаточно. Моя Win7 за два с половиной года падала в BSoD трижды, всe три раза я успешно нашел и безжалостно казнил виновников с помощью анализа дампа.
          • +1
            А мне обычно достаточно записи в системном логе…
          • 0
            Нет желания оформить исследования дампа в виде статьи? Думаю многие будут благодарны.
        • +2
          С дампом памяти не знаете как работать? Существует куча статей и программных средств для анализа dmp-файлов, целые форумы завалены различными кодами и методами борьбы с ними. По первым двум ссылкам, указанным в статье, можно попасть в блог Марка Руссиновича, у него есть несколько статей по работе с кодами BSOD. Например вот перевод одной из последних.
          • 0
            В интернете бродит батник kdfe.bat (Kernel debugger Front End) авторством Alexander Suhovey. С его помоншью выявление проблемного драйвера или устройства еще проще.
            • 0
              Сам пользуюсь именно этим батником в сумме с программой BlueScreenView.
    • +2
      При равном объеме плашка памяти дороже чем НЖМД
    • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Даже не знаю… когда-то много времени уделял этому вопросу. Сейчас поставил себе с запасом 1 гиг (памяти 8), глюком не замечаю. Формат диска не принципиален для меня — ССД.
    • 0
      Для вас принципиальна частота обращений к нему.
      • +8
        она не критична — этот вопрос изучил :). точнее она не такая, чтобы существенно влиять на длительность жизни диска, если вы про это.
  • +2
    Так и не понял, если памяти много, а дампы не нужны, то можно смело отключать файл подкачки?
    • 0
      Не знаю, насколько правдоподобна информация о невозможности использования ReadyBoost и SuperFetch без файла подкачки, поскольку не имею возможности проверить на практике и не нашел подтверждения на просторах рунета.
      • 0
        А нафига ReadyBoost, если кэш файлов запросто умещается в физическую память?
        • +2
          Файловый кеш, ReadyBoost и SuperFetch — совершенно разные технологии. Файловый кеш хранит в оперативной памяти копию того, что уже было когда то запрошено с диска. ReadtBoost хранит копии того, что было запрошено с жесткого диска на флешках. SuperFetch использует время простоя для того, чтобы префетчить (заранее прочитать области с диска в файловый кеш) места с диска, которые исторически использовались больше всего.

          Всем трем совершенно плевать на наличие pagefile-а.
          • 0
            >Файловый кеш хранит в оперативной памяти копию того, что уже было когда то запрошено с диска.
            а где можно по подробей почитать, как его настраивать?
            беглый поиск в гугле дал результаты типа «очистить кэш браузера»(
            • 0
              Подробнее у Руссиновича/Соломона/Ионеску. У них этому целая глава посвящена. Если коротко, то когда кто-то пытается считать данные из файла, драйвер файловой системы обращается к кеш-менеджеру за данными при помощи CcCopyRead сотоварищи, кеш-менеджер пытается смепить нужный участок в один из VACB слотов (стоит подчеркнуть, что они не являются, собственно, кешем — только «рабочая область») и пытается скопировать память в запрошенный буфер. Если данные еще не закешированы, то происходит page fault и memory manager выполняет pagein — чтение нужной страницы с диска, если же данные уже находились в кеше (standby/modified списке), то нужные страницы уже будут в памяти и при будут непосредственно использованы при меппинге в VACB.

              Вот такая диаграммка отсюда


              Или есть подобная картинка на странице 17 здесь
    • +2
      Отключайте… 4 года без свопа — полет нормальный.(сейчас 8Gb Ram Win7х64, до этого XP 4Gb Ram). Переполнил память один раз, Beta FireFox отличился. :)
      • +1
        А что случается при перевыполнении?
        Умирает только Firefox или вся система?
        • 0
          У меня Firefox повис с репликой " Out of memory". Закрыл и продолжил работать.
        • +2
          Случаются дичайшие тормоза. Реально можно наблюдать, как системе не хватает ресурсов. Когда все приложения висят намертво, а диспетчер задач не может открыться из-за нехватки памяти. Остается только надеяться, что какое-нибудь приложение либо отзовется на запрос закрытия, либо само по стечению обстоятельств освободит немного памяти.
          У самого хоть и 12 ГБ, но крутится несколько виртуальных машин, так что пару раз наблюдал переполнения такого рода. С покупкой SSD вернул своп на место — все равно в нормальных условиях к нему обращений практически нет, зато на душе спокойнее.
      • +2
        Согласен с Вами, у самого тоже 8 Гб, и практический всегда как минимум 50% свободно. Да даже если из-за какого-нибудь firefox beta вся физическая память отожрётся, то своп тут уже тоже не поможет.)
        • 0
          так как «firefox beta» это 32 разрядная программа, то отожрать «всю память» она не может. максимум 2 гига.
      • 0
        То же самое, 16Г памяти, своп давно отрубил, полгода полёт отличный, ни разу не было ни тормозов, ни bsd.

        image
    • –4
      Нет, если памяти много, то не работают «старые» формулы. Надо оставить его, но небольшим относительно размера памяти.
    • +3
      Если памяти заведомо достаточно, то можно и отключить. Хотя в подавляющем большинстве случаев Вы этим ничего не выиграете (но и не проиграете).
  • +16
    Статья из разряда «вредные советы». Единственное верное решение вообще не лазить в настройки файла подкачки и оставить это системе.
    • +5
      Поддерживаю, в статье не раскрыта главная проблема возникновения рекомендаций по отключению файла подкачки — «привычке» Windows XP иметь максимальный резерв физического ОЗУ для «непредвиденных» ситуаций.
      Это следствие «древности» ядра NT5 которое появилось еще тогда, когда 256МБ были роскошью. А НМД уже тогда были 7200 об/мин, т.е. достаточно быстрыми. Поэтому ОС всегда старалась «сбросить» большую часть данных в свопинг.

      Win7 предполагает работу в условиях постоянного избытка оперативной памяти (например 32х разрядное приложение с адресуемым максимумом в 2Гб на 8 Гб физической памяти). Поэтому проблемы «резерва» нет и ОС старается занять максимум памяти без «сбрасывания» страниц на диск. Обращения к диску появляются только в действительно необходимых случаях — при сбое памяти, к примеру.
      А значит изменяя размер свопа в Win7 существенного прироста быстродействия добиться нельзя.

      Ну кроме одновременного использования 4-5 виртуальных машин, конечно :)
    • 0
      Если оставить все на самотек, то рано или поздно начинаешь искать место, закончившееся на системном разделе. Хотя при установке операционка явно указала, сколько гигабайт ей будет необходимо.
      Как я указал в начале статьи:
      По умолчанию после установки Windows файл подкачки увеличивается автоматически при заполнении текущего объема.

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

        Количество места на системном разделе это отдельный разговор. Система ведь указывает только минимально необходимый для работы объем, а вот сколько места на системно разделе нужно именно при вашем варианте использования, можно выяснить только опытным путем.
  • –3
    Файл подкачки отключил когда в 2005 году у меня стало 768 Мб памяти вместо 256. С тех пор никогда ни на каком объеме памяти не включаю подкачку, кроме редкого кратковременного форс-мажора. И другим не советую пользоваться этой устаревшей технологией. Дампы памяти не нужны никому, кроме разработчиков ОС или бета-тестеров ОС.
    • +1
      Ну не знаю. У меня сейчас 8 гиг памяти, и обычно ее хватает с головой. Но файл подкачки я оставил с настроками по умолчанию — места на диске мне не жалко. Одно время был выключен — пару раз упал с переполнением памяти Eclipse и один раз Chrome, после этого включил обратно. Да и дамп памяти пару раз помог найти виновникa BSoD.
      • 0
        Место на диске не причем. Я не доверяю операционным системам в том, что они не станут туда писать, когда еще много свободной физической памяти.
        У меня тоже 8 Гб, но падает только тогда, когда я запускаю слишком много приложений, одно из которых виртуалка. Иным образом еще не удалось занять 8 Гб.
        Виновника BSoD нужно искать не по дампу памяти, а по имени драйвера и коду ошибки на синем экране.
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Я считаю файл подкачки, а также PreFetch и SuperFetch устаревшими технологиями, которые не стоят ничего. Проще купить за $50 очередные 8 Гб RAM.
        • НЛО прилетело и опубликовало эту надпись здесь
          • 0
            Если вы о кешировании дисковых данных на диске (PreFetch и SuperFetch это ведь про это?), то я с вами не согласен и я считаю, что никакое SSD-дисковое кеширование не будет работать быстрее обычного диского кеша. Единственно верный путь увеличения производительности — увеличить объем ОЗУ, тем самым увеличив и дисковый кеш операционной системы. Кешировать блоки диска на самом же диске я считаю абсурдом.
  • +1
    Отключил ради экономии места на SSD. 8 гигов памяти, win7 x64 sp1, полет нормальный. Постоянно доступно около 5гб, если запущена ресурсоемкая игрушка, то она съедает 2-4 гига, гиг остается.
    • 0
      У меня SSD и 4Гб оперативной памяти. Файл подкачки отключил. Иногда винда предлагает закрыть какое-нибудь ресурсоемкое приложение чтоб то не кушало память :)
      Думаю, пол гига на SSD и пару гиг на HDD будет вполне достаточно на любые случаи жизни.
      • 0
        просто докупите еще 4 гб оперативки
  • +3
    Я что то так и не понял, какой профит от отключения или изменения размера? Кроме экономии места в случае sdd.
    • +1
      А нафига мне на диске файл подкачки на 10 гиг, если у меня мои 8 гиг памяти еще ни разу не заполнялись?
      • 0
        Ну не знаю, я вот на диске 1,5Т свои заполнить тоже уже 3-й год не могу, что теперь делать?
        • 0
          У меня 2 ТБ, но как бы не стоит задача их заполнить каким-то мусором, пусть лучше пустует.
          • +3
            Я всего лишь хочу узнать реальную пользу от этого, 1 файл в системном разделе это не аргумент, посмотрите в папку темп ) да и вообще Windows папка растет как на дрожжах. А вот фейл который может случиться из-за нехватки памяти, довольно реален. Как ниже писал jekket потерянное время и нервы не вернуть. Ну а если компьютер использовать сугубо для серфинга вконтакта и одноглазиков, то имхо лучше вообще не открывать никакие настройки, и попросить забрать у себя права админа.
            • 0
              Фейл из-за нехватки памяти, да винда начинает кричать, что мало памяти еще за 1,5 гига до окончания этой самой памяти. Если уж совсем забить, то может какой-то приложение вырубиться.
              У меня еще в памяти виртуальный диск на гиг, для всяких временных файлов :)
          • +1
            Еще надо не забыть не использовать гибернацию, а то ведь она тоже в файл сохраняетсья, а-я-яй :)
            • 0
              Она кстати тоже выключена, так как сброс 8 гиг на винт много времени занимает, также как и обратный процесс. У меня все компы домашние в S3-режиме работают. Привык уже что компы включаются и выключаются за несколько секунд.
              • 0
                У меня тоже s3, но вот hiberfil.sys всеравно используеться и весит 6гиг.
                • 0
                  Я знаю, он весит по умолчанию, чтобы его убрать, в консоли набрать powercfg -h off
                  Этот то файл тем более не нужен, если этим режимом не пользуешься, по сути он только для резервирования места лежит.
      • +1
        Это до первой утечки памяти
        • 0
          Да что Вы у меня файл подкачки отключен с тех пор как в компе завелось 8 гигов памяти, а это уже года 3-4, и особых проблем не испытываю. ЧЯДНТ?
      • 0
        Если файл подкачки включен, Windows может выгружать давно не использовавшиеся страницы (грубо говоря — насколько помню, у менеджера памяти какие-то свои хитрые эвристики есть для определения того, какие страницы «давно не использовавшиеся») в файл подкачки, даже если свободное место в физической памяти есть. Дополнительное высвободившееся место будет использовано под файловый кэш. Теоретически, это в общем и целом дает большую производительность, чем если бы файл подкачки начинал использоваться, только когда физическая память полностью забита (или чем если бы файл подкачки отсутствовал).
        • 0
          Когда у тебя постоянно 4-5 гиг свободно, то там не то что файловый кэш можно держать, туда можно чуть-ли не все частоиспользуемые приложения загрузить.
  • +4
    Я композер и работаю на xeon-e с 24гигами Озу. Во время рендера композиции при включенном мультипроцессинге и выделением по 3 гигабайта на каждое ядро в After Effects, я очень часто наблюдал картину полной загруженности физической памяти. Если отключить своп, то со временем (что хуже всего) АЕ начинает чувствовать нехватку и обращатся к свопу. Если же у него это не выходит — он выдает ошибку и стопит просчет. До этого он мог считать пару часов драгоценного времени, и никто вам уже их не вернет. Вывод такой — не знаешь, зачем тебе это нужно — не трогай, не меняй, пусть действия исходят из потребности, а не любопытства, которое при серьезной работе может стоить очень дорого.
    • –2
      Ну так это уже зависит от настроек софта, но обычно жрущий софт сам умеет свопить.
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          В том же Photoshop можно настроить сколько памяти жрать, а также какие диски юзать если памяти маловото, конечно это своп в чистом виде, но предназначение схожее.
    • 0
      >Вывод такой — не знаешь, зачем тебе это нужно — не трогай, не меняй, пусть действия исходят из потребности, а не любопытства, которое при серьезной работе может стоить очень дорого.
      Ну вы из весьма специфичной проблемы делаете общий вывод. Думаю, люди, которы пользуются такими программами понимают, сколько ресурсов они потребляюьт и не станут отключать своп.
  • +1
    Может не стоит swap файл называть виртуальной памятью?
    • 0
      Почему не стоит виртуальный RAM называть виртуальным?
      • +3
        Потому что виртуальная память — это не swap, а концепция организации памяти, где каждый процесс имеет виртуальное адресное пространство, страницы которого могут быть отображены на физические устройства.
        • 0
          ru.wikipedia.org/wiki/%D0%A1%D0%B2%D0%BE%D0%BF%D0%B8%D0%BD%D0%B3
          Подкачка страниц (англ. Paging; иногда используется термин swapping от swap, /swɔp/) — один из механизмов виртуальной памяти, при котором отдельные фрагменты памяти (обычно неактивные) перемещаются из ОЗУ на жёсткий диск (или другой внешний накопитель, такой как Флеш-память), освобождая ОЗУ для загрузки других фрагментов памяти. Такими фрагментами в современных ЭВМ являются страницы памяти.
          • +2
            Все правильно, swapping — это один из механизмов виртуальной памяти. Но это не эквивалентные понятия.

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

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

            • –2
              своп — виртуальная память т.к. он эмулирует ОЗУ, но расположен на устройствах без оперативного доступа.
              В статье с термином перебор. Согласен.
              • +4
                С таким же успехом можно заявить, что RAM это тоже виртуальная память.

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

                Из контекста очевидно, что имеет ввиду автор, но почему бы не называть вещи своими именами?)
              • НЛО прилетело и опубликовало эту надпись здесь
            • 0
              но все равно по контексту все понятно.
  • +2
    Была отличная серия статей про память в Windows от amirul, я бы рекомендовал читать их:
    Here Be Dragons: Part 1 Part 2 Part 3
  • +1
    из статьи вынес только одно. Process Explorer прикольная программка — буду пользоваться
  • 0
    Про отключение файла подкачки сложно сказать однозначно. Отключать это всё-таки как-то излишне радикально.

    Виндовс любит свопить, в том числе ядро и драйверы. Вот здесь есть немного советов, как увеличить производительность сетевой подсистемы. Хотя это скорее для серверной версии, а статья хоть и явно не оговаривается, но всё же про десктопы :)

    При отключении swap-файла совсем, соответственно, всё будет в быстрой RAM, но есть шанс словить залипшую в глубокой нирване систему. Компромиссом было бы размещение swap-файла на SSD. Проблема частых записей при своппинге на SSD — это головная боль системы и контроллера SSD. Всякие там Wear Leveling и Lazy Write пусть работают :)

    Для WinXP была куча статей по удержанию ядра в оперативе, вроде бы это давало призрачный шанс на некое повышение быстродействия, однако в то время оператива стоила подороже и на личном опыте не удалось проверить. В Win7 о таком думать уже как-то и не принято, Майкрософт неплохо заоптимизировал систему, да и 4Гб RAM на десктопе уже никого не удивляют.
  • +1
    Некоторые версии фотошопа не запускаются, если нет хотя бы минимального файла подкачки. Единственная причина по которой я его включил.
  • 0
    у меня 8гб и я понял, что активно работая в нескольких браузерах, фотошопе и ide памяти может вполне нехватать) в опере какая-нибудь вкладка начнет сжирать память и привет.

    единственное что я делаю с файлом подкачки — так это ставлю ему размер не по выбору системы, а рекомендуемый и фиксированный, чтобы не фрагментировался.
  • 0
    Может, не следует работать одновременно в нескольких браузерах?
    У меня система постоянно подтормаживала, пока не отключил swap — без него отзывчивость лучше. Правда, у меня 16 Гб и я всегда пользуюсь одним браузером. А «Оперу» уже давно снес за ненадобностью.

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