43

Я использую Windows 7 64 бит с оперативной памятью 8G. После некоторого использования я чувствую, что Windows становится вялой. Драйв бьется. Когда я смотрю на монитор ресурсов и активность диска, я вижу несколько случаев использования файла подкачки (c:\pagefile.sys). Я проверяю физическую память и вижу около 2,3 ГБ свободной памяти и 700 МБ свободной памяти.

Почему Windows не использует больше свободной памяти и меньше файла подкачки? Нужно ли оставить какое-то количество свободного барана, сколько это будет? Это процент физического барана?

Мой план - получить больше оперативной памяти и SSD для основного диска. Тем временем я страдаю от медленной работы.

6 ответов6

32

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

Что многие люди не понимают, так это то, что окна никогда не имеют свободной памяти. Есть несколько МБ, которые остаются свободными для пакетных запросов, но в остальном разница между активной используемой памятью приложения и общей памятью обычно используется так называемой "резервной" памятью.

Системная память

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

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

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

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

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


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

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


Я только заметил, что вы сделали различие между доступной и свободной памятью в своем вопросе; Приношу свои извинения, если вы чувствуете лекцию и уже знаете разницу. В идеале свободной памяти всегда 0. Однако, хотя резервная память - это память, которая может быть освобождена, это не всегда память, которая может быть освобождена быстро. Если я попытаюсь записать файл объемом 1 ГБ на диск, Windows запишет его в дисковый кеш в памяти, если это возможно, а затем медленно запишет его на жесткий диск в фоновом режиме. Если приложению необходимо запросить 50 МБ дополнительной памяти, но ни одна из них не доступна, поскольку этот огромный дисковый кэш все еще очищается, приложение будет зависать до тех пор, пока оно не станет доступным. Наличие небольшого буфера под рукой позволяет системе решить эту проблему с минимальной задержкой с точки зрения пользователя. Вы также можете получить буферы большего размера, чем обычно, если Windows просто очистила часть резервного кэша или освободила много используемой памяти, но еще не заполнила ее новыми данными кэша.

4

Существует инструмент для установки дискового кэша от SysInternal.

cacheset.exe

Вы можете найти это здесь:

http://technet.microsoft.com/en-us/sysinternals/bb897561.aspx

4

Это называется планирование на будущее.

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

Если операционная система должна была ждать, то вы сталкиваетесь с узким местом в производительности. Если программа запрашивает больше памяти, чем доступно, теперь вам нужно подождать, пока ОС запишет измененный блок памяти, а затем освободить их.

2

За последние 7 лет у меня был отключен файл подкачки. На самом деле это первое, что я делаю после новой установки. Никогда не было никаких проблем с этим. (На самом деле у меня была одна игра под названием "Titan Quest", которая при запуске выполняла очень глупую проверку, поэтому я создал файл страницы размером 4 МБ только для того, чтобы сделать его счастливым, и позже снова отключил PF). Что касается оригинального вопроса. Windows использует нашу оперативную память для дискового кэша ввода-вывода. По некоторым причинам он считает, что дисковый кеш одинаково важен для кода и данных активных программ. И нет возможности ограничить размер дискового кэша. Это там по замыслу, и мы ничего не можем с этим поделать ... Ой, подожди! Мы можем! Просто выключите файл подкачки. Запуск приложений, которые сильно загружены в оперативной памяти? Купите больше оперативной памяти или закройте одно приложение перед запуском другого. Вы можете использовать Process Explorer, чтобы увидеть, сколько памяти используется в данный момент. Лично у меня есть 8 ГБ оперативной памяти как на работе (vmware + virtualbox + eclipse + firefox + delphi + adobe premiere + skype + больше фоновых программ), так и дома (тяжелые игры), и я не могу вспомнить, когда в последний раз я видел " недостаточно памяти "предупреждение.

1

Аргументы (здесь и здесь) для сохранения и использования файла подкачки, даже если достаточно ОЗУ:

  • Даже если сейчас есть свободная память, у машины может закончиться память позже. Лучше заранее записать на диск малоиспользуемые части памяти.
  • Существует также "резервная" память, которая отображается как свободная, но фактически используется для кэширования диска. Это также важно для производительности, лучше иметь немного.
  • Если у вас не хватает оперативной памяти с отключенным файлом подкачки, это тяжелый сбой.
  • Хотя 2, 4, 16 или любое другое количество ГБ ОЗУ могут выглядеть "много", это может быть не так, как вы думаете. Вам нужно в профиль.

С помощью монитора ресурсов Windows можно увидеть, сколько ОЗУ используется для кэширования (отображается как "Резервный").

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

-2

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .