Дедупликация страницы исполняемого кода драйверов OC Windows (1187398), страница 2
Текст из файла (страница 2)
Перспективы развития ...................................................................................................................663.3. Возможные применения ................................................................................................................673.3.1. Возможные применения метода дедупликации одинаковых страниц. ..............................673.3.2. Возможные применения Copy On Write в NonPaged Memory ............................................674. Список литературы ...............................................................................................................................693АннотацияДанной работе исследовались способы дедупликации исполняемого кода драйверовв ОС Windows, был предложен и реализован метод дедупликации, который былпротестирован и доказал свою эффективность.
В процессе работы над этим методом былимплементирован ранее отсутствовавший в ОС Windows механизм копирования призаписи (Copy On Write или COW) для неподкачиваемого пула памяти. Этот механизм сампо себе может быть иметь очень широкое применение, в следствие чего, о нем в даннойработе говорится отдельно.41. ВведениеРассмотрим ситуацию, когда в ОС Windows одновременно исполняются несколькоидентичных драйверов.
Такая ситуация возникает, например, при контейнернойвиртуализации, где для каждого контейнера приходится устанавливать свои драйвера,которые очень часто совпадают для разных контейнеров вплоть до версии [17, 18].Исполняемый код каждого из этих по сути идентичных экземпляров одного драйверазагружается в память машины. В случае большого количества контейнеров размерзанимаемой им памяти исчисляется уже десятками Мб.Таким образом в системе находятся наборы идентичных страниц, которые в случаенахождения в оперативной памяти занимают место, которое могло бы в противном случаебыть использовано с пользой, например, для запуска еще одного контейнера. А в случае,когдаэтистраницы принадлежатподкачиваемому пулу памяти,онисоздаютдополнительную нагрузку на подсистему подкачки страниц. Например, если в системезаканчивается память, и драйверы попеременно обращаются к нескольким идентичнымстраницам, то менеджеру памяти приходится постоянно то подгружать эти страницы сдиска, то сбрасывать их обратно в файл подкачки.
Этого можно было бы избежать, имеявсего одну физическую страницу вместо многих одинаковых. Таким образом приходим кпостановке проблемы.1.1 Постановка проблемыКогда в систему загружено много идентичных драйверов. Страницы их кода, вопервых, идентичны, во-вторых, каждая из них занимает память, а в-третьих, если этоподкачиваемые страниц, то они создают дополнительную нагрузку на подсистемуподкачки страниц.1.2 Цель работыЦель работы - создание механизма дедупликации страниц исполняемого кодаидентичных драйверов.Все драйверы с идентичным бинарным кодом должны использовать один общийнабор страниц, а не работать каждый со своим, как раньше.Таким образом необходимо создать метод: алгоритм и его рабочую реализацию,которые бы могли заменить в памяти несколько идентичных наборов страниц кодадрайвера одним единственным экземпляром.51.3. Обзор существующих методов ее решения1.3.1.
KVMSame Page Merging (KSM), которая применяется в Linux и KVM. Впервыепоявилась в 2008г. [19]. Она позволяет ядру объединять одинаковые страницы памятиразличных процессов или виртуальных гостевых систем в одну для совместногоиспользования [19 - 22].1.3.2. VMwareTransparent page sharing (TPS) от VMware - это техника, в которой идентичныеблоки виртуальной памяти, используемые в гостевых ОС в виртуальных машинах,хранятся только в одном экземпляре в физической памяти хостовой ОС [23 - 25].1.3.3.
Недостатки существующих методовЭти два метода: KSM и TPS - достаточно похожи и с учетом того, что одинобъединяет отдельные страницы, а второй - блоки страниц.Однако, они имеют свои недостатки. Например, им требуется периодическоесканирование памяти в поисках одинаковых страниц, или же, они могут анализироватьстраницы, только тогда, когда они загружаются в память. Однако, при этом все равноувеличивается нагрузка на процессор.А главное, так как данная задача изначально относится к контейнернойвиртуализации для Windows, то оба метода неприменимы.1.3.4. Особенности данной ситуацииОсновная задача – не поиск страниц, а их объединение.Данная ситуация вообще достаточно необычна, поскольку основная задача здесь непоиск страниц, а их объединение. Не нужно искать одинаковые страницы, так как знаемназвание и версию драйвера и можем отследить его загрузку.Работа с NonPaged Memory в Windows, где нет механизма Copy On Write.Еще одно отличие - работа с NonPaged памятью в Windows, где тем механизмаCopy On Write.
Придется его сделать.61.4. Обзор литературыВ этом пункте будут описаны все необходимые понятия, определения и предметнаяобласть.1.4.1. ВиртуализацияОбзор технологий виртуализации.Задача и методы ее решения, излагаемые в данной работе, тесно связаны свиртуализацией.
Следовательно, необходимо сначала провести небольшой обзор этойтемы, и дать определения используемым терминам.Виртуализация.У термина "виртуализация" есть несколько значений [10, 26]:•Виртуализация в вычислениях – процесс представления наборавычислительных ресурсов, или их логического объединения, который дает какие-либопреимущества перед оригинальной конфигурацией.•Виртуализация – методология разделения ресурсов компьютера в средыисполнения по средствам таких концепций или технологий, как разбиение на партиции,разделение времени, симуляция, эмуляция, качество обслуживания и другие.•Виртуализация – это способ абстрагирования реального используемогообъекта от концептуального представления о нем у его пользователя.В данной работе речь пойдет о последнем значении.Виртуальная машина.Виртуальная машина — это окружение, которое представляется для «гостевой»операционной системы, как аппаратное.
Однако на самом деле это программноеокружение, которое эмулируется программным обеспечением хостовой системы. Этаэмуляция должна быть достаточно надёжной, чтобы драйверы гостевой системы моглистабильно работать. При использовании паравиртуализации, виртуальная машина неэмулирует аппаратное обеспечение, а, вместо этого, предлагает использовать специальноеAPI. [7]Гипервизор.Гипервизор, также называемый монитором виртуальных машин, это программа,позволяющая на одном компьютере (хосте) запускать несколько операционных систем(называемых гостевыми).
Название это возникло из того, что, фактически, гипервизорнаходится на уровень выше супервизора (системы, управляющей запуском обычныхпользовательских приложений). Гипервизор предоставляет гостевым операционнымсистемам виртуальную аппаратную платформу, отвечает за изоляцию гостевых системдруг от друга, разделение и упраление ресурсами. Гипервизор также может предоставлять7средства связи между гостевыми операционными системами по типу, например,внутренней компьютерной сети.Гипервизор предоставляет возможности по отдельному отключению иливключению машин, подключению к ним различного эмулированного оборудования, атакже и «проброс» реального оборудования в виртуальную машину (например,клавиатуры и мыши, или даже сетевой карты и cd-привода).Гипервизоры разделяют на два типа: запускаемые на аппаратуре как операционныесистемы (на “bare metal”) и запускаемые под обычной операционной системой.«прозрачность» при управлении ресурсами.
Также такой подход позволяетдобиться большей производительности. Из недостатков можно отметить необходимостьвключения в гипервизор драйверов для поддержки различного оборудования. [11, 12]Гипервизоры второго типа работают под некоторой операционной системой, такойкак Windows или Linux. Такой вариант более доступен обычным пользователям, крометого исчезает необходимость в драйверах устройств, так как низкоуровневая работа сустройствами в данном случае ложится на плечи хостовой операционной системы.Контейнерная виртуализация.Контейнернаявиртуализация-этоподвидвиртуализации,вкоторомвиртуализуется только пространство пользователя, называкемое контейнером, а ядроостается общим для всех контейнеров.
Плюсы относительно виртуальных машин экономия места, можно развернуть гораздо больше контейнеров, по сравнению с числомвиртуальных машин, на одном и том же оборудовании. Минусы - все эти контейнерыбудут иметь одинаковую операционную систему, т.к. имеют общее ядро. В каждыйконтейнер грузится собственный набор драйверов. А так как они часто совпадают, встаетзадача дедупликации их кода [17, 18].Технологии виртуализации.Существуют различные технологии виртуализации, имеющие свои достоинства инедостатки.