Сжатие виртуальной памяти

редактировать

Сжатие виртуальной памяти (также называется сжатие RAM и сжатие памяти ) - это метод управления памятью, который использует сжатие данных для уменьшения размера или количества запросов подкачки к и из вспомогательной памяти. В системе сжатия виртуальной памяти страницы, которые должны выгружаться из виртуальной памяти, сжимаются и сохраняются в физической памяти, которая обычно является памятью с произвольным доступом (RAM), или отправляются в сжатом виде. во вспомогательную память, такую ​​как жесткий диск (HDD) или твердотельный диск (SSD). В обоих случаях диапазон виртуальной памяти, содержимое которого было сжато, помечается как недоступный, чтобы попытки доступа к сжатым страницам могли вызвать сбои страницы и обращение процесса (извлечение из вспомогательной памяти и декомпрессия). Объем выгружаемых данных уменьшается за счет процесса сжатия; в первом случае освобожденная ОЗУ возвращается в доступный пул физической памяти, а сжатая часть сохраняется в ОЗУ. Во втором случае сжатые данные отправляются во вспомогательную память, но результирующая операция ввода-вывода меньше и, следовательно, занимает меньше времени.

В некоторых реализациях, включая zswap, zram и Helix Software Company, весь процесс реализован в программном обеспечении. В других системах, таких как IBM MXT, процесс сжатия происходит в выделенном процессоре, который обрабатывает передачи между локальным кешем и ОЗУ.

Сжатие виртуальной памяти отличается от систем сборки мусора (GC), которые удаляют неиспользуемые блоки памяти и в некоторых случаях объединяют используемые области памяти, уменьшая фрагментацию и повышая эффективность. Сжатие виртуальной памяти также отличается от систем переключения контекста, таких как Connectix (хотя он также выполнял онлайн-сжатие) и Apple OS 7.1, в которых неактивные процессы приостанавливаются, а затем сжимаются. в целом.

Содержание
  • 1 Преимущества
  • 2 Недостатки
    • 2.1 Низкая степень сжатия
    • 2.2 Фоновый ввод-вывод
    • 2.3 Повышенная производительность
    • 2.4 Проблемы с соотношением цены и производительности
    • 2.5 Приоритезация
  • 3 Сжатие с использованием квантования
  • 4 История
    • 4.1 Истоки
    • 4.2 Последние разработки
  • 5 См. Также
  • 6 Ссылки
Преимущества

За счет уменьшения I Активность / O, вызванная запросами на подкачку, сжатие виртуальной памяти может привести к общему повышению производительности. Степень повышения производительности зависит от множества факторов, включая доступность любых сопроцессоров сжатия, запасную полосу пропускания ЦП, скорость канала ввода-вывода, скорость физической памяти и сжимаемость содержимого физической памяти..

На многоядерных многопоточных ЦП некоторые тесты показывают повышение производительности более чем на 50%.

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

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

Недостатки

Низкие степени сжатия

Одной из основных проблем является степень сжатия содержимого физической памяти при реальных нагрузках. Программный код и большая часть данных, хранящихся в физической памяти, часто не поддаются сжатию, поскольку эффективные методы программирования и архитектуры данных предназначены для автоматического устранения избыточности в наборах данных. Различные исследования показывают типичные коэффициенты сжатия данных в диапазоне от 2: 1 до 2,5: 1 для программных данных, аналогичные обычно достижимым коэффициентам сжатия при сжатии диска.

Фоновый ввод-вывод

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

Повышенное быстродействие

Физическая память, используемая при сжатии Система уменьшает объем физической памяти, доступной для процессов, которые выполняет система, что может привести к увеличению активности подкачки и снижению общей эффективности сжатия виртуальной памяти. Эта взаимосвязь между активностью подкачки и доступной физической памятью является примерно экспоненциальной, что означает, что уменьшение объема физической памяти, доступной системным процессам, приводит к экспоненциальному увеличению активности подкачки.

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

Например, чтобы максимально использовать кэш сжатых страниц, Hurricane 2.0 от Helix Software Company предоставляет настраиваемый пользователем порог отказа от сжатия. Сжимая первые 256 до 512 байтов страницы размером 4 КиБ, эта система сжатия виртуальной памяти определяет, может ли быть достигнут настроенный порог уровня сжатия для конкретной страницы; если это возможно, остальная часть страницы будет сжата и сохранена в сжатом кэше, в противном случае страница будет отправлена ​​во вспомогательную память через обычную систему подкачки. Значение по умолчанию для этого порога - степень сжатия 8: 1.

Проблемы цена / производительность

В аппаратных реализациях технология также зависит от разницы в цене между различными компонентами системы, например, разница между стоимостью ОЗУ и стоимостью процессора, предназначенного для сжатия. Относительные различия в цене / производительности различных компонентов, как правило, со временем меняются. Например, добавление сопроцессора сжатия может иметь минимальное влияние на стоимость ЦП.

Приоритезация

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

Сжатие с использованием квантования

Разработчики ускорителей используют квантование для уменьшения разрядности значений и снижения стоимости перемещения данных. Однако любое значение, которое не вписывается в уменьшенную битовую ширину, приводит к переполнению (мы называем эти значения выбросами). Поэтому ускорители используют квантование для приложений, устойчивых к переполнениям. В большинстве приложений частота выбросов низкая, а значения часто находятся в узком диапазоне, что дает возможность использовать квантование в процессорах общего назначения. Однако программная реализация квантования в процессорах общего назначения имеет три проблемы. Во-первых, программист должен вручную реализовать преобразования и дополнительные инструкции для квантования и деквантования значений, что требует усилий программиста и накладных расходов на производительность. Во-вторых, чтобы покрыть выбросы, битовая ширина квантованных значений часто становится больше или равна исходным значениям. В-третьих, программист должен использовать стандартную разрядность; в противном случае извлечение нестандартной битовой ширины (например, 1-7, 9-15 и 17-31) для представления узких целых чисел увеличивает накладные расходы на программное квантование. Аппаратная поддержка в иерархии памяти универсальных процессоров для квантования может решить эти проблемы. Аппаратная поддержка позволяет представлять значения небольшим и гибким числом битов и хранить выбросы в их исходном формате в отдельном пространстве, предотвращая переполнение. Это минимизирует метаданные и накладные расходы на поиск квантованных значений с помощью программно-аппаратного взаимодействия, которое передает параметры квантования и структуру данных на оборудование. В результате прозрачное аппаратное квантование имеет три преимущества по сравнению с методами сжатия кэша: (i) меньше метаданных, (ii) более высокая степень сжатия для значений с плавающей запятой и блоков кеша с несколькими типами данных, и (iii) меньшие накладные расходы на поиск сжатые блоки.

История

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

Origins

Пол Р. Уилсон предложил сжатое кэширование страниц виртуальной памяти в 1990 году в документе, распространенном на семинаре ACM OOPSLA / ECOOP '90 по сбору мусора («Некоторые проблемы и стратегии в Управление кучей и иерархии памяти ») и появившееся в ACM SIGPLAN Notices в январе 1991 года.

Компания Helix Software стала пионером в области сжатия виртуальной памяти в 1992 году, подав патентную заявку на этот процесс в октябре того же года. В 1994 и 1995 годах Helix усовершенствовал процесс, используя тестовое сжатие и кеши вторичной памяти на видеокартах и ​​других устройствах. Однако Helix не выпускала продукт, включающий сжатие виртуальной памяти, до июля 1996 года и выпуска Hurricane 2.0, в котором использовался алгоритм сжатия Stac Electronics Lempel – Ziv – Stac, а также использовался выключенный -экранная видеопамять в качестве буфера сжатия для повышения производительности.

В 1995 году ОЗУ стоило почти 50 долларов за мегабайт, а Microsoft Windows 95 перечислил минимальные требования в 4 МБ ОЗУ. Из-за высоких требований к ОЗУ было выпущено несколько программ, в которых утверждалось, что для увеличения «памяти» используется технология сжатия. Наиболее известной была программа SoftRAM от Syncronys Softcorp. SoftRAM оказался «программным плацебо», в котором вообще не было технологий сжатия. Другие продукты, включая Hurricane и MagnaRAM, включали сжатие виртуальной памяти, но реализовали только кодирование длин серий с плохими результатами, что дало технологии отрицательную репутацию.

В своем выпуске от 8 апреля 1997 г. журнал PC Magazine опубликовал всесторонний тест заявлений о повышении производительности нескольких программных инструментов сжатия виртуальной памяти. В своем тестировании журнал PC Magazine обнаружил минимальное (5% в целом) улучшение производительности от использования Hurricane и ни одного из других пакетов. Однако тесты проводились на системах Intel Pentium, которые имели одно ядро ​​и были однопоточными, и, таким образом, сжатие напрямую влияло на всю активность системы.

В 1996 году IBM начала экспериментировать со сжатием, а в 2000 году IBM анонсировала свою технологию расширения памяти (MXT). MXT был автономным чипом, который действовал как кэш ЦП между ЦП и контроллером памяти. MXT имел встроенный механизм сжатия, который сжимал все данные, передаваемые в / из физической памяти. Последующее тестирование технологии корпорацией Intel показало улучшение общей производительности системы на 5–20%, аналогично результатам, полученным журналом PC Magazine с Hurricane.

Последние разработки

  • В начале 2008 года Linux был выпущен проект под названием zram (первоначально называвшийся compcache); в обновлении 2013 года он был включен в Chrome OS и Android 4.4
  • В 2010 году IBM выпустила Active Memory Expansion (AME) для AIX 6.1, который реализует сжатие виртуальной памяти.
  • В 2012 году некоторые версии микросхемы POWER7 + включали аппаратный ускоритель AME для поддержки сжатия данных, используемый в AIX для сжатия виртуальной памяти.
  • В декабре 2012 года был анонсирован проект zswap ; он был объединен с основной веткой ядра Linux в сентябре 2013 года.
  • В июне 2013 года Apple объявила, что будет включать сжатие виртуальной памяти в OS X Mavericks, используя Алгоритм Wilson-Kaplan WKdm.
  • В обновлении «Windows Insider Preview» от 10 августа 2015 года для Windows 10 (сборка 10525) добавлена ​​поддержка сжатия ОЗУ.
См. Также
Ссылки
Последняя правка сделана 2021-06-18 03:36:50
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте