Аппаратные ресурсы виртуальной машины (VM)

Виртуальная машина VM – это представление физических вычислительных ресурсов в виде программы.

Каждая VM представляет собой набор ресурсов, которые предоставляются уровнем физической инфраструктуры. Эти ресурсы обычно организуются в «пул» (некоторое количество чего-то, из которого можно брать это что-то частями). Эти ресурсы могут предоставляться VM динамически и (иногда) – статически.

Каждая VM «видит» свой набор назначенных ей ресурсов в форме компонентов  

  • Тип аппаратной платформы процессора (x86 для 32-битных VM или x64 для 64-битных VM)
  • Тип виртуального оборудования (в зависимости от уровня виртуализации)
  • Виртуальный процессор CPU (и возможно виртуальные сокеты (sockets) и виртуальные ядра (cores))
  • Виртуальная память RAM (также это может быть Persistent RAM, т.е. оперативная память, сохраняющая данные в отсутствие питания)
  • Виртуальный диск, подключенный к виртуальному контроллеру
  • Виртуальная сетевой интерфейс NIC (Network Interface Card)

Могут быть также дополнительные аппаратные компоненты, которые не являются обязательными, но могут быть полезными в ряде случаев, например, когда требуется видеодрайвер, клавиатура и мышь для удалённой консоли управления.

Например, в платформе виртуализации VMware vSphere для VM можно назначать множество дополнительного оборудования.

Рис. 1. Дополнительное оборудования для VM в VMware vSphere.

Кроме показанного на рисунке, для VM можно также назначать устройства PCI, устройства SCSI, виртуальные порты FC, а также некоторые другие виды устройств хранения, например, NVMe или SATA.

В последнее время приобретают популярность виртуальные GPU, которые используются в некоторых задачах, которые лучше выполняются на GPU, а не на CPU

Как VM делят процессор и память

На одном физическом сервере можно запустить много виртуальных машин. Как же они делят его вычислительные ресурсы: вычислительную мощность процессора CPU и память RAM?

Для этого существует много различных программно-аппаратных механизмов, которые работают на уровне машинных кодов, по сути, упорядоченных потоков 0 и 1, которые обрабатывает процессор и которые временно храниться в кэше (быстродействующей промежуточной памяти процессора), а также в оперативной памяти RAM компьютера, к которой непосредственно процессор подключен.

Как известно, один процессор CPU (Central Processor Unit) может содержать 2, 4, 6, 8 или больше ядер (cores), то есть, самостоятельных вычислительных единиц, которые могут обрабатывать один или больше потоков (т.е. нулей и единиц, которые образуют процессы программы или приложения). Конечно, самый простой способ – назначить каждому ядру свою виртуальную машину.

Рис. 2. Ядра CPU с виртуальными машинами.

Однако, кроме такого элементарного способа, можно в одном ядре (Core) задавать ещё и несколько потоков (Thread) и обрабатывать их раздельно. Это делается методом прерываний. То есть, процессор или ядро, обрабатывают сначала один поток, затем другой, потом третий и т.д. Затем обработав все заданные потоки, снова возвращается к первому потоку.

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

Рис. Обработка нескольких процессов VM в одном процессоре CPU

.

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

Для иллюстрации, приведет микрофотографию реального восьмиядерного CPU с областями 3-уровневого кэша LL Cache Slice, и других устройств: ядра CPU (CPU Core) агент памяти (Memory Agent), агента шины PCIe (PCIe Agent), устройство управления питанием (Power Control Unit), двух канальный контроллер вваод-вывода памяти (2-Channel DDR3 I/O), кольцевой шины, объединяющей области кэша (Ring Bus) и др.

Рис. 4. Чип восьмиядерного CPU с функциональными областями.

Совместная работа перечисленных устройств позволяет получить формальную картину обработки потоков данных, показанную на рис. 3.

В общем и целом, можно получить следующую картину обработки потоков процессов VM. При помощи программной обработки, процессы (Process) различных VM делятся на потки (threads), которые обрабатываются в ядрах (Cores) процессоров CPU (Node), использующих общую память (memory). Таких узлов Node может быть довольно много, и они не обязательно должны совпадать с физическими процессорами. То есть, один процессор может обрабатывать несколько узлов Node, а также и узел Node может занимать ресурсы нескольких процессоров.

Рис. 5. Программно-аппаратная обработка многих потоков в процессоре.

Возможность динамического изменения ресурсов VM

Какие виды ресурсов можно изменять на работающей VM, т.е. динамически? На самом деле, это в основном зависит от используемого гипервизора и его версии, так что тут есть много возможностей.

В основном эти возможности, следующие:

Тип ресурсаУвеличение ресурсаУменьшение ресурса
CPU (socket)ВозможноВозможно
CPU (core)Невозможно, вследствие ограничений ОСНевозможно, вследствие ограничений ОС
RAMВозможноВозможно, но обычно не используется
Накопитель (устройство)Возможно, кроме устройств IDEВозможно, кроме устройств IDE
Накопитель (пространство)Возможно, кроме устройств IDEВозможно, кроме устройств IDE, но обычно не используется
Контроллер устройства храненияВозможноВозможно, но обычно не используется
Сетевой контроллерВозможноВозможно
Устройство PCIВозможноВозможно, но обычно не используется
Устройство USB ВозможноВозможно
Периферийное устройство НевозможноНевозможно
GPU общего применения ВозможноВозможно, но обычно не используется

В следующих публикациях рубрики «Ликбез» этот вопрос будет рассмотрен подробнее.

Об авторе Алексей Шалагинов

Независимый эксперт
Запись опубликована в рубрике Ликбез, Технологии с метками , , , , , , . Добавьте в закладки постоянную ссылку.

1 отзыв на “Аппаратные ресурсы виртуальной машины (VM)

  1. Уведомление: Telecom & IT

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.