Что не так с отключением файла подкачки Windows?

15

Люди говорят, что вам всегда нужен файл подкачки, и это повысит производительность, но моя Windows 7 настроена на работу без файла подкачки. Я просто не понимаю, почему люди так говорят - у меня 6 ГБ ОЗУ, и единственный раз, когда я почти подошел к нехватке ОЗУ, было, когда я компилировал Chromium, для чего я временно включил файл подкачки.

Мне действительно нужен файл подкачки * для повышения скорости в типичных ситуациях? Почему?

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

user541686
источник

Ответы:

8

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

Если ваша ОС не особенно плохо справляется с управлением памятью, файл подкачки с 6 ГБ памяти не должен использоваться. Нельзя сказать, что это не будет иметь никакого смысла вообще; IIRC MS Windows немного сумасшедший, когда дело доходит до подкачки страниц, даже когда доступно много памяти. (Почему, я никогда не узнаю.)

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

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

Дело из собственного опыта. Windows XP, 4GiB, нет файла подкачки. Перф был великолепен. Пока мы не начали приближаться к пределу 4GiB. Потом все пошло не так: приложения зависали, пункты меню появлялись только частично (или не появлялись вообще), кнопки ничего не делали и т. Д. Я переключился обратно на файл подкачки, хотя при этом производительность была хуже - общая стабильность была просто лучше и важнее.

Теперь, возможно, вы не используете какие-либо приложения или работаете в своих приложениях, которые бы выдвигали 6 ГБ, но я могу вспомнить несколько ситуаций, в которых вы могли бы приблизиться: редактирование видео, редактирование фотографий, микширование звука и производство и т. Д. - практически все, где вы имеете дело с большим количеством данных (либо с работой, либо с потоковой передачей). Когда эти данные превысят ваши возможности памяти, велика вероятность, что ваше приложение просто «пойдет».

Керри Шоттс
источник
Итак, проще говоря (Да / Нет): правильно ли говорить, что, если я никогда не буду использовать более 2 ГБ ОЗУ , я не увижу повышения производительности ? Или где-то еще есть оговорка, даже с этим предварительным условием?
user541686
9
Нет, файл подкачки никогда не улучшает производительность. Это только улучшает стабильность . Пейджинг по определению является операцией на уровне диска, и операции с диском всегда медленнее, чем операции на уровне ОЗУ. И вы, скорее всего, даже с 6 ГБ (никогда не превышающими 2 ГБ) будете испытывать некоторые проблемы с производительностью, поскольку Windows, к сожалению, будет выводить неиспользуемые процессы на диск. Кто бы ни думал, что это было мудро, я хотел бы, чтобы они признались!)
Керри Шоттс
Ладно. Может быть, это потому, что я хотел это услышать, я не знаю, но мне нравится ваш ответ. : P Звучит довольно разумно, спасибо!
user541686
1
Неверно - файл подкачки МОЖЕТ улучшить производительность, поскольку место неиспользуемых данных в разделе подкачки можно использовать для кэширования. Это вызвало для вас такой отрицательный голос.
Петер - Восстановить Монику
1
Файл подкачки МОЖЕТ улучшить производительность. Это увеличивает объем оперативной памяти, доступной для всех видов быстрых кешей, улучшая производительность запуска / загрузки / работы программы. Без файла подкачки эта драгоценная физическая память была бы заполнена неустранимым мусором.
Арк-кун
7

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

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

Во всяком случае, прочитайте статью. Это даст вам хорошие рекомендации по настройке файла подкачки. Как говорит @Sandeep Bansal, может быть случайная игра, которая требует, чтобы вы провели ее как часть «проверки требований» для запуска (но я не знаю ни одной).

РЕДАКТИРОВАТЬ: Этот пример может помочь вам понять роль файла подкачки:

Допустим, у вас есть 512 МБ оперативной памяти. У вас открыто несколько программ, в том числе свернутый браузер, потребляющий 250 МБ ОЗУ, а общее использование оперативной памяти всего, что работает в данный момент, составляет 500 МБ.

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

Теперь допустим, что вы хотите вернуться к браузеру через некоторое время. Что ж, для этого нужно «вставить в страницу» то, что он только что отправил на диск. Если в этот момент достаточно свободной оперативной памяти, он может сделать это без проблем. Если нет, то сначала нужно выложить что-то еще. Если есть много программ, конкурирующих за процессор, и существует постоянное разбиение на страницы, то все идет медленно, и у вас есть условие, известное как «перебивание». Весь этот постраничный ввод и вывод приводит к снижению производительности, но позволяет избежать «жесткого» сбоя программ из-за ошибок нехватки памяти. Это цель файла подкачки. Слишком много пейджинга, т. Е. «Перебивание», вероятно, не лучше, чем просто отказ программы, поскольку большую часть времени она не может получить больше оперативной памяти.

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

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

LawrenceC
источник
@ultrasawblade: Я до сих пор не понимаю: смысл любого вида «кеша» - предотвращение поездки на диск . Если вы все равно собираетесь туда, почему бы просто не взять файл, где бы он ни находился? Какой смысл в файле подкачки?
user541686
@ultrasawblade: Кроме того, что касается статьи: он говорит in general having [a page file] will mean more usable memory being available to the system. Чего ждать? Больше доступной памяти? Разве> 3 ГБ постоянно неиспользуемого пространства ОЗУ недостаточно? (В замешательстве, поскольку я редко использую даже более 2 ГиБ.)
user541686
2
Файлы подкачки НЕ кешируются! Если ваш оперативной памяти заполнен, и вы все еще хотите убедиться, что он по-прежнему выглядит, как будто ваша система имеет больше доступных оперативной памяти, то он начнет копировать данные с оперативной памяти на ваш диск (из процессов, которые кажутся сонными), так что у вас все еще есть доступный оперативной памяти для ваши новые процессы!
пожрала Элизиум
2
@ultrasawblade: Я возражаю против вашего редактирования: ваш пример указывает на использование 97% ОЗУ (500/512), в то время как в моем примере указывается использование 33% ОЗУ (2 ГБ из 6). Я не спрашивал о том, что произойдет, если я подойду к пределу; Я уже хорошо знаю, какие проблемы это вызывает. Я спрашивал о том, что произойдет, если вам все еще предстоит пройти довольно долгий путь, где не будет (не должно ли) происходить никаких побоев или чего-то подобного. Если вы можете привести тот же аргумент для моего случая (используется 6 ГБ ОЗУ и 2 ГБ), это было бы намного лучше; в противном случае это просто не отвечает на мой вопрос.
user541686
3
+1 за ссылку Руссиновича. Там есть ответ. Если вы хотите отказаться от механизма безопасности, чтобы предотвратить возможный сбой, это ваша проблема. Windows будет нормально работать без файла подкачки, если не решит этого. ;)
Кара Марфия
2

Файл подкачки предназначен не только для сохранения аварийных дампов, но и не предназначен для этого.

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

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

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

Сандип Бансал
источник
Но мой вопрос: допустим, я никогда не использую больше 2 ГБ ОЗУ. Включение файла подкачки в любом случае дает мне ускорение ? («Это не больно» отличается от «Да, это дает вам преимущество».)
user541686
Что ж, с 6 ГБ ОЗУ вы ничего не заметите, даже при наличии ОЗУ файл подкачки всегда будет использоваться для других целей. У меня есть 4 ГБ, никогда не превышать это. Но у меня есть только 1 ГБ Pagefile, как у обычных ПК теперь есть 500 ГБ + место на жестком диске, так что, по крайней мере, 500-1000 МБ не будет потерей
Sandeep Bansal
@Sandeep: Хм ... что это за "другие вещи"? Сама причина, по которой я не включаю файл подкачки, заключается в том, что я не понимаю, почему Windows использует жесткий диск, когда так много свободной оперативной памяти, поэтому мне любопытно, что это за «другие вещи».
user541686
Это то же самое, что и Linux, почему Linux использует пространство подкачки, когда у него есть доступ к ОЗУ. Файл подкачки содержит файлы, которые не использовались в течение некоторого времени вне ОЗУ.
Сандип Бансал
@Sandeep: Я понятия не имею, почему Linux это делает, та же разница для меня. Какой смысл хранить файлы в файле подкачки? Если они не находятся в ОЗУ, почему бы просто не прочитать их, где бы они ни находились на диске?
user541686
1

Первый шаг - понять, что такое Cache, или, скорее, для чего используются разные кэши.
Центральный процессор имеет небольшой внутренний кэш, который позволяет хранить результаты OP, состояния флагов и вычисленные адреса. На двухъядерном я считаю, что внутренний кэш составляет около 1 МБ. Он очень быстрый, доступен только внутренним частям ЦП и наиболее подвержен нагреву разогнанного ЦП.

Кэш уровня 2 действует как высокоскоростной буфер для транзакций ЦП в память, а также содержит потоки кода, собранные с помощью предварительной выборки. Я полагаю, что на двухъядерной установке обычная инсталляция будет иметь 6 Мб кеша lvl2. Он очень быстрый, хотя и медленнее, чем внутренняя кеш-память, доступен только контроллеру памяти и процессору и находится на выделенной линии на шине.

Файл подкачки действительно является кешем, в котором хранятся данные, которые могут присутствовать или не присутствовать в памяти. O / S может использовать файл подкачки для различных задач, одной из которых является сохранение текущего состояния файла данных, который еще не был записан на диск. Когда файл подкачки не существует, это зависит от стороннего приложения, чтобы обеспечить эту функцию внутренне. Проблема этого сценария заключается в том, что многие программы плохо себя ведут, когда дело доходит до сбора мусора, и на вашем диске остаются ложные файлы .temp. Эти остатки не являются частью манифеста установки и могут помешать удалению, а также снизить скорость доступа к диску.

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

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

Стивен Мальм, MCP.

Стивен Мальм
источник
«Когда файл подкачки не существует, это зависит от стороннего приложения, чтобы обеспечить эту функцию внутри». -> Не совсем уверен, что вы имеете в виду; программы на самом деле не заботятся, есть ли там файл подкачки или нет.
user541686
0

Личный опыт

Прямо сейчас у моего ноутбука с 8 ГБ ОЗУ есть проблемы, препятствующие созданию / использованию файла подкачки. Моя жизнь - ад. Я постоянно получаю подсказки «Недостаточно памяти», сбой приложений и т. Д. Использование 3 программ, каждый из которых занимает 1–1,5 ГБ (например, веб-браузер, Visual Studio со специальными плагинами и т. Д.), Идет по тонкому льду.

Еще один аргумент

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

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

Арк-кун
источник