Возвращение памяти

Когда все эти виртуальные машины находятся на одном и том же физическом оборудовании, у всех есть собственные страницы памяти и все они считают себя царями горы, все превосходно, но до тех пор, пока не понадобится вернуть память назад.
Особую важность это приобретает в случае перерасхода (overcommitment) памяти, когда гипервизор симулирует, что общий объем памяти для всех виртуальных машин в целом превышает общий объем физической памяти, имеющийся в системе. В общем, это неплохая затея, поскольку она позволяет гипервизору одновременно разрешать запуск все большего и большего количества полноценных виртуальных машин. Например, на машине с 32 Гбайт памяти можно запустить три виртуальные машины, каждая из которых будет полагать, что у нее 16 Гбайт памяти. Разумеется, столько машин с такой памятью там не поместится. Но, возможно, трем машинам в действительности одновременно не понадобится максимальный объем физической памяти. Или, возможно, они будут совместно использовать страницы, имеющие одно и то же содержимое (например, ядро Linux) в различных виртуальных машинах и при этом будет проводиться оптимизация, известная как дедупликация (deduplication). В таком случае три виртуальные машины используют в общем объем памяти, в три раза меньший 16 Гбайт. Дедупликация будет рассмотрена чуть позже, а сейчас главное заключается в том, что кажущееся на данный момент хорошее распределение при изменении рабочей нагрузки может оказаться плохим. Вполне возможно, виртуальной машине 1 понадобится больше памяти, в то время как виртуальная машина 2 могла бы работать с меньшим количеством страниц. В таком случае было бы хорошо, чтобы гипервизор смог передать ресурсы от одной виртуальной машины к другой и принести пользу всей системе. Вопрос в том, как можно безопасно забрать страницы памяти, если эта память уже отдана виртуальной машине?

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

Недостаток такого подхода заключается в том, что это должен сделать гипервизор, но он не имеет понятия о том, какие из страниц представляют для гостевой операционной системы наибольшую ценность. Это очень похоже на выгрузку неподходящих страниц. Если для выгрузки будут выбраны верные страницы (то есть те, которые также были бы выбраны гостевой операционной системой), то впереди будет ждать еще немало проблем. Предположим, к примеру, что гипервизор выгрузил страницу P Чуть позже гостевая операционная система также решает выгрузить эту страницу на диск. К сожалению, у гипервизора и у гостевой операционной системы разные пространства свопинга. Иными словами, гипервизор должен сначала вернуть содержимое первой страницы обратно в память только для того, чтобы посмотреть, как гостевая операционная система тут же снова запишет ее на диск. Получается не очень-то эффективно.

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

7.7.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Возвращение памяти:

  1. § 23 Замена одного исполнения другим. – Замена вещи ее ценой. – Определение цены при возвращении. – Русский закон по поводу возвращения имения законному владельцу. – Случаи сей замены в русском законе.
  2. ПРЕДСТАВЛЕНИЕ ПАМЯТИ
  3. Гигиена памяти.
  4. укрепление памяти
  5. ТЕОРИЯ ПАМЯТИ
  6. V. 2. 5. Структура парциального хранилища памяти.
  7. Сила памяти
  8. В психологии различают четыре типа памяти.
  9. V. 2. МОДЕЛЬ ПАРЦИАЛЬНОГО ХРАНИЛИЩА ПАМЯТИ ЧЕЛОВЕКА
  10. следующие виды памяти
  11. Глава 14 ВОЗВРАЩЕНИЕ ВО ЧРЕВО
  12. Энерго-информационные ключи к памяти Атлантиды
  13. Роль памяти и воображения
  14. 9.2. БАРЬЕРЫ ПАМЯТИ
  15. 9.11. С ПОМОЩЬЮ ПАМЯТИ
  16. 4.7. МЕТОД ПОРТАТИВНОГО БАНКА ПАМЯТИ