менеджер памяти windows 10
Настройка оперативной памяти в Windows 10
Этап 1: Конфигурирование BIOS
Строго говоря, полную настройку ОЗУ (частота, тайминги, режим работы) можно совершить исключительно через микропрограмму системной платы, поэтому первый этап состоит из конфигурирования через BIOS.
Этап 2: Оптимизация потребления ОЗУ системой
После взаимодействия с BIOS переходим непосредственно к настройке операционной системы. Первое, что нужно сделать – оптимизировать потребление «оперативки».
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
Впишите значение 1 и нажмите «ОК».
Изменение данных параметров позволит «десятке» более тонко работать с оперативной памятью.
Этап 3: Настройка файла подкачки
Также важно настроить файл подкачки – от его работы зависит взаимодействие ОС с оперативной памятью. Использование этой функции рекомендуется для компьютеров с небольшим по современным меркам объёмом ОЗУ (4 Гб и меньше).
Если же количество оперативки достаточно больше (больше 16 Гб), а в качестве накопителя используется SSD, особой нужды в файле подкачки нет, и его можно вовсе отключить.
Этап 4: Конфигурирование службы кэширования
В «десятку» из предыдущих версий Виндовс перекочевала функция кэширования части информации в ОЗУ для ускорения запуска приложений, которая хоть и полезная на первый взгляд, однако на ПК с небольшим объёмом RAM она может даже замедлять работу системы. За процесс кэширования отвечает служба с названием SuperFetch, настройкой которой и можно включить либо выключить данную возможность.
На данном этапе конфигурирование оперативной памяти в Windows 10 можно считать завершённым.
Решение некоторых проблем
В процессе конфигурирования ОЗУ в Виндовс 10 пользователь может столкнуться с теми или иными проблемами.
Система использует не всю RAM
Иногда ОС определяет не весь объём оперативной памяти. Данная проблема возникает по множеству причин, для каждой из которых доступно одно решение или даже несколько.
Появляется «синий экран» с текстом MEMORY_MANAGEMENT
После настройки ОЗУ можно столкнуться с BSOD, на котором сообщается об ошибке MEMORY_MANAGEMENT. Она говорит в том числе о проблемах с «оперативкой».
Таким образом, мы ознакомили вас с принципами настройки оперативной памяти на компьютере под управлением Windows 10, а также указали методы решения возможных проблем. Как видим, непосредственно настройка RAM возможна только через БИОС, тогда как со стороны операционной системы можно сконфигурировать только программное взаимодействие.
Помимо этой статьи, на сайте еще 12415 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Here be dragons: Управление памятью в Windows как оно есть [1/3]
Каталог:
Один
Два
Три
Менеджер памяти (и связанные с ним вопросы контроллера кеша, менеджера ввода/вывода и пр) — одна из вещей, в которой (наряду с медициной и политикой) «разбираются все». Но даже люди «изучившие винду досконально» нет-нет, да и начинают писать чепуху вроде (не говоря уже о другой чепухе, написанной там же):
Грамотная работа с памятью. За все время использования у меня своп файл не увеличился ни на Килобайт. По этому Фаерфокс с 10-20 окнами сворачивается / разворачивается в/из трея как пуля. Такого эффекта я на винде добивался с отключенным свопом и с переносом tmp файлов на RAM диск.
Цель данной статьи — не полное описание работы менеджера памяти (не хватит ни места ни опыта), а попытка пролить хоть немного света на темное царство мифов и суеверий, окружающих вопросы управления памятью в Windows.
Disclaimer
Сам я не претендую на то, чтобы знать все и никогда не ошибаться, поэтому с радостью приму любые сообщения о неточностях и ошибках.
Введение
С чего начать не знаю, поэтому начну с определений.
Commit Size — количество памяти, которое приложение запросило под собственные нужды.
Working Set (на картинке выше он так и называется Working Set) — это набор страниц физической памяти, которые в данный момент «впечатаны» в адресное пространство процесса. Рабочий набор процесса System принято выделять в отдельный «Системный рабочий набор», хотя механизмы работы с ним практически не отличаются от механизмов работы с рабочими наборами остальных процессов.
И уже здесь зачастую начинается непонимание. Если присмотреться, можно увидеть, что Commit у многих процессов меньше Working Set-а. То есть если понимать буквально, «запрошено» меньше памяти, чем реально используется. Так что уточню, Commit — это виртуальная память, «подкрепленная» (backed) только физической памятью или pagefile-ом, в то время как Working Set содержит еще и страницы из memory mapped файлов. Зачем это делается? Когда делается NtAllocateVirtualMemory (или любые обертки над heap manager-ом, например malloc или new) — память как бы резервируется (чтоб еще больше запутать, это не имеет никакого отношения к MEM_RESERVE, который резервирует адресное пространство, в данном же случае речь идет о резервировании именно физических страниц, которые система действительно может выделить), но физические страницы впечатываются только при фактическом обращении по выделенному адресу виртуальной памяти. Если позволить приложениям выделить больше памяти, чем система реально может предоставить — рано или поздно может случиться так, что все они попросят реальную страницу, а системе неоткуда будет ее взять (вернее некуда будет сохранить данные). Это не касается memory mapped файлов, так как в любой момент система может перечитать/записать нужную страницу прямо с/на диск(а).
В общем, суммарный Commit Charge в любой момент времени не должен превышать системный Commit Limit (грубо, суммарный объем физической памяти и всех pagefile-ов) и с этим связана одна из неверно понимаемых цифр на Task Manager-ах до Висты включительно.
Commit Limit не является неизменным — он может увеличиваться с ростом pagefile-ов. Вообще говоря, можно считать, что pagefile — это такой очень специальный memory mapped файл: привязка физической страницы в виртуальной памяти к конкретному месту в pagefile-е происходит в самый последний момент перед сбросом, в остальном же механизмы memory mapping-а и swapping-а очень схожи.
Working Set процесса делится на Shareable и Private. Shareable — это memory mapped файлы (в том числе и pagefile backed), вернее те части, которые в данный момент действительно представлены в адресном пространстве процесса физической страницей (это же Working Set в конце концов), а Private — это куча, стеки, внутренние структуры данных типа PEB/TEB и т.д. (опять таки, повторюсь на всякий случай: речь идет только той части кучи и прочих структур, которые физически находятся в адресном пространстве процесса). Это тот минимум информации, с которой уже можно что то делать. Для сильных духом есть Process Explorer, который показывает еще больше подробностей (в частности какая часть вот той Shareable действительно Shared).
И, самое главное, ни один из этих параметров по отдельности не позволяет сделать более менее полноценных выводов о происходящем в программе/системе.
Task Manager
Столбец «Memory» в списке процессов и практически вся вкладка «Performance» настолько часто понимаются неправильно, что у меня есть желание, чтоб Task Manager вообще удалили из системы: те, кому надо смогут воспользоваться Process Explorer-ом или хотя бы Resource Monitor-ом, всем остальным Task Manager только вредит. Для начала, собственно о чем речь
Начну с того, о чем я уже упоминал: Page File usage. XP показывает текущее использование pagefile-а и историю (самое забавное, что в статус баре те же цифры названы правильно), Виста — показывает Page File (в виде дроби Current/Limit), и только Win7 называет его так, чем оно на самом деле является: Commit Charge/Commit Limit.
Эксперимент. Открываем таск менеджер на вкладке с «использованием пейджфайла», открываем PowerShell и копируем в него следующее (для систем, у которых Commit Limit ближе, чем на 3 Гб от Commit Charge можно в последней строчке уменьшить 3Gb, а лучше увеличить pagefile):
Это приводит к мгновенному повышению «использования свопфайла» на 3 гигабайта. Повторная вставка «использует» еще 3 Гб. Закрытие процесса мгновенно освобождает весь «занятый свопфайл». Самое интересное, что, как я уже говорил memory mapped файлы (в том числе и pagefile backed) являются shareable и не относятся к какому либо конкретному процессу, поэтому не учитываются в Commit Size никакого из процессов, с другой стороны pagefile backed секции используют (charged against) commit, потому что именно физическая память или пейджфайл, а не какой нибудь посторонний файл, будут использоваться для того, чтобы хранить данные, которые приложение захочет разместить в этой секции. С третьей стороны, после меппинга секции себе в адресное пространство, процесс не трогает ее — следовательно, физические страницы по этим адресам не впечатываются и никаких изменений в Working Set процесса не происходит.
Строго говоря, пейджфайл действительно «используется» — в нем резервируется место (не конкретное положение, а именно место, как размер), но при этом реальная страница, для которой это место было зарезервировано может находиться в физической памяти, на диске или И ТАМ И ТАМ одновременно. Вот такая вот циферка, признайтесь честно, сколько раз глядя на «Page File usage» в Task Manager-е Вы действительно понимали, что она означает.
Что же до Processes таба — там все еще по дефолту показывается Memory (Private Working Set) и несмотря на то, что он называется совершенно правильно и не должен вызывать недоразумений у знающих людей — проблема в том, что подавляющее большинство людей, которые смотрят на эти цифры совершенно не понимают, что они означают. Простой эксперимент: запускаем утилилиту RamMap (советую скачать весь комплект), запускаете Task Manager со списком процессов. В RamMap выбираете в меню Empty->Empty Working Sets и смотрите на то, что происходит с памятью процессов.
Если кого-то все еще раздражают циферки в Task Manager-е, можете поместить следующий код в профайл павершелла:
В первую очередь отмечу, что кеш в Windows не блочный, а файловый. Это дает довольно много преимуществ, начиная от более простого поддержания когерентности кеша например при онлайн дефрагментации и простого механизма очистки кеша при удалении файла и заканчивая более консистентными механизмами его реализации (кеш контроллер реализован на основе механизма memory mapping-а), возможностью более интеллектуальных решений на основе более высокоуровневой информации о читаемых данных (к примеру интеллектуальный read-ahead для файлов открытых на последовательный доступ или возможность назначать приоритеты отдельным файловым хендлам).
В принципе из недостатков я могу назвать только значительно более сложную жизнь разработчиков файловых систем: слышали о том, что написание драйверов — это для психов? Так вот, написание драйверов файловых систем — для тех, кого даже психи считают психами.
Страница из лекции какого то токийского университета (эх, мне бы так):
На этом работа собственно кеш-менеджера заканчивается и начинается работа менедера памяти. Когда выше мы делали EmptyWorkingSet это не приводило ни к какой дисковой активности, но тем не менее, физическая память используемая процессом сокращалась (и все физические страницы действительно уходили из адресного пространства процесса делая его почти полностью невалидным). Так куда же она уходит после того, как отбирается у процесса? А уходит она, в зависимости от того, соответствует ли ее содержимое тому, что было прочитано с диска, в один из двух списков: Standby (начиная с Висты это не один список, а 8, о чем позже) или Modified:
Standby список таким образом — это свободная память, содержащая какие то данные с диска (в том числе возможно и pagefile-а).
Если Page Fault происходит по адресу, который спроецирован на часть файла, которая все еще есть в одном из этих списков — она просто возвращается обратно в рабочий набор процесса и впечатывается по искомому адресу (этот процесс называется softfault). Если нет — то, как и в случае со слотами кеш менеджера, выполняется PAGING_IO запрос (называется hardfault).
Modified список может содержать «грязные» страницы достаточно долго, но либо когда размер этого списка чрезмерно вырастает, либо по когда система видит недостаток свободной памяти, либо по таймеру, просыпается modified page writer thread и начинает частями сбрасывать этот список на диск, и перемещая страницы из modified списка в standby (ведь эти страницы опять содержат неизмененную копию данных с диска).
Upd:
Пользователь m17 дал ссылки на выступление Руссиновича на последнем PDC на ту же тему (хм, я честно его до этого не смотрел, хотя пост во много перекликается). Если понимание английского на слух позволяет, то чтение данного топика можно заменить прослушиванием презентаций:
Mysteries of Windows Memory Management Revealed, Part 1 of 2
Mysteries of Windows Memory Management Revealed, Part 2 of 2
Пользователь DmitryKoterov подсказывает, что перенос пейджфайла на RAM диск иногда действительно может иметь смысл (вот уж никогда б наверное и не догадался, если б не написал топик), а именно, если RAM-диск использует физическую память, недоступную остальной системе (PAE + x86 + 4+Gb RAM).
Пользователь Vir2o в свою очередь подсказывает что хотя при некоторых условиях и пожертвовав стабильностью системы ram-диск, использующий физическую память, невидимую остальной системе написать можно, но такое очень маловероятно.
Оптимизация оперативной памяти Windows
Волшебное слово «оптимизация» действует завораживающе. Конфигурация мечты, которую можно создать одним нажатием кнопки. Программ, разработчики которых обещают такое «чудо» достаточно много. Нам предлагают ускорение работы системы в целом или отдельных ее компонентов. Оптимизация оперативной памяти Windows одна из таких «секретных» технологий. Сегодня мы рассмотрим несколько утилит, предназначенных для этой цели, и разберемся насколько оправдано их применение.
Общий принцип работы RAM
Использование оперативной памяти начинается в момент включения ПК. В нее загружается исполняемый код операционной системы и запущенных пользователем программ. Высокая скорость доступа к находящимся в ней данным ‒ одна из основных составляющих быстродействия компьютера. Одновременно с оперативной активируется виртуальная память. В Windows это отдельный файл pagefile.sys, размещенный в корне системного диска. Virtual Memory Manager, являющийся компонентом ядра ОС, выгружает в него данные запущенных, но не используемых в данный момент программ. В процессе работы пользователя с несколькими приложениями перемещение информации между оперативной и виртуальной памятью выполняется VMM в фоновом режиме. Таким образом, система самостоятельно поддерживает баланс использования памяти. При этом, являясь компонентом ядра, менеджер памяти имеет высший приоритет исполнения по отношению к любой программе. Все утилиты оптимизации для системы будут являться пользовательским приложением. Следовательно, любые попытки нарушить работу компонента ядра должны игнорироваться.
«Оптимизаторы» RAM
Теперь, понимая общие принципы работы ОС, давайте рассмотрим, как работает оптимизатор оперативной памяти для Windows. Нам обещают, что установленная утилита будет очищать память, таким образом, увеличивая быстродействие.
Wise Memory Optimizer
Программа распространяется по бесплатной лицензии и имеет полностью переведенный на русский язык интерфейс. В лицензионном соглашении разработчики предупреждают о том, что ответственности за последствия ее использования они на себя не берут, а ошибки бывают у всех.
Главное окно показывает общий объем и диаграмму текущего использования RAM. Нажатие на шестеренку в верхнем углу вызывает панель с настройками.
Непосредственно оптимизации памяти касаются только два пункта. Запуск автоматической очистки при достижении определенного порога и режим взаимодействия с процессором.
«Бегунок», отмечающий уровень начала оптимизации, выполнен неудачно. В момент регулировки цифровое значение не изменяется, а шкалы, по которой можно ориентироваться, не предусмотрено. При настройках по умолчанию работу с памятью программа начинает, только когда процессор не занят выполнением других задач. Иными словами, в тот момент, когда оперативная память освобождается и без ее участия. Под нагрузкой при достижении заданных 30% объема RAM «чуда» не произошло.
При снятой галочке Wise Memory Optimizer будет «изображать бурную деятельность» каждые пять минут. Очистка по таймеру срабатывает независимо от заданного порога.
Можно сказать, что программа безвредная. Пользы от ее использования нет никакого. После ручного запуска «оптимизации» показатели использования памяти возвращаются к первоначальным значениям в течение нескольких секунд.
Mz Ram Booster
Еще одна программа для оптимизации оперативной памяти. Поддержку ее разработчики прекратили в 2010 году, но она до сих пор пользуется популярностью.
В англоязычной справке к Mz Ram Booster приводится перечень поддерживаемых версий ОС. Учитывая год выпуска, последней в списке значится Windows 7.
Русская локализация интерфейса добавляется вручную с помощью XML-файла. Интересующие нас функции сосредоточены на первой, открывающейся при запуске утилиты, вкладке. В областях «2» и «3» приводятся данные о физическом размере RAM и виртуальной памяти. Размер файла подкачки Ram Booster определил неправильно. Четвертая рамка показывает доступные опции. Оптимизация и очистка RAM сводятся к удалению загруженных, но не используемых в данный момент DLL и данных. Раздел «Опции» содержит десяток оболочек для изменения внешнего вида программы и переключатель локализаций.
Третья вкладка предназначена для тонкой настройки автоматической оптимизации в фоновом режиме. Можно выбрать рекомендуемые параметры.
На скриншоте видно принятое программой решение.
Нагружаем ОС выполнением нескольких ресурсоемких задач, и убеждаемся, что выдерживать самостоятельно определенные параметры программа не может. Учитывая прекращение поддержки разработчиками, максимум что ей можно доверить, это оптимизировать память в Windows 7 в ручном режиме.
Mem Reduct
Mem Reduct ‒ самая современная из рассматриваемых утилит c интерфейсом, выполненным в стиле Windows 10.
В оформлении отсутствуют графики и диаграммы. Информация доносится до пользователя в цифровом режиме. Настройки собраны в меню «Файл», обозначенном на скриншоте.
Опции управления распределены по четырем вкладкам. На первой находятся общие настройки поведения.
Следующая вкладка содержит опции работы с RAM. Блок, касающийся работы с областями оперативной памяти, можно оставить с настройками по умолчанию. Отмеченная рамкой область отвечает за автоматическую очистку. Доступен запуск при достижении порогового значения или по таймеру.
При высокой нагрузке Mem Reduct единственная начинает активно выполнять свою задачу. Когда оперативная память загружена до заданного объема, автоматика программы срабатывает моментально. Статус выполнения задачи выводится в стандартную область уведомлений.
Если задать порог очистки в 60-70%, программа агрессивно старается его выдерживать, выдавливая из памяти данные запущенных процессов.
Выводы
Работа описываемых утилит основана на «симуляции» обращения к памяти с большим объемом данных. VMM добросовестно освобождает место, а программа рапортует пользователю о выполнении очистки. Идеальным вариантом использования таких утилит будет разовый запуск после закрытия игрового приложения или ресурсоемкой задачи. В этот момент ПК «подтормаживает», не сразу освобождая место в ожидании повторного обращения к данным. Очистка поможет ему быстрее прийти в норму.
Оптимизировать оперативную память совместно с работой ресурсоемкого приложения невозможно. Данные, «выдавленные» в виртуальную память, будут каждый раз возвращаться в RAM, приводя к дополнительной нагрузке на процессор.
Использование RAM в Windows 10
Внутренняя оптимизация ОЗУ Windows 10 реализована Microsoft с использованием технологии предварительного сжатия. В Linux и MacOS, известных высокой стабильностью, она используется уже давно. В ранних сборках это отображалось в диспетчере задач в виде процесса «Система и сжатая память». Отсюда и пошло мнение о том, что Windows «жрет оперативку». Актуальные сборки ОС отображают работу с памятью в виде графика.
Функция сжатия в целом повышает отзывчивость системы при работе с обычными приложениями, но может мешать в игровой конфигурации. Если при достаточном объеме RAM в играх заметно падает производительность, ее можно отключить.
Вызываем меню Power User и переходим к указанному на скриншоте пункту.
Откроется окно консоли управления Windows. В области быстрого перехода разворачиваем отмеченный раздел и выбираем пункт «Службы». В списке, открывшемся в правой части окна, ищем Superfeth. Открываем двойным щелчком меню редактирования параметров.
В выпадающем списке, отмеченном стрелкой, меняем тип запуска на «Отключено». Останавливаем службу и подтверждаем свое решение.
После перезагрузки оптимизация оперативной памяти Windows 10 будет отключена. Система начнет работать с RAM в старом стиле, не используя технологии сжатия.
В заключение
32-битные версии ОС имеют ограничение на использование объема оперативной памяти. Такая система не может управлять более, чем 4 Гб RAM. Чтобы идти в ногу со временем, стоит подумать о переходе на 64-битную Windows. Даже в редакции «Домашняя» она способна работать с объемом RAM 128 Гб. Для комфортного использования и работы современных приложений вполне хватит 8 Гб, а для игровой конфигурации – 16 Гб. В результате вы получите сбалансированную систему, которой не нужны никакие дополнительные оптимизаторы.