Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

И дома, и на работе у меня 64-битная Vista с 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 без проблем.

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

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

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

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

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

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

Я много лет без проблем запускал свой 8-гигабайтный Vista x64 без файла подкачки.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Файл подкачки служит многим вещам, включая создание дампа памяти в случае BSoD (Синий экран смерти).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PS: Не забывайте допускать рост в будущем!

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

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

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

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

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