В компьютерной науке виртуализация памяти отделяет ресурсы энергозависимой памяти с произвольным доступом (RAM) от отдельных систем в центре обработки данных, а затем объединяет эти ресурсы в виртуализированный пул памяти, доступный любому компьютеру в кластере. [ необходима цитата ] К пулу памяти обращается операционная система или приложения, работающие поверх операционной системы. Распределенный пул памяти затем может использоваться как высокоскоростной кэш, уровень обмена сообщениями или большой ресурс общей памяти для приложения ЦП или ГП.
Виртуализация памяти позволяет сетевым и, следовательно, распределенным серверам совместно использовать пул памяти для преодоления ограничений физической памяти, что является распространенным узким местом в производительности программного обеспечения. [ требуется ссылка ] Благодаря этой возможности, интегрированной в сеть, приложения могут использовать очень большой объем памяти для улучшения общей производительности, использования системы, повышения эффективности использования памяти и включения новых вариантов использования. Программное обеспечение на узлах пула памяти (серверах) позволяет узлам подключаться к пулу памяти для предоставления памяти, а также хранения и извлечения данных. Управляющее программное обеспечение и технологии избыточного выделения памяти управляют общей памятью, политиками вставки, вытеснения и предоставления данных, назначением данных участвующим узлам и обрабатывают запросы от клиентских узлов. Доступ к пулу памяти может осуществляться на уровне приложения или на уровне операционной системы. На уровне приложения доступ к пулу осуществляется через API или как к сетевой файловой системе для создания высокоскоростного кэша общей памяти. На уровне операционной системы кэш страниц может использовать пул как очень большой ресурс памяти, который намного быстрее локального или сетевого хранилища.
Реализации виртуализации памяти отличаются от систем с общей памятью . Системы с общей памятью не допускают абстракции ресурсов памяти, поэтому требуют реализации с одним экземпляром операционной системы (т.е. не в кластерной среде приложений).
Виртуализация памяти также отличается от хранения на основе флэш-памяти, такой как твердотельные накопители (SSD) — SSD и другие подобные технологии заменяют жесткие диски (сетевые или иные), в то время как виртуализация памяти заменяет или дополняет традиционную оперативную память.
В этом случае приложения, работающие на подключенных компьютерах, подключаются к пулу памяти напрямую через API или файловую систему.
В этом случае операционная система подключается к пулу памяти и делает объединенную память доступной для приложений.
Технология виртуализации памяти вытекает из архитектур управления памятью и методов виртуальной памяти . В обеих областях путь инноваций переместился от тесно связанных отношений между логическими и физическими ресурсами к более гибким, абстрактным отношениям, где физические ресурсы распределяются по мере необходимости.
Системы виртуальной памяти абстрагируются между физической оперативной памятью и виртуальными адресами, назначая адреса виртуальной памяти как физической оперативной памяти, так и дисковому хранилищу, расширяя адресуемую память, но за счет скорости. Архитектуры NUMA и SMP оптимизируют распределение памяти в многопроцессорных системах. В то время как эти технологии динамически управляют памятью в пределах отдельных компьютеров, виртуализация памяти управляет агрегированной памятью нескольких сетевых компьютеров как единым пулом памяти.
В тандеме с инновациями в управлении памятью возник ряд методов виртуализации, позволяющих максимально эффективно использовать имеющиеся аппаратные ресурсы. Виртуализация приложений была впервые продемонстрирована в системах мэйнфреймов. Следующей волной стала виртуализация хранения , когда серверы подключались к системам хранения, таким как NAS или SAN, в дополнение к встроенным жестким дискам или вместо них. Виртуализация серверов или полная виртуализация разделяет один физический сервер на несколько виртуальных машин , объединяя несколько экземпляров операционных систем на одной машине с целью повышения эффективности и гибкости. Как при виртуализации хранилищ, так и при виртуализации серверов приложения не знают, что используемые ими ресурсы являются виртуальными, а не физическими, поэтому эффективность и гибкость достигаются без изменения приложений. Таким же образом виртуализация памяти распределяет память всего сетевого кластера серверов между компьютерами в этом кластере.