Виртуальная архитектура неоднородного доступа к памяти для виртуальных машин

Иллюстрации

Показать все

Изобретение относится к области технологии виртуализации. Техническим результатом является повышение эффективности создания виртуальных машин. Способ создания экземпляра виртуальной машины содержит этапы, на которых принимают в системе управления информацию, указывающую физическую топологию компьютерных систем в центре обработки данных; принимают запрос создания экземпляра виртуальной машины, причем данный запрос указывает характеристику виртуальной машины; определяют на основе упомянутой информации, указывающей физическую топологию компьютерных систем, размер для виртуального узла архитектуры неоднородной памяти (NUMA) для центра обработки данных и определяют на основе этого определенного размера виртуального NUMA узла для центра обработки данных и упомянутой характеристики виртуальной машины количество виртуальных узлов NUMA для виртуальной машины, при этом каждый виртуальный узел NUMA для виртуальной машины содержит некоторое количество виртуальных процессоров виртуальной машины и некоторый объем виртуальной памяти виртуальной машины, причем каждый виртуальный узел NUMA для виртуальной машины существует в пределах виртуальной машины; и выбирают на основе конфигурации виртуальной машины, имеющей упомянутое определенное количество виртуальных узлов NUMA, компьютерную систему из компьютерных систем в центре обработки данных и посылают запрос в выбранную компьютерную систему в центре обработки данных, причем данный запрос предписывает выбранной компьютерной системе создать экземпляр виртуальной машины, имеющий упомянутое определенное количество виртуальных узлов NUMA. 3 н. и 17 з.п. ф-лы, 14 ил.

Реферат

Уровень техники

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

Сущность изобретения

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

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

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

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

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

Краткое описание чертежей

Фиг.1 - иллюстративная компьютерная система, в которой можно реализовать аспекты настоящего изобретения.

Фиг.2 - операционная среда для практического осуществления аспектов настоящего изобретения.

Фиг.3 - операционная среда для практического осуществления аспектов настоящего изобретения.

Фиг.4 - схема организации памяти согласно вариантам осуществления.

Фиг.5 - иллюстративная операционная среда, практически осуществляющая аспекты настоящего изобретения.

Фиг.6 - иллюстративная операционная среда, практически осуществляющая аспекты настоящего изобретения.

Фиг.7 - иллюстративная операционная среда, практически осуществляющая аспекты настоящего изобретения.

Фиг.8 - операционная процедура для практического осуществления аспектов настоящего изобретения.

Фиг.9 - альтернативный вариант осуществления операционной процедуры 800, показанной на фиг.8.

Фиг.10 - операционная процедура для практического осуществления аспектов настоящего изобретения.

Фиг.11 - альтернативный вариант осуществления операционной процедуры 1000, показанной на фиг.10.

Фиг.12 - альтернативный вариант осуществления операционной процедуры 1000, показанной на фиг.11.

Фиг.13 - операционная процедура для практического осуществления аспектов настоящего изобретения.

Фиг.14 - альтернативный вариант осуществления операционной процедуры 1300, показанной на фиг.13.

Подробное описание

Варианты осуществления могут выполняться на одном или нескольких компьютерах. Фиг.1 и нижеследующее рассмотрение призваны обеспечить краткое общее описание подходящей вычислительной среды, в которой можно реализовать настоящее изобретение. Специалисту в данной области техники очевидно, что компьютерная система, показанная на фиг.1, в некоторых вариантах осуществления, может быть воплощена в компьютерных системах 200, 300, 600 и 700. В этих иллюстративных вариантах осуществления, компьютерные системы могут включать в себя некоторые или все компоненты, описанные на фиг.1, и электронную схему, позволяющую конкретно воплощать аспекты настоящего изобретения.

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

На фиг.1 показана иллюстративная вычислительная система общего назначения. Вычислительная система общего назначения может включать в себя традиционный компьютер 20 и т.п., включающий в себя логический процессор 21, системную память 22 и системную шину 23, которая подключает различные компоненты системы, в том числе системную память, к логическому процессору 21. Системная шина 23 может относиться к любому из нескольких типов шинных структур, включающих в себя шину памяти или контроллер памяти, периферийную шину и локальную шину, использующих любую из разнообразных шинных архитектур. Системная память может включать в себя постоянную память (ПЗУ) 24 и оперативную память (ОЗУ) 25. Базовая система ввода/вывода 26 (BIOS), содержащая базовые процедуры, позволяющие переносить информацию между элементами компьютера 20, например, при запуске, хранится в ПЗУ 24. Компьютер 20 может дополнительно включать в себя привод 27 жесткого диска для чтения с жесткого диска (не показан) и записи на него, привод 28 магнитного диска для чтения со сменного магнитного диска 29 или записи на него, и привод 30 оптического диска для чтения со сменного оптического диска 31, например, CD ROM или другого оптического носителя, или записи на него. Привод 27 жесткого диска, привод 28 магнитного диска и привод 30 оптического диска показаны подключенными к системной шине 23 интерфейсом 32 привода жесткого диска, интерфейсом 33 привода магнитного диска и интерфейсом 34 оптического привода, соответственно. Приводы и соответствующие компьютерно-считываемые носители информации обеспечивают энергонезависимое хранение компьютерно-считываемых инструкций, структур данных, программных модулей и других данных для компьютера 20. Хотя иллюстративная среда, описанная здесь, предусматривает использование жесткого диска, сменного магнитного диска 29 и сменного оптического диска 31, специалисту в данной области техники очевидно, что в иллюстративной операционной среде также можно использовать компьютерно-считываемые носители информации других типов, где могут храниться данные, доступные компьютеру, например, магнитные кассеты, флэш-карты, цифровые видеодиски, картриджи Бернулли, блоки оперативной памяти (ОЗУ), блоки постоянной памяти (ПЗУ) и т.п. В общем случае, в определенных вариантах осуществления, такие компьютерно-считываемые носители информации можно использовать для хранения процессорно-выполняемых инструкций, реализующих аспекты настоящего изобретения.

На жестком диске, магнитном диске 29, оптическом диске 31, в ПЗУ 24 или ОЗУ 25 может храниться ряд программных модулей, включая операционную систему 35, одну или несколько прикладных программ 36, другие программные модули 37 и программные данные 38. Пользователь может вводить в компьютер 20 команды и информацию через устройства ввода, например, клавиатуру 40 и указательное устройство 42. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, геймпад, спутниковую антенну, сканер и т.п. Эти и другие устройства ввода часто подключаются к логическому процессору 21 через интерфейс 46 последовательного порта, который подключен к системной шине, но может подключаться посредством других интерфейсов, например, через параллельный порт, игровой порт или универсальную последовательную шину (USB). Дисплей 47 или устройство отображения другого типа также можно подключать к системной шине 23 через интерфейс, например, видеоадаптер 48. Помимо дисплея 47 компьютеры обычно включают в себя другие периферийные устройства вывода (не показаны), например, громкоговорители и принтеры. Иллюстративная система, показанная на фиг.1, также включает в себя хост-адаптер 55, шину 56 интерфейса малых компьютерных систем (SCSI) и внешнее запоминающее устройство 62, подключенное к шине 56 SCSI.

Компьютер 20 может работать в сетевой среде, используя логические соединения с одним или несколькими удаленными компьютерами, например, удаленным компьютером 49. Удаленным компьютером 49 может быть другой компьютер, сервер, маршрутизатор, сетевой ПК, равноправное устройство или другой общий сетевой узел, который обычно может включать в себя многие или все элементы, описанные выше применительно к компьютеру 20, хотя на фиг.1 показано только запоминающее устройство 50. Логические соединения, изображенные на фиг.1, могут включать в себя локальную сеть (LAN) 51 и глобальную сеть (WAN) 52. Такие сетевые среды часто имеют место в офисах, компьютерных сетях предприятий, интрасетях и в интернете.

При использовании в сетевой среде LAN, компьютер 20 может подключаться к LAN 51 через сетевой интерфейс или адаптер 53. При использовании в сетевой среде WAN, компьютер 20 обычно включает в себя модем 54 или другое средство установления связи по глобальной сети 52, например, интернету. Модем 54, который может быть внутренним или внешним, может подключаться к системной шине 23 через интерфейс 46 последовательного порта. В сетевой среде, программные модули, указанные применительно к компьютеру 20, или часть из них, могут храниться в удаленном запоминающем устройстве. Очевидно, что показанные сетевые соединения являются иллюстративными, и можно использовать другие средства установления линий связи между компьютерами. Кроме того, хотя предполагается, что многочисленные варианты осуществления настоящего изобретения особо пригодны для компьютерных систем, в этом документе не предусмотрено никаких ограничений раскрытия такими вариантами осуществления.

На фиг.2 и 3 показаны обобщенные блок-схемы компьютерных систем. Согласно фигуре, компьютерная система 200 может включать в себя физические аппаратные устройства, например, запоминающее устройство 208, например, жесткий диск, контроллер сетевого интерфейса (NIC) 210, графическую карту 234, по меньшей мере, один логический процессор 212 и оперативную память (ОЗУ) 214. Компьютерная система 200 также может включать в себя компоненты, аналогичные компонентам компьютера 20, показанного на фиг.1. Хотя показан один логический процессор, в других вариантах осуществления, компьютерная система 200 может иметь несколько логических процессоров, например, несколько ядер выполнения на процессор и/или несколько процессоров, каждый из которых может иметь несколько ядер выполнения. На фиг.2 показан гипервизор 202, который, в данной области техники, также называют монитором виртуальной машины. Гипервизор 202 в иллюстрируемом варианте осуществления включает в себя выполнимые инструкции для контроля и арбитража доступа к оборудованию компьютерной системы 200. В целом, гипервизор 202 может генерировать среды выполнения, именуемые разделами, например, дочерние разделы с 1 по N (где N - целое число большее 1). Согласно вариантам осуществления, дочерний раздел можно считать основной единицей изоляции, поддерживаемой гипервизором 202, т.е. каждый дочерний раздел можно отобразить в набор аппаратных ресурсов, например, память, устройства, циклы логического процессора и т.д., который находится под управлением гипервизора 202 и/или родительского раздела. Согласно вариантам осуществления, гипервизор 202 может представлять собой самостоятельный программный продукт, часть операционной системы, внедренную в программно-аппаратное обеспечение материнской платы, специализированные интегральные схемы или их комбинацию.

В раскрытом примере компьютерная система 200 включает в себя родительский раздел 204, который также можно рассматривать как домен 0-го уровня в сообществе открытых кодов. Родительский раздел 204 может обладать возможностью предоставлять ресурсы гостевым операционным системам, выполняющимся в дочерних разделах 1-N, с использованием поставщиков 228 услуги виртуализации (VSP), которые в сообществе открытых кодов также именуются драйверами заднего плана. В этой иллюстративной архитектуре родительский раздел 204 может регулировать доступ к базовому оборудованию. В общем случае, VSP 228 можно использовать для мультиплексирования интерфейсов к аппаратным ресурсам посредством клиентов услуги виртуализации (VSC), которые в сообществе открытых кодов также именуются драйверами переднего плана. Каждый дочерний раздел может включать в себя один или несколько виртуальных процессоров, например, виртуальные процессоры 230-232, которыми гостевые операционные системы 220-222 могут управлять и на которых они могут составлять расписание для выполнения потоков. В общем случае, виртуальные процессоры 230-232 представляют собой информацию выполнимых инструкций и соответствующих состояний, которые обеспечивают представление физического процессора с конкретной архитектурой. Например, одна виртуальная машина может иметь виртуальный процессор, имеющий характеристики процессора Intel x86, а другой виртуальный процессор может иметь характеристики процессора PowerPC. Виртуальные процессоры в этом примере можно отображать в логические процессоры компьютерной системы, чтобы инструкции, реализующие виртуальные процессоры, поддерживались логическими процессорами. Таким образом, в этих иллюстративных вариантах осуществления, может одновременно выполняться несколько виртуальных процессоров, в то время как, например, другой логический процессор выполняет инструкции гипервизора. В общем случае, согласно фигуре, комбинация виртуальных процессоров, различных VSC и памяти в разделе можно рассматривать как виртуальную машину, например, виртуальную машину 240 или 242.

В общем случае, гостевые операционные системы 220-222 может включать в себя любую операционную систему, например операционные системы от Microsoft®, Apple®, сообщества открытых кодов и т.д. Гостевые операционные системы могут включать в себя режимы работы на уровне пользователя/ядра и могут иметь ядра, которые могут включать в себя планировщики, менеджеры памяти и т.д. Каждая гостевая операционная система 220-222 может иметь соответствующие файловые системы, в которых могут храниться приложения, например, серверы электронной торговли, почтовые серверы и т.д., а также сами гостевые операционные системы. Гостевые операционные системы 220-222 могут ставить в расписание потоки для выполнения на виртуальных процессорах 230-232, что позволяет осуществлять экземпляры таких приложений.

На фиг.3 показана альтернативная архитектура, которую можно использовать. На фиг.3 изображены компоненты, аналогичные тем, которые показаны на фиг.2, однако в этом иллюстративном варианте осуществления гипервизор 202 может включать в себя поставщики 228 услуги виртуализации и драйверы 224 устройств, и родительский раздел 204 может содержать конфигурационные утилиты 236. В этой архитектуре гипервизор 202 может осуществлять такие же или похожие функции, что и гипервизор 202, показанный на фиг.2. Гипервизор 202, показанный на фиг.3, может представлять собой самостоятельный программный продукт, часть операционной системы, внедренную в программно-аппаратное обеспечение материнской платы, или часть гипервизора 202 может быть реализована специализированными интегральными схемами. В этом примере родительский раздел 204 может иметь инструкции, которые можно использовать для конфигурирования гипервизора 202, однако запросы на доступ к оборудованию могут обрабатываться гипервизором 202, а не поступать в родительский раздел 204.

На фиг.4 показана схема организации памяти согласно вариантам осуществления, которые включают в себя виртуальные машины. Например, компьютерная система, например, компьютерная система 200, может иметь ОЗУ 214, имеющее адреса памяти. Вместо того чтобы сообщать физические системные адреса памяти виртуальным машинам, гипервизор 202 может представлять разные адреса для системных физических адресов, например, гостевых физических адресов (GPA), менеджерам памяти гостевых операционных систем. В этом случае, гостевые операционные системы могут манипулировать гостевыми физическими адресами, и гипервизор 202 поддерживает соотношение посредством GPA и SPA. Согласно фигуре, согласно варианту осуществления, GPA и SPA могут быть организованы в блоки памяти. В общем случае, блок памяти может включать в себя одну или несколько страниц памяти. Соотношение между GPA и SPA можно поддерживать с помощью таблицы теневых страниц, например, описанной в общеназначенной патентной заявке США № 11/128,665 под названием “Enhanced Shadow Page Table Algorithms”, содержание которой в полном объеме включено сюда в порядке ссылки. В ходе работы, когда гостевая операционная система сохраняет данные в GPA блока 1, данные фактически можно сохранять в разных SPA, например, блоке 6 в системе.

На фиг.5 схематично изображена операционная среда для практического осуществления аспектов настоящего изобретения. Например, несколько компьютерных систем 504-510 могут быть связаны друг с другом в центре 500 обработки данных (Хотя изображены четыре компьютерные системы, специалисту в данной области техники очевидно, что центр обработки данных может включать в себя больше или меньше компьютерных систем). Изображенные компьютерные системы могут иметь разные топологии и, кроме того, могут иметь разные характеристики, например разные объемы ОЗУ, разные скорости ОЗУ, разные количества логических процессоров и/или логические процессоры с разными скоростями.

Система управления 502 может иметь компоненты аналогичные компонентам компьютера 20, показанного на фиг.1, и/или компьютерных систем 200, 300, 600 или 700. Таким образом, согласно варианту осуществления, система управления 502 может представлять собой компьютерную систему, которая включает в себя предмет рассмотрения, описанный ниже со ссылкой на фиг.6 или фиг.7.

Продолжая общий обзор фигур, на фиг.6 показана компьютерная система 600, имеющая симметричную многопроцессорную топологию (SMP) или 'плоскую' топологию. В общем случае, SMP это архитектура компьютера, которая включает в себя совокупность процессоров, подключенных к единой совместно используемой памяти. В этой конфигурации контроллер 602 памяти может управлять переносом данных в память и из нее. Доступ к памяти может быть однородным в отношении каждого логического процессора 212A-F, и каждый логический процессор может обращаться ко всему диапазону памяти, т.е. системных физических адресов 622-632. Эта топология пригодна для компьютерных систем, имеющих сравнительно небольшое количество процессоров, но когда компьютерная система включает в себя много процессоров, борющихся за доступ к совместно используемой шине памяти, производительность системы может снижаться. Кроме того, сложность компьютерной системы значительно возрастает, что, в свою очередь, повышает цену в расчете на один процессор.

Короче говоря, компьютерная система 600 может включать в себя такие же или аналогичные компоненты, что и компьютер 200 или 300. Согласно фигуре, компьютерная система 600 может иметь совокупность логических процессоров 212A-212F (хотя показано шесть логических процессоров, компьютерная система может иметь больше или меньше), связанных друг с другом через контроллер 602 памяти, который управляет доступом к ОЗУ 214. Аналогично описанному выше, логические процессоры 212A-212F могут иметь разные характеристики, например, тактовые частоты, размеры кэша и т.д. В этой конфигурации, контроллер 602 памяти может управлять переносом данных в ОЗУ 214 и из него.

Можно создавать экземпляр гипервизора 202, управляющего оборудованием компьютерной системы 600. Гипервизор 202 может управлять одной или несколькими виртуальными машинами 240-242, каждая из которых может иметь виртуальные узлы NUMA, например виртуальные узлы NUMA 606-612. Виртуальные узлы NUMA 606-612 можно использовать для организации ресурсов виртуальной машины путем сообщения виртуальных топологий гостевым приложениям или гостевым операционным системам, например, гостевым операционным системам 220 и 222. Согласно фигуре, каждый виртуальный узел NUMA 606-612 может иметь один или несколько виртуальных процессоров 230A-D, 232A-D и гостевые физические адреса 614-616 и 618-620. В общем случае, гипервизор 202 может поддерживать каждый виртуальный узел NUMA 606-612 с помощью одного или нескольких логических процессоров и системных физических адресов из ОЗУ 214. Таким образом, гипервизор 202 может задавать один или несколько логических процессоров как идеальные процессоры, которые можно использовать для выполнения потоков виртуальных процессоров.

На фиг.7 схематично изображена компьютерная система 700, имеющая топологию, которая включает в себя узлы NUMA 702-706. Компьютерные системы с узлами NUMA можно, в общем случае, рассматривать как компьютерные системы, составленные из меньших компьютерных систем или ячеек. В этом примере каждый узел NUMA 606-612 может включать в себя один или несколько логических процессоров и локальную память. Память внутри узла NUMA рассматривается как локальная память, и память в других узлах NUMA рассматривается как удаленная память, поскольку только процессоры внутри узла подключены к одной и той же шине памяти. Узлы NUMA соединены между собой соединениями домена синхронизации кэшей, которые позволяют процессорам в одном узле NUMA синхронно обращаться к памяти в других узлах NUMA. Таким образом, системные физические адреса 622-632 однородны в отношении каждого процессора. Иными словами, системный физический адрес 20,000 одинаков для каждого процессора в компьютерной системе. Различие состоит в том, что для некоторых процессоров адрес памяти 20,000 является адресом локальной памяти, например, внутри их узла NUMA, а для других процессоров адрес памяти 20,000 является удаленным, например, вне их узла NUMA. В общем случае, доступ к локальной памяти осуществляется быстрее, чем к удаленной памяти, и соотношение между временами локального и удаленного доступа называется отношением NUMA. Отношение NUMA 1 к 2 означает, что для доступа к конкретному удаленному системному физическому адресу требуется вдвое больше циклов процессора, чем к локальному системному физическому адресу. NUMA позволяет избегать узких мест, обусловленных системами SMP, ограничивая количество процессоров на любой одной шине памяти, и, в общем случае, дешевле, чем компьютерная система SMP с таким же количеством логических процессоров.

Компьютерная система 700 может включать в себя такие же или аналогичные компоненты, что и компьютер 200 или 300. Согласно фигуре в этой операционной среде компьютерная система 700 включает в себя три узла NUMA 702-706 (хотя компьютер может иметь больше или меньше), связанные соединениями 708. Аналогично описанному выше, количество процессоров в каждом узле NUMA может варьироваться, характеристики процессоров могут изменяться, и каждый узел может иметь свое собственное ОЗУ.

По аналогии с фиг.7, гипервизор 202 может управлять оборудованием компьютерной системы 700. При запуске гостевых операционных систем или монолитных приложений, они могут выявлять топологии виртуальных машин 240 и 242 аналогично описанному выше. Каждому виртуальному узлу NUMA 606-612 можно назначать один или несколько идеальных процессоров и память из одного или нескольких узлов NUMA.

Хотя показано, что компьютерные системы 600 и 700 включают в себя две виртуальные машины 240 и 242, в других вариантах осуществления они могут выполнять больше или меньше виртуальных машин. Кроме того, хотя показано, что каждая виртуальная машина имеет два виртуальных узла NUMA, в других вариантах осуществления виртуальные машины могут иметь больше или меньше виртуальных узлов NUMA. Кроме того, хотя показано, что виртуальные узлы NUMA имеют два виртуальных процессора, в других вариантах осуществления виртуальные узлы NUMA могут иметь больше или меньше виртуальных процессоров. Кроме того, каждый виртуальный узел NUMA может отличаться топологией от других виртуальных узлов NUMA, например, один виртуальный узел NUMA может иметь 4 виртуальных процессора и 8 гигабайт ОЗУ, а другой виртуальный узел NUMA может иметь 2 виртуальных процессора и 4 гигабайт ОЗУ.

Ниже описан ряд логических блок-схем, представляющих реализации процессов. Для облегчения понимания, логические блок-схемы организованы так, что начальные логические блок-схемы представляют реализации в виде общей “большой картины”, а последующие логические блок-схемы демонстрируют дополнительные дополнения и/или детали. Кроме того, специалисту в данной области техники очевидно, что операционные процедуры, изображенные пунктирными линиями, считаются необязательными.

На фиг.8 показана операционная процедура для практического осуществления аспектов настоящего изобретения, включающая в себя операции 800-808. Операционная процедура начинается с операции 800, и операция 802 иллюстрирует прием на системе управления информации, указывающей физическую топологию компьютерных систем в центре обработки данных. Например, согласно фиг.5, логический процессор системы управления 502 может выполнять одну или несколько программ, которые могут получать информацию, идентифицирующую физическую топологию компьютерных систем 504-510 в центре 500 обработки данных. Согласно варианту осуществления система управления 502 может включать в себя NIC, и программа может использовать NIC для опроса каждой компьютерной системы 504-510. В этом примере каждая компьютерная система 504-510 может в ответ передавать информацию, идентифицирующую ее топологию. В другом варианте осуществления информация может поступать от администратора, который вводит информацию. В любом случае, информация может включать в себя, но не без ограничения, информацию, которая указывает, сколько узлов NUMA имеет (если имеет) каждая компьютерная система, какой объем ОЗУ имеет каждая компьютерная система, скорость ОЗУ, как организовано ОЗУ, скорости процессоров, количество ядер в каждом процессоре и т.д.

На фиг.8 операция 804 изображает прием запроса на создание экземпляра виртуальной машины, причем запрос указывает характеристику для виртуальной машины. Система управления 502 может принимать запрос на запуск виртуальной машины 240, например, из пользовательского интерфейса, выполняющегося в системе управления 502, или из компьютерной системы 504-510. В этом примере запрос может включать в себя желаемую характеристику для виртуальной машины 240. Например, характеристикой может быть желаемый объем ОЗУ, назначенный виртуальной машине, желаемое количество виртуальных процессоров или желаемые устройства I/O.

На фиг.8 операция 806 демонстрирует определение, на основании физической топологии компьютерных систем и характеристики для виртуальной машины, количество виртуальных узлов NUMA для виртуальной машины. После того, как система управления 502 принимает характеристику для виртуальной машины, например, 6 виртуальных процессоров, система управления 502 может использовать эту информацию совместно с информацией, которая описывает топологии компьютерных систем в центре 500 обработки данных, для определения, сколько виртуальных узлов NUMA нужно создать для виртуальной машины 240. Например, система управления 502 может определить оптимальный размер виртуального узла NUMA для центра 500 обработки данных и затем определить, сколько виртуальных узлов NUMA необходимо для построения виртуальной машины, имеющей желаемую характеристику.

В общем случае, размер виртуального узла NUMA влияет на работу виртуальной машины в центре 500 обработки данных. Например, с ростом размера виртуального узла NUMA, например, в отношении объема памяти и/или числа процессоров, мобильность виртуального узла NUMA снижается. Иными словами, крупные виртуальные узлы NUMA могут затруднять перенос виртуальной машины. Это происходит потому, что виртуальный узел NUMA должен быть назначен либо узлу NUMA, либо компьютерной системе, которая имеет достаточно 'плоских' ресурсов для реализации виртуального узла NUMA. Если, например, виртуальный узел NUMA слишком велик, например, имеет слишком большое ОЗУ или слишком много виртуальных процессоров, он будет не способен поместиться в более мелких узлах NUMA в центре 500 обработки данных, таким образом, ограничивая возможность переносить виртуальную машину. Кроме того, если более крупный виртуальный узел NUMA просто назначается нескольким более мелким узлам NUMA, производительность виртуальной машины будет снижаться вследствие различия, имеющегося между временами доступа к локальной памяти и удаленной памяти, а также вследствие того, что гостевая операционная система может не включать в себя информацию, которая указывает разность времен доступа к локальной и удаленной памяти.

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

Соответственно, согласно варианту осуществления система управления 502 может искать компромисс между мобильностью и эффективностью, определяя оптимальный размер виртуального узла NUMA для центра 500 обработки данных. Например, согласно варианту осуществления, логический процессор системы управления 502 может выполнять программу и определять средний размер узла NUMA в центре обработки данных, например, среднее количество логических процессоров, средний объем ОЗУ и т.д., и задавать размер виртуального узла NUMA таким же или меньшим, чем для среднего узла NUMA в системе. В другом варианте осуществления программа может быть выполнена с возможностью задавать размер виртуального узла NUMA немного превышающим наименьший узел NUMA в центре 500 обработки данных. Размер виртуального узла NUMA можно задать немного превышающим средний размер или наименьший размер с тем, чтобы, в случае большой нагрузки на компьютерную систему, единичному узлу NUMA можно было назначить более одного виртуального узла NUMA. В конкретном примере, если наименьший узел NUMA имеет 4 логических процессора и 8 гигабайт ОЗУ, то размер виртуального узла NUMA можно задать равным, например, 2 виртуальным процессорам и 4 гигабайтам ОЗУ.

Определив размер виртуального узла NUMA, согласно примеру, рассмотренному в предыдущем абзаце, размер виртуального узла NUMA можно использовать совместно с желаемой характеристикой для генерации виртуальной машины 240. Например, если пользователь указал, что ему нужна 6-процессорная виртуальная машина с 10 гигабайт ОЗУ, и виртуальный узел NUMA имеет 2 процессора и 4 гигабайт ОЗУ, то система управления 502 может сгенерировать конфигурационный файл, где указано, что виртуальная машина будет включать в себя 3 виртуальных узла NUMA.

На фиг.8 операция 808 иллюстрирует посылку запроса на компьютерную систему в центре обработки данных, причем запрос предписывает компьютерной системе создавать экземпляр виртуальной машины, имеющий определенное количество виртуальных узлов NUMA. Сгенерировав конфигурационный файл, система управления 502 может выбрать компьютерную систему в центре 500 обработки данных для создания экземпляра виртуальной машины 240 и передать конфигурационный файл выбранной компьютерной системе. Например, система управления 502 может определять, в каких компьютерных системах может поместиться виртуальная машина, например, какой компьютер имеет физический ресурсы для выполнения виртуальной машины, и какая компьютерная система имеет самую низкую рабочую нагрузку, и передавать виртуальную машину 240 на этот компьютер. В том же или другом варианте осуществления, пользователь может указывать приоритет для виртуальной машины 240, например, более критичные виртуальные машины можно пометить информацией, которая идентифицирует их относительную важность. В этом примере система управления 502 может быть выполнена с возможностью передавать высокоприоритетные виртуальные машины на компьютерные системы с более низкими рабочими нагрузками, и может пытаться консолидировать виртуальные машины с более низкими приоритетами на меньшем количестве компьютерных систем. В этом примере вирту