С объявлением функции сжатия памяти, мы получили много запросов от инсайдеров с просьбой для получения дополнительной информации. Это сообщение пытается идти в глубину в внутренней работы менеджера памяти и памяти сжатия двигателя, построенного в нем.
Одна из основных целей любой операционной системы является управление и совместно использовать ресурсы эффективно. Как хорошо операционная система решает конфликт конкурирующих требований к памяти особенно важно, потому что это влияет на восприятие пользователя из системы реагирования.
В Windows 10, мы позволили менеджер памяти (MM), чтобы сжать редко-посещенных страниц памяти, которые уменьшает количество операций чтения и записи на диск (файла подкачки) и, следовательно, улучшает отзывчивость. Сжимая память мы уменьшаем количество памяти, используемой в процессе, что позволяет операционной системе поддерживать больше приложений в физической памяти в то время, прежде, чем что- традиционный подкачки.
Когда политика Memory Управляющего делает диктовать подкачки, данные записываются или считываются с диска уже сжаты до обычно около 40 процентов своего первоначального размера. Это сжатие повышает производительность других, не связанных операций в системе за счет снижения основной источник помех IO нагрузку. Конечным результатом является мгновенным, более чутко реагировать опыт с улучшенными характеристиками запуска приложение и консистенции.
Перед объяснения Windows 10 изменения в деталях, я опишу некоторые из фундаментальных понятий в управлении памятью Windows, и дает обзор о том, как она была выполнена до реализации сжатия.
Первая концепция является рабочий набор, который является активно используемый физической памяти процесса. Частный рабочий набор представляет физическую память, что является уникальным для процесса. Процессы также касаться других страниц физической памяти, которые "совместно", который несколько процессов могут ссылаться. Когда вы смотрите на процессы просмотра в диспетчере задач, память для определенного процесса на самом деле его нынешний частный рабочий набор. Обратите внимание, что для простоты когда я говорю «рабочего набора" в этой должности, я имею в виду "личное рабочий набор."
Некоторое подмножество набора страниц рабочий процесс, скорее всего, можно использовать лишь изредка, а с памятью является ограниченным ресурсом, который необходимо эффективно использовать эти страницы должны быть возвращены и доступны для использования другими процессами. Когда М. решает страница была неактивной в течение достаточно долго, то ставит его на модифицированном списке. Асинхронный процесс пишет страниц в модифицированной списка в файл подкачки на диске, а затем - в память - перемещает их из модифицированного списка в список ожидания. Это записи бывает так, что, если память будет освобождена от списка ожидания другим процессом, но первоначальный процесс будет искать для своей странице, что данные могут быть извлечены из файла подкачки.
Тем не менее, страницы на список ожидания еще не было разрушено, так что они сохраняют свои данные до тех пор, пока ММ repurposes их рабочего набора другого процесса. Они могут быть повторно использованы в приложении, которое ранее принадлежавших им, если что приложение запрашивает страницу, прежде чем она будет утилизирован. Это называется мягкой вина. Но если страница была многократно, и первоначальный процесс спрашивает ММ для этой страницы, жесткий неисправности. Оригинальный процесс теперь просят на память, что был взят другим процессом, и операционная система должна выдавать диск прочитать IO, чтобы получить его.
Как указывалось выше, ММ, когда сталкиваются с давлением памяти, определяет, какие страницы должны быть перемещены в модифицированной списка. Это называется обрезки. Но Windows 8 добавлена возможность для платформы Windows Универсальный (UWP) приложения, которые будут заменены в полном объеме - т.е. в приложение, а не на странице детализации. Это делается потому, что UWP приложения приостанавливается, когда не на переднем плане смысла они не будут работать, пока пользователь не переключится им. Нет страница не будут затронуты, пока приложение не будет возвращен в полном объеме, так что это безопасно обменять всю приложения. Диск IO обязаны поменять приложение обратно в затем полностью последовательного чтения, которые резко быстрее, чем произвольного чтения. Для получения более подробной информации о перекачки UWP приложений в Windows 8 мм, см этот блог Биллом Карагунис.
Окна 10 вводит слой между подкачки и нормальной активности подкачки, который позволяет для сжатия всех страниц перемещены к модифицированным списка. Это означает, что, когда М. чувствует давление памяти, она будет сжимать неиспользуемые страницы, а не писать их на диск. ММ в настоящее время выполняет только диск IO, когда сжатие не достаточно, чтобы ослабить нагрузку на память. Используя эту стратегию, меньше дисковых операций необходимы, поскольку - благодаря сжатию - больше данных могут быть сохранены в памяти, чем раньше.
Это достигается с помощью концепцию под названием магазин сжатия, который является в памяти совокупность сжатых страниц. Там в один магазин системы настольных приложений Windows, наследство или любой другой не-UWP использования приложение памяти, а затем один магазин для каждого приложения Windows Runtime (для того, чтобы дать возможность обрезки и перекачки соответственно). Вместо того чтобы писать страницы в модифицированной списка в файл подкачки, М. сжимает их и помещает их в соответствующее хранилище.
Магазины жить в рабочем наборе процесса системы. Обратите внимание, что на схеме выше, мы отображается рабочий набор системы отдельно от других рабочих Наборы для форматирования причинам, но рабочий набор системы является рабочий набор, как и любой другой. Хотя, возможно, нелогичным на первый взгляд, так как процесс система имеет магазины в памяти, его рабочий набор больше растет, когда именно память делаются доступными для других процессов. Это видно в диспетчере задач.
Во-первых, наблюдать количество памяти, используемой в процессе System:
Затем, начать и приостановить некоторые приложения:
И рабочий набор системного процесса будет расти:
Каждый магазин управляет фрагментации путем прессования себя, когда это необходимо для обеспечения хорошего сжатия. На практике, сжатый памяти занимает около 40% от размера несжатых, и в результате на типичном устройстве под управлением типичный нагрузку, Windows 10 так часто, как в предыдущих версиях ОС сделали пишет страницы на диск только 50%. Это позволит сократить время, затрачиваемое ждет IO на всех устройствах, но это будет также улучшить на ожидаемую продолжительность жизни систем, показывающих базе флэш-накопитель.
Хотя сжатия дает ОС больше места в памяти для данного приложения нагрузки, подкачки на диск все еще может быть необходимо. В Windows 10, это работает, перемещая страницы из магазинов в системном процессе модифицированной списка. Если страницы пришел к модифицированному список из процесса система магазинах, М. знает, что они уже были сжаты и готовы быть записаны в файл подкачки. В записи на диск будет меньше, так как страницы обязательно сжимается, то есть только на страницах ММ будет писать на диск, являются те, которые были сжатые и спрятал в магазине в системном процессе.
Так что теперь давайте поговорим о том, как процесс получает свои данные обратно либо из магазина или сжатия из файла подкачки на диске. В первом случае, когда процесс ошибки на странице, которая в настоящее время в сжатом магазине, ММ просто распаковывает страницу и ставит его обратно рабочего набора запрашивающего процесса в - мягкий неисправность сжатия. Однако в последнем случае, ММ пытается первых и находит, что сжатые данные для страницы не находится в памяти. Процесс работы системы установлен, то жесткие ошибки на сжатых данных для
страница М.М. читает его обратно с диска. Декомпрессия и добавление рабочей множества следить за процессом Ошибка в в.
Декомпрессия является весьма параллелизуемое операция, поэтому для Windows может быть эффективным при движении нескольких страниц одновременно. Из-за этого, поменяв UWP приложений (в отличие от обрезки) выполняет особенно хорошо. Но это не просто декомпрессии: Windows сочетает в себе, что параллелизуемости с последовательным читает предназначен в порядке подкачку страниц читать в память очень быстро; он читает блок, в то время, и, ожидая следующей операции ввода-вывода для завершения, это одновременно декомпрессии данных программа просто читать параллельно с использованием нескольких процессоров. Там, где раньше платформы, возможно, чувствовал вялым из-за скорости передачи ее диск, работающий под управлением Windows 10 на той же аппаратной появляется гораздо больше реагировать.
В целом, сжатие памяти позволяет Windows 10, чтобы лучше использовать доступную память на всех системах, уменьшая использование памяти физического, в результате чего меньше подкачки операций ввода-вывода и уменьшение зависимости от диска. Кроме того, он улучшает скорость записи и чтения с диска, когда ММ определяет подкачки должен быть принят. В целом, мы ожидаем, что пользователи испытывают повышенную чтобы общее быстродействие и удобство на всех устройствах, работающих под управлением Windows 10.
Спасибо,
Этан Creeger - руководитель программы в команде базовой платформы. Я был в Windows (Microsoft) и в течение двух лет работы на аппаратных аспектах, таких как Kernel ACPI и PCIE.