Как заставить Windows 7/8/10 быть менее агрессивными при копировании оперативной памяти в файл подкачки?

Как заставить Windows 7/8/10 быть менее агрессивными при копировании оперативной памяти в файл подкачки?

Многие спрашивают, как отключить pagefile, потому что чувствуют последствия проблемы, о которой я спрошу. Вместо этого я хочу исправить проблему, не отключая pagefile.

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

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

Используя инструменты sysinternal, я обнаружил, что большая часть содержимого файлов подкачки представляет собой упреждающие копии содержимого оперативной памяти, которая ДЕЙСТВИТЕЛЬНО выглядит малой (у меня 8 ГБ оперативной памяти, поэтому она используется на 61%), но используя RamMap я заметил, что большая часть оперативной памяти используется как «резервная» память, а большая часть этой «резервной» памяти — это кэш Windows (тот, который ускоряет загрузку файлов). При этом большой кусок представляет собой двоичный файл, представляющий собой звуковые файлы игры.

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

Но если я буду смотреть только на реальное использование оперативной памяти приложениями, на нагрузку, выделяемую текущими запущенными приложениями, процессами, ядром и общими вещами, то реальное использование оперативной памяти должно составлять 2,5 ГБ, включая оперативную память и файл подкачки.

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

Кто-нибудь знает, как это сделать?

решение1

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

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

решение2

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

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

Windows извлекает максимум из плохой ситуации. Разработчики системы управления памятью Windows (начиная с Vista) точно знали, что делают, и являются ведущими экспертами в разработке систем подкачки на современном оборудовании. Ни вы, ни я не знаем этого лучше, чем они. Они не сделали ничего серьезно неправильного, что можно было бы исправить, щелкнув тумблером. Извините, волшебной кнопки «go faster» не существует.

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

решение3

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

Я уверен, что вам давали неприятные ответы, как будто вы идиот, а разработчики Microsoft всегда правы и т. д.

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

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

Например, на моей системе Windows всегда выгружает страницу из инструмента Nvidia Multi Display Power Saver. Я не знаю почему, но что-то в алгоритме заставляет его выбирать это приложение, и оно выгружает страницы, даже если загрузка оперативной памяти составляет всего 5%.

По моему мнению, файлы подкачки следует использовать только для предотвращения катастроф, по сути, как swappiness=1 linux sysctl. Что в принципе то же самое, что вы спрашивали в своем вопросе, по сути, единственные важные части использования оперативной памяти в Windows — «используется» и «изменено», измененный — это кэш записи, который, очевидно, должен сбрасывать свои данные на диск перед очисткой, в то время как очистка кэша ожидания не имеет никаких негативных последствий.

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

Ясный ответ, который я даю на вопрос, куда идти, если ваша главная цель — стабильность системы, держите файл подкачки включенным и установите его размер не менее 8 гигабайт. Если ваша цель — производительность, и особенно если у вас не менее 32 гигабайт оперативной памяти, то обязательно отключите файл подкачки.

Связанный контент