Есть ли польза или ущерб от удаления файла подкачки на 8 ГБ ОЗУ?

213

Я использую Windows 7 на двухъядерном процессоре x64 AMD с 8 ГБ оперативной памяти.

Мне даже нужен файл подкачки?

Поможет ли это удалить или ухудшить производительность?

Будет ли иметь значение, если это сервер или рабочий стол?

Есть ли разница между Windows 7 и Windows 2008 с файлом подкачки?

Джейсон
источник

Ответы:

299

TL; DR версия: пусть Windows обрабатывает ваши настройки памяти / файла подкачки. Люди из MS потратили гораздо больше времени на размышления над этими вопросами, чем большинство из нас, сисадминов.

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

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

Описание конкретных задействованных механизмов займет много страниц (см. Главу 7 « Внутренние компоненты Windows» и обратите внимание, что скоро будет доступна новая редакция ), но есть несколько приятных моментов, на которые следует обратить внимание. Во-первых, большая часть того, что находится в ОЗУ, уже находится на диске - например, программный код, извлекаемый из исполняемого файла или DLL. Так что это не нужно записывать в файл подкачки; Windows может просто отслеживать, откуда изначально были получены биты. Во-вторых, Windows отслеживает, какие данные в ОЗУ используются наиболее часто, и таким образом удаляет из ОЗУ те данные, которые остались самыми длинными без доступа.

Полное удаление файла подкачки может привести к перегрузке диска. Представьте себе простой сценарий, когда некоторые приложения запускаются и требуют 80% существующей оперативной памяти. Это вынудит текущий исполняемый код из ОЗУ - возможно, даже код ОС. Теперь каждый раз, когда другие приложения - или сама ОС (!!) нуждаются в доступе к этим данным, ОС должна извлекать их из резервного хранилища на диске, что приводит к значительным сбоям. Поскольку без файла подкачки, служащего резервным хранилищем для переходных данных, единственное, что может быть разбито на страницы, - это исполняемые файлы и библиотеки DLL, в которых изначально были встроенные резервные хранилища.

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

Некоторые ссылки:

dmo отметил недавний пост Эрика Липперта, который помогает в понимании виртуальной памяти (хотя и менее связан с вопросом). Я помещаю это здесь, потому что я подозреваю, что некоторые люди не будут прокручивать вниз к другим ответам - но если вы находите это ценным, вы должны сделать голосование, так что используйте ссылку, чтобы попасть туда!

quux
источник
25
Для Джеффа и Джоэла: это рифмуется с «утками»
quux
2
На Солярисе он был / еще более вовлечен. Файл подкачки зеркалируется на RAM-диск, такой как tmpfs, поэтому память всегда почти заполнена, но очевидно, что это оптимальная стратегия.
Мартин Беккет
2
Я долго считал, что вместо того, чтобы позволить Windows управлять размером файла моей страницы, я должен установить его на фиксированный размер (например, минимум 2 ГБ, максимум 2 ГБ), потому что его увеличение и уменьшение может вызвать проблемы фрагментации. Это хорошая мысль, или я должен следовать вашей первой строчке и позволить Windows справиться со всем?
Джон Фухи
2
@ Mehrdad: потому что вы не хотите, чтобы 50% вашей оперативной памяти оставалось свободным. Конечно, вы можете сделать это, но вы потеряете 50% физической памяти, которую вы могли бы использовать в качестве дискового кэша для активных данных. Свободное ОЗУ является признаком неэффективности, это как грузовики FedEx на складе, а не в дороге. Это означает, что вы не перемещаете столько грузов, сколько могли бы, потому что вы тратите слишком много времени на погрузку и разгрузку.
Дэвид Шварц
2
@ Mehrdad: Проблема в том, что без файла подкачки существует много данных, которые должны храниться в ОЗУ, даже если к ним никогда не будет никакого доступа. Рассмотрим, например, любую память, выделенную процессом, который запускается при запуске системы, но предлагает сервис, который не будет использоваться в течение нескольких дней. Система не может доказать, что данные не будут доступны, и у нее нет другого места, кроме ОЗУ для ее хранения. Таким образом, кэш диска сокращается, пока данные хранятся в оперативной памяти, к которой не обращались в течение нескольких дней.
Дэвид Шварц
80

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

DMO
источник
47

Как я вижу из других ответов, я единственный, кто отключил файл подкачки и никогда не сожалел об этом. Большой :-)

И дома, и на работе у меня Vista 64-битная с 8 ГБ оперативной памяти. У обоих файл подкачки отключен. На работе для меня нет ничего необычного в том, чтобы иметь несколько экземпляров Visual Studio 2008, Virtual PC с Windows XP, 2 экземпляра SQL Server и Internet Explorer 8 с множеством вкладок, работающих вместе. Я редко достигаю 80% памяти.

Я также использую гибридный сон каждый день (спячка со сном) без каких-либо проблем.

Я начал экспериментировать с ним, когда у меня была Windows XP с 2 ГБ оперативной памяти, и я действительно увидел разницу. Классический пример был, когда значки на панели управления перестали показывать себя один за другим, но все сразу. Также значительно увеличилось время запуска Firefox / Thunderbird. Все начало работать сразу после того, как я что-то нажал. К сожалению, 2 ГБ было слишком мало для использования моих приложений (Visual Studio 2008, Virtual PC и SQL Server), поэтому я включил его снова.

Но сейчас с 8 ГБ я никогда не хочу возвращаться и включать файл подкачки.

Для тех, кто говорит о крайних случаях, возьмите это из моих времен Windows XP.
Когда вы пытаетесь загрузить большую сводную таблицу в Excel из запроса SQL, Excel 2000 довольно быстро увеличивает использование памяти.
Когда у вас отключен файл подкачки - подождите немного, а затем Excel взорвется, и система очистит всю память после него.
Когда у вас включен файл подкачки - вы ждете некоторое время, и когда вы заметите, что что-то не так, вы почти ничего не можете сделать с вашей системой. Ваш жесткий диск работает как ад, и даже если вам как-то удастся запустить диспетчер задач (после нескольких минут ожидания) и убить, excel.exeвы должны подождать минуту или около того, пока система не загрузит все обратно из файла подкачки.
Как я увидел позже, Excel 2003 обрабатывает одну и ту же сводную таблицу без каких-либо проблем с отключенным файлом подкачки, так что это не было «слишком большой проблемой набора данных».

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

Коротко: если вам известно об использовании памяти - вы можете безопасно отключить ее.

Изменить: я просто хочу добавить, что я установил Windows Vista SP2 без каких-либо проблем.

SeeR
источник
3
У меня был отключен файл подкачки, и я пожалел об этом, когда действительно использовал свою память. Так что будьте счастливы, у вас больше памяти, чем нужно.
Сэм
7
+1, "я тоже" :-). Та же самая история - 8 ГБ памяти, Vista x64, запуск Visual Studio с ReSharper + SQL Server Express + IIS + 1-2 виртуальных машины (каждая с 1500 МБ памяти) + куча утилит - никогда не было проблем.
Милан Гардиан
21
Мне нравится, что все говорят: «Microsoft потратила много часов на размышления над этой проблемой, так что не связывайтесь с ней», но при этом полностью игнорирует опыт реального мира. У меня был файл подкачки отключен начиная с XP, и я никогда не сожалел об этом. Это похоже на то, как в компьютер впрыскивается клёво.
AngryHacker
4
Это довольно стандартная практика - отключать пейджинг на серверах, на которых загружается iSCSI, пейджинг по SAN будет заметно медленным. Вам просто нужно следить за использованием памяти и держаться подальше от макс.
Крис С
6
-1 Я не вижу ссылок в этом ответе. На самом деле у меня произошел сбой системы, потому что файл подкачки был отключен и память в выгружаемом пуле переполнилась. Тем не менее, моя физическая память была только на 2 ГБ ...
Тамара Вийсман
34

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

Perfmon является инструментом для этого; не диспетчер задач. Ключевой счетчик - Память - Ввод страниц / сек . Это будет специально отображать ошибки на жестких страницах, те, где требуется чтение с диска, прежде чем процесс может быть продолжен. Мягкие страничные ошибки (которые большинство элементов на диаграмме в по умолчанию Page Отказы / с прилавка;! Я рекомендую игнорируя , что счетчик) на самом деле не является проблемой; они просто показывают элементы, считываемые из ОЗУ нормально.

Граф Perfmon http://g.imagehost.org/0383/perfmon-paging.png

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

Если вы видите график Memory - Pages Input / sec, который намного шире, чем этот, правильный ответ - либо уменьшить использование памяти (запустить меньше программ), либо добавить RAM. Изменение настроек вашего файла подкачки не изменит того факта, что от системы требуется больше памяти, чем на самом деле.

Удобный дополнительный счетчик для мониторинга - PhysicalDisk - Avg. Длина очереди (все экземпляры). Это покажет, насколько ваши изменения влияют на использование самого диска. Система с хорошим поведением покажет среднее значение этого счетчика на уровне 4 или менее на шпиндель .

quux
источник
1
ахните, кто-то даже изо всех сил пытается продемонстрировать, как проверить файл подкачки. классно.
cgp
1
Мертвая ссылка на картинку. Необходимо исправить.
kinokijuf
Да, «ImageHost.org закрыт»
Питер Мортенсен,
34

Я годами запускаю свою 8 ГБ Vista x64 без файла подкачки, без каких-либо проблем.

Проблемы действительно возникали, когда я действительно использовал свою память!

Три недели назад я начал редактировать действительно большие файлы изображений (~ 2 ГБ) в Photoshop. Один сеанс редактирования съел всю мою память. Проблема: я не смог сохранить свою работу, так как Photoshop требуется больше памяти для сохранения файла!

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

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

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

Сэм
источник
7
Вы должны экономить чаще: D, чтобы минимизировать убытки
alexandrul
1
Легко сказать, когда сохранение занимает несколько минут, это лаваш.
Сэм
Мы все счастливы, если вы используете более сложное программное обеспечение, но иногда «сбой» в конечном итоге приводит к «О, дерьмо, я давно не сохранял».
Деймон
19

Несмотря на то, что ответы здесь достаточно хорошо охватили тему, я все же рекомендую прочитать это:

http://blogs.technet.com/markrussinovich/archive/2008/11/17/3155406.aspx

Он говорит о размере ПФ почти в конце:

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

Мне очень нравятся статьи Марка.

Радим Черней
источник
+1, простая для Марка Руссиновича ссылка. Стоит отметить, что win7 даже выдает уведомление, указывающее, что вы не сможете «отследить системные проблемы», если отключите файл подкачки.
cgp
13

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

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

Кроме того, 8 ГБ сейчас кажутся большими, но через несколько лет это можно считать минимальным объемом памяти для большого количества программного обеспечения.

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

Дэйв Драгер
источник
4
Я бы пошел немного дальше и не закрыл файл подкачки. Это не совсем улучшается. Пусть окна делают это ... они знают лучше.
Майкл Харен
1
Просто попытался использовать Media Player Classic для загрузки файла 6 ГБ MKV. Это исчерпало меня из моей оперативной памяти и памяти файла подкачки. Вернулся в VLC довольно быстро. +1 за "никогда не знаешь, с чем столкнешься". В конечном итоге MPC потерпел крах, и моя RAM была восстановлена, но что, если вы получите DLL в стороннем программном обеспечении с утечкой памяти? У вас будет намного больше пробега, если у вас есть память на диске, чтобы помочь вам.
mpbloch
1
Плюс в том, что хорошего в том, чтобы иметь 8 ГБ, если вы вынуждены жить в постоянном страхе перед его использованием ?!
Дэвид Шварц
«Сохранить хотя бы небольшой файл подкачки» кажется мне немного странным, поскольку неясно, как Windows будет его использовать. Например, он может разбить его даже больше, чем больший файл подкачки, который предлагает больше места - я полагаю, но пока нет надежного источника по этому вопросу, я бы посоветовал совет относительно небольшого файла подкачки, возможно, вредный и рекомендовал бы вместо этого стандартную практику.
Мафу
6

Вы не упомянули, является ли это 64-битной версией Windows, но я думаю, что да.

Файл подкачки служит многим вещам, включая генерацию дампа памяти в случае BSoD (Blue Screen of Death).

Если у вас нет файла подкачки, Windows не сможет вывести страницу на диск, если не хватит памяти. Вы можете подумать, что с 8 ГБ вы не достигнете этого предела. Но у вас могут быть плохие программы с утечкой памяти со временем.

Я думаю, что это не позволит вам перейти в спящий / ждущий режим без файла подкачки (но я еще не пробовал).

Windows 7/2008 / Vista не меняет использование файла подкачки.

Я видел одно объяснение от Марка Руссиновича (Microsoft Fellow), объясняющего, что Windows может работать медленнее без файла подкачки, чем с файлом подкачки (даже с большим количеством оперативной памяти). Но я не могу найти основную причину.

Вам не хватает места на диске? Я бы оставил минимум 1 ГБ, чтобы иметь возможность получить дамп ядра в случае BSoD.

Матье Шато
источник
Вы имеете в виду это? blogs.technet.com/markrussinovich/archive/2008/11/17/… Если это так, то его совет хромает. Он говорит, что файл подкачки увеличит производительность, потому что, если он даст больше оперативной памяти для других приложений. Правда, если у тебя мало барана. Но если у вас есть более чем достаточно, файл подкачки никогда не будет быстрее.
пиролистический
это было в sysinternal видео с Саломон. Это как-то связано с пулом страниц ядра
Mathieu Chateau
Вы не можете публиковать «ответ», когда понятия не имеете: у меня есть 32-разрядный ноутбук с операционной системой Windows Vista с 4 ГБ оперативной памяти, и я постоянно переводю его в режим ожидания. Можете ли вы хотя бы ограничиться предоставлением ответов на вопросы, на которые вы действительно знаете ответы?
пп.
Что пытался сказать PP: в процессе гибернации используется файл, отдельный от файла подкачки, поэтому в данном случае это не проблема.
Мафу
Пиролистический, возможно, вам уже слишком поздно это видеть, но переверните свое утверждение и сформулируйте его как вопрос: когда файл подкачки что-то тормозит? Хороший ответ на это докажет вашу теорию.
Quux
5

Я отключил файл подкачки (8 ГБ на ноутбуке с архитектурой x86), и у меня возникли две проблемы даже с 2500 МБ свободной:

  1. Ошибка ASP.NET при попытке активировать службу WCF : не удалось проверить ворота памяти, поскольку свободная память (399 556 608 байт) занимает менее 5% от общего объема памяти. В результате сервис не будет доступен для входящих запросов. Чтобы решить эту проблему, уменьшите нагрузку на компьютер или измените значение minFreeMemoryPercentageToActivateService в элементе конфигурации serviceHostingEnvironment.

    Сколько 3,7 ГБ меньше, чем 5% от 8 ГБ, я никогда не узнаю !!

  2. Открытие программ закрытия программ для предотвращения потери информации . Когда используется 75% ОЗУ, появляется диалоговое окно с предложением закрыть программы. Вы можете отключить это с помощью изменения реестра (или, возможно , отключив «Службу политики диагностики»).

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

Саймон
источник
1
Ошибка ASP.NET кажется мне 32-разрядной проблемой, но если введенное вами число является правильным (399556608 = 399,556,608), то ошибка правильная - ~ 400 МБ - это примерно 5% от 8 ГБ.
ограждение
Хороший улов @fencepost - должно быть, почему-то прочитал это как kb. странно
Саймон
5

Единственный человек, который может сказать вам, если вашим серверам или рабочим станциям «нужен» файл подкачки, - это вы , с осторожным использованием системного монитора или того, как он называется в наши дни. Какие приложения вы используете, какую пользу они видят, и что самое высокое возможно использование памяти потенциально вы можете увидеть?

Стоит ли рисковать стабильностью ради экономии небольшого количества денег на маленьких жестких дисках?

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

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

Роб Моир
источник
2

Ваша общая доступная память - ваш файл подкачки + фактическая память.

Ключевой вопрос заключается в том, приближается ли ожидаемое суммарное использование памяти для всех приложений и операционной системы к 8 ГБ. Если ваше среднее использование памяти составляет 2 ГБ, а максимальное использование памяти - всего 4 ГБ, тогда файл подкачки не имеет смысла. Если ваше максимальное использование памяти ближе к 6-7 Гб или больше, лучше иметь файл подкачки.

PS: не забудьте учесть рост в будущем!


источник
Разве вы не имеете в виду общий объем памяти, потенциально доступный? Большинство систем подкачки хранят копии страниц снимков.
Jé Queue
Обратите внимание, что есть также память выгружаемого пула, которая может истощаться, даже если вы используете только 2 ГБ физической памяти.
Тамара Вийсман
2

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

Мало, если не почти, пытались. Кажется, еще меньше знают, как Windows обрабатывает файл подкачки. Он не «просто» заполняется, когда у вас заканчивается физическая память. Бьюсь об заклад, большинство из вас даже не знали, что ваша «свободная» оперативная память используется в качестве файлового кэша!

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

Если бы Microsoft фактически разрешила вам установить опцию, при которой файл подкачки будет использоваться ТОЛЬКО при отсутствии физической памяти (и все файловые буферы были отброшены), то я думаю, что отключение файла подкачки принесет мало пользы.

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

Это противоядие, но мы используем сервер терминалов Windows Server 2003 для примерно 20 пользователей, при этом 10-15 подключаются одновременно и имеют 8 ГБ ОЗУ. Мы не работаем с файлом подкачки, и наш сервер работает быстрее, чем раньше. Это, очевидно, не решение для всего, но мы работаем вот так вот уже два года, и у меня не было проблем, о которых я знаю.

Matt
источник
1
У вас есть проблемы, но вы их не замечаете, подумайте, как увеличение нагрузки на память может замедлить одновременный запрос. Включение файла подкачки делает такие моменты более резкими ...
Тамара Вийсман