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

Авторы патента:


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

 


Владельцы патента RU 2571366:

МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи (US)

Изобретение относится к области технологии виртуализации. Техническим результатом является повышение эффективности создания виртуальных машин. Способ создания экземпляра виртуальной машины содержит этапы, на которых принимают в системе управления информацию, указывающую физическую топологию компьютерных систем в центре обработки данных; принимают запрос создания экземпляра виртуальной машины, причем данный запрос указывает характеристику виртуальной машины; определяют на основе упомянутой информации, указывающей физическую топологию компьютерных систем, размер для виртуального узла архитектуры неоднородной памяти (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 может быть выполнена с возможностью передавать высокоприоритетные виртуальные машины на компьютерные системы с более низкими рабочими нагрузками, и может пытаться консолидировать виртуальные машины с более низкими приоритетами на меньшем количестве компьютерных систем. В этом примере виртуальную машину можно устранить из компьютерной системы, чтобы освободить место виртуальной машине с более высоким приоритетом.

На фиг.9 показан альтернативный вариант осуществления операционной процедуры, представленной на фиг.8, включающий в себя операции 910-914. Операция 910 иллюстрирует прием сигнала, указывающего, что компьютерная система нагружена; и посылку сигнала на компьютерную систему, причем сигнал предписывает компьютерной системе отправить виртуальную машину во вторую компьютерную систему. Например, согласно фиг.5, система управления 502 может принимать сигнал из компьютерной системы, например, например, компьютерной системы 504. Сигнал может указывать, что ресурсы компьютерной системы близки к исчерпанию. В этом примере объем ОЗУ, назначенный виртуальной машине, может быть переменным. Таким образом, его можно регулировать в ходе работы. Например, ресурсы компьютерной системы 504 могут быть перерасходованы вследствие реализации большого количества виртуальных машин или виртуальных машин с большими рабочими нагрузками. В этой ситуации гипервизор компьютерной системы 504 может передавать на систему управления 502 сигнал, который указывает, что компьютерной системе не хватает памяти, например сигнал может указывать, что на виртуальных машинах происходит значительная страничная подкачка, или что выделение памяти без разбиения на страницы может закончиться неудачей. В другом примере для выполнения гостевой операционной системы 220 и любой рабочей нагрузки в виртуальной машине 240 требуется недопустимо много времени. В этом примере система управления 502 может быть выполнена с возможностью сокращать рабочую нагрузку на нагруженной компьютерной системе 504 путем нахождения другого компьютера, на котором может разместиться виртуальная машина 240, и передавать на компьютерную систему 504 сигнал, предписывающий ей перенести виртуальную машину 240 в новую компьютерную систему, например, компьютерную систему 506. Гипервизор 202 может принимать сигнал и может переносить виртуальную машину 240 в новую компьютерную систему, например, в компьютерную систему 506, 508 или 510.

На фиг.9 операция 912 изображает посылку сигнала на компьютерную систему, причем сигнал предписывает компьютерной системе перенести виртуальную машину с первого узла NUMA на второй узел NUMA. Например, согласно фиг.5, система управления 502 может передавать на компьютерную систему 504 сигнал, предписывающий ей перенести виртуальную машину с одного узла NUMA на другой. В этом примере архитектура компьютерной системы 504 может иметь сходство с архитектурой компьютера 700, показанной на фиг.7. Гипервизор 202, показанный на фиг.7, может принимать сигнал, предписывающий ему перенести виртуальную машину 240 с одного узла NUMA на другой узел NUMA, например, с узла NUMA 704 на 702. В этом примере нагрузка на память в гостевой ОС 220 может быть высокой, или потоки гипервизора для виртуальных процессоров 230A-D могут недостаточно быстро ставиться в очередь выполнения на логических процессорах 212E и 212G. В этом примере система управления 502 может сканировать центр 500 обработки данных и определить, что виртуальную машину 240 следует перенести, например, на узел NUMA 702, и гипервизор 202 может переназначить виртуальные узлы NUMA 606 и 608 узлу NUMA 702.

Согласно варианту осуществления операция 806 может включать в себя операцию 914, которая описывает определение наивысшего отношения NUMA в центре обработки данных. Например, в этом варианте осуществления, процессор системы управления 502 может выполнять программу и определять наивысшее отношение NUMA, существующее в центре 500 обработки данных, и использовать информацию при определении количества виртуальных узлов NUMA для виртуальной машины 240. Например, отношение NUMA является отношением издержек, выражающихся в циклах процессора, между доступом к удаленной и локальной памяти. Отношение NUMA 2 к 1 означает, что для доступа к конкретному адресу удаленной памяти требуется вдвое больше циклов процессора, чем для доступа к адресу локальной памяти. Согласно варианту осуществления, система управления 502 может использовать наивысшее выявленное отношение NUMA в центре 500 обработки данных для задания отношения NUMA, сообщаемого виртуальными узлами NUMA 606-608. Эту информацию можно сохранять в конфигурационном файле и направлять на компьютерную систему, которая собирается создавать экземпляр виртуальной машины. Гипервизор 202 может создавать структуру данных в программно-аппаратной таблице виртуальной машины, которая указывает отношение NUMA для виртуальных узлов NUMA 606-608, и при запуске гостевой операционной системы 220 или монолитного приложения отношение NUMA можно использовать для принятия решения по планированию потоков.

На фиг.10 показана операционная процедура, включающая в себя операции 1000-1006. Операция 1000 начинает операционную процедуру, и операция 1002 иллюстрирует прием запроса на создание экземпляра виртуальной машины. Например, согласно фиг.6 и 7, гипервизор 202 может принимать запрос на создание виртуальной машины, например, виртуальной машины 240. Например, запрос может поступать от системы управления 502, родительского раздела 204, показанного на фиг.2 или 3, и т.д. Запрос может касаться новой виртуальной машины, или это может быть запрос на создание экземпляра ранее сохраненной виртуальной машины. Согласно варианту осуществления настоящего изобретения, где виртуальная машина является новой виртуальной машиной, характеристики виртуальной машины 240 могут задаваться, например, администратором. Администратор может задавать, какой объем памяти должна первоначально иметь виртуальная машина, какой приоритет должна иметь виртуальная машина относительно других виртуальных машин, сколько виртуальных процессоров должна иметь виртуальная машина, какого типа устройства I/O должна иметь виртуальная машина, и т.д.

Операция 1004 показывает генерацию виртуальной машины, причем виртуальная машина имеет топологию, которая включает в себя совокупность виртуальных узлов NUMA, причем каждый виртуальный узел NUMA из совокупности включает в себя, по меньшей мере, один виртуальный процессор и диапазон гостевых физических адресов, причем топология виртуальной машины генерируется независимо от физической топологии компьютерной системы. Например, гипервизор 202 может построить виртуальную машину 240, имеющую совокупность виртуальных узлов NUMA 606-608, в ответ на запрос. Согласно фиг.6, каждый из виртуальных узлов NUMA 606-608 может иметь один или несколько виртуальных процессоров 230A-D и гостевые физические адреса 614 и 616. В этом варианте осуществления виртуальные узлы NUMA 606 и 608 можно создавать независимо от топологии базового оборудования. Таким образом, топология виртуальной машины не связана с базовым оборудованием, например, изображенным на фиг.6 и фиг.7. Таким образом, в этом варианте осуществления, топология каждой виртуальной машины не связана с базовой физической топологией компьютерной системы, которая ее реализует.

На фиг.10 операция 1006 иллюстрирует создание экземпляра виртуальной машины, причем виртуальная машина включает в себя виртуальные узлы NUMA. Согласно варианту осуществления, гипервизор 202 может выполняться логическим процессором, и можно создать экземпляр виртуальной машины, имеющей совокупность виртуальных узлов NUMA. Например, согласно фиг.6 и/или фиг.7, виртуальная машина 240, имеющая виртуальные узлы NUMA 606-608, может быть реализована компьютерной системой 600 или 700. Гостевые физические адреса виртуальной машины 240 могут поддерживаться системными физическими адресами из ОЗУ, и виртуальные процессоры могут поддерживаться одним или несколькими логическими процессорами. Например, блоки гостевых физических адресов 614 могут поддерживаться блоками системных физических адресов 622, и блоки гостевых физических адресов 616 могут поддерживаться блоками системных физических адресов 624. В этом случае, можно планировать потоки гипервизора на логических процессорах, поддерживающих виртуальные процессоры, и выполнять инструкции, указывающие виртуальные процессоры. После создания экземпляра виртуальной машины, гостевая операционная система 220 может ставить в расписание процесс для выполнения на виртуальном процессоре 230A виртуального узла NUMA 606. В этом примере менеджер памяти гостевой операционной системы 220 может выбирать диапазон гостевых физических адресов и выделять диапазон адресов процессу. В этом примере гостевая операционная система 220 может быть выполнена с возможностью выбирать гостевые физические адреса из виртуального узла NUMA 606. В этом случае способность переносить/восстанавливать виртуальную машину повышается вследствие того, что виртуальная машина разбивается на более мелкие части и распределяется по компьютерной системе.

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

На фиг.11 показан альтернативный вариант осуществления операционной процедуры 1000, представленной на фиг.10, включающий в себя операции 1108-1124. Согласно фигуре операция 1108 иллюстрирует сохранение виртуальной машины. Например, согласно варианту осуществления, виртуальную машину 240 можно сохранять на компьютерно-считываемом носителе информации, например, жестком диске. Согласно варианту осуществления, виртуальную машину 240 можно сохранять, используя методы, описанные в патентной заявке США № 11/487,031 под названием “Concurrent Virtual Machine Snapshots and Restore”, содержание которой в полном объеме включено сюда в порядке ссылки.

На фиг.11 операция 1110 показывает перенос виртуальной машины в удаленную компьютерную систему. Например, согласно фиг.5, согласно варианту осуществления, состояние виртуальной машины 240 можно сохранять в одном или нескольких конфигурационных файлах и передавать в другую компьютерную систему, например, передавать из компьютерной системы 504 в 506. Гипервизор компьютерной системы 506 может читать файл или файлы и создавать экземпляр виртуальной машины 240. В конкретном примере, гипервизор компьютерной системы 504 может принять решение отправить виртуальную машину 240 в компьютерную систему 506.

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

Например, согласно фиг.6, виртуальная машина 240 может включать в себя два или более виртуальных узла NUMA 606 и 608. Гипервизор 202 может поддерживать виртуальные процессоры 230A-D логическими процессорами 212A-D. При загрузке гостевой операционной системы 220, она может выявлять виртуальные узлы NUMA 606 и 608 и может иметь возможность оптимизировать планирование и выполнение процессов. Некоторое время спустя виртуальная машина 240 может переместиться на компьютерную систему, имеющую физическую топологию, аналогичную описанной на фиг.7. Гипервизор 202, показанный на фиг.7, может поддерживать виртуальные процессоры 230A и B логическими процессорами 212A и B и поддерживать виртуальные процессоры 230C и D логическими процессорами 212E и F. Гостевая операционная система 220 может продолжать работать так же, как она работала в компьютерной системе, показанной на фиг.6, несмотря на то, что топология базового компьютера сменилась с SMP на NUMA.

На фиг.11 операция 1112 показывает перенос виртуальной машины на один или несколько других узлов NUMA. Например, согласно фиг.7, гипервизор 202 может ставить в расписание виртуальные узлы NUMA 606-608 для выполнения на узле NUMA 702 и несколько позже ставить в расписание виртуальные узлы NUMA 606-608 для выполнения, например, на узле NUMA 704. В этом примере гипервизор 202 может переносить виртуальную машину 240, когда узел NUMA 702 нагружен. Например, гостевая операционная система 220 и 222 может генерировать сигналы, которые указывают, что виртуальной машине 240 не хватает памяти. В этом примере гипервизор 202 обладать возможностью снижать рабочую нагрузку на узле NUMA 702 путем переноса виртуальной машины 240 на другой узел NUMA.

На фиг.11 операция 1114 показывает назначение виртуальной машины первому узлу NUMA; и перенос виртуальной машины на второй узел NUMA из совокупности узлов NUMA. Например, согласно фиг.7, согласно варианту осуществления, гипервизор 202 может назначить виртуальную машину 240 первому узлу NUMA 606. Таким образом, инструкции гипервизора могут выполняться логическим процессором 212A-212I, и виртуальная машина 240 может назначаться, например, узлу NUMA 702. В этом примере виртуальные процессоры 230A-230D могут быть заданы для выполнения на логических процессорах 212A-212D. Некоторое время спустя, например, при инициализации или перехода из автономного режима другой виртуальной машины, гипервизор 202 может выполняться логическим процессором 212A-212I, и логический процессор может переносить виртуальную машину 240 на другой узел NUMA в компьютерной системе 700. В частности, согласно предыдущему примеру, гипервизор 202 может выполняться, и виртуальная машина 240 может перемещаться с узла NUMA 702 на узел NUMA 704. Например, виртуальный процессор 230A и B может назначаться логическому процессору 212E, виртуальный процессор 230C и D может назначаться логическому процессору 212F, и гостевые физические адреса 614 и 616 могут поддерживаться системными физическими адресами 622-624.

На фиг.11 операция 1116 показывает генерацию отношений NUMA для совокупности виртуальных узлов NUMA; и сообщение отношений NUMA для совокупности виртуальных узлов NUMA гостевой операционной системе. Например, согласно варианту осуществления, гипервизор 202 может генерировать отношения NUMA для виртуальных узлов NUMA 606-608, и эта информация может сообщаться гостевой операционной системе 220, показанной на фиг.6 или фиг.7. Согласно варианту осуществления, гипервизор 202 может создавать структуру данных в программно-аппаратной таблице виртуальной машины, которая указывает отношение NUMA для виртуальных узлов NUMA, и при загрузке гостевой операционной системы 220, гость может считывать таблицу и использовать информацию для принятия решений по планированию потоков. Например, гостевая операционная система или приложение, осведомленное о NUMA, может использовать отношения NUMA для определения, использовать ли ресурсы из удаленного узла NUMA. Например операционная система может иметь ожидающий поток, готовый к выполнению. Операционная система в этом примере также может быть выполнена с возможностью ожидать определенного момента времени для освобождения идеального процессора, в противном случае, она будет ставить в расписание поток на удаленном процессоре, который имеет отношение NUMA меньше заранее определенного значения. В этом случае интервал времени, который планировщик готов ждать, зависит от отношения NUMA.

Операция 1118 демонстрирует прием запроса от гостевой операционной системы на доступ к первому гостевому физическому адресу с первого виртуального узла NUMA и ко второму гостевому физическому адресу со второго виртуального узла NUMA; увеличение времени доступа, необходимого для доступа ко второму гостевому физическому адресу; и сообщение увеличенного времени доступа, необходимого для доступа к первому и второму гостевым физическим адресам, гостевой операционной системе. По аналогии с операцией 1116, отношения NUMA можно сообщать гостевой операционной системе 220, однако, в этом иллюстративном варианте осуществления, гостевая операционная система 220 может включать в себя инструкции для определения, точны ли отношения NUMA. Таким образом, гостевая операционная система 220 может проверять, верны ли сообщенные отношения NUMA, проверяя время доступа к различным участкам памяти. В этом примере гипервизор 202 обладать возможностью мониторинга процесса запуска виртуальной машины 240, и гипервизор 202 может замедлять доступ к памяти, которая является удаленной для конкретного виртуального узла NUMA. Таким образом, гипервизор 202 обладать возможностью генерировать более длительные времена доступа в случае, когда виртуальный процессор 230A обращается к гостевым физическим адресам 616, чем когда виртуальный процессор 230A обращается к гостевым физическим адресам 614. В этом примере задержка может быть фиктивной, поскольку гостевые физические адреса 614 и 616 могут поддерживаться системными физическими адресами из единичного узла NUMA, например, системными физическими адресами 622 и 624.

Согласно варианту осуществления, гипервизор 202 может увеличивать время доступа, удаляя удаленные гостевые физические адреса 616 из страничных таблиц виртуального процессора для виртуального процессора 230A. Когда виртуальный процессор 230A попытается обратиться к удаленной памяти, ему это не удастся, и тогда будут выполняться инструкции гипервизора. Затем гипервизор 202 может исправить страничные таблицы и задержать обратный сигнал с адреса памяти на желаемый промежуток времени. Когда виртуальный процессор 230A принимает информацию обратного сигнала, которая указывает, сколько времени необходимо для доступа к удаленной памяти, вносится задержка.

На фиг.11 операция 1120 изображает выделение адресов системной памяти виртуальной машине, причем адреса системной памяти получены от единичного узла NUMA; и назначение процессора для выполнения виртуального процессора, причем процессор получен от узла NUMA. Например, согласно варианту осуществления, генерация виртуальных узлов NUMA 606-608 может включать в себя выделение системных физических адресов и назначение процессора для того же узла NUMA 702 для поддержки виртуальной машины 240. Например, согласно фиг.7, гипервизор 202 может получать один или несколько блоков системных физических адресов 622-624 узла NUMA 702 и использовать их для поддержки гостевых физических адресов 622-624. Гипервизор 202 может дополнительно согласовать виртуальные процессоры 230A, например, с одним или несколькими логическими процессорами 212A-212D узла NUMA 702.

На фиг.11 операция 1122 показывает отображение первого виртуального узла NUMA из совокупности в первый узел NUMA компьютерной системы; и отображение второго виртуального узла NUMA из совокупности в первый узел NUMA компьютерной системы. Например, согласно фиг.7, логический процессор, например, логический процессор 212A, может выполнять инструкции гипервизора и может согласовать виртуальные узлы NUMA, например, виртуальный узел NUMA 606 и 608 с узлом NUMA, например, узлом NUMA 702. В частности, логический процессор выполняет инструкции и может поддерживать гостевые физические адреса 614-616 системными физическими адресами 622, гостевые физические адреса 618-620 системными физическими адресами 624 и поддерживать виртуальные процессоры 230A-D и 232A-D логическими процессорами 212A-D.

В операции 1124 показано отображение первого виртуального узла NUMA из совокупности в первый узел NUMA компьютерной системы; и отображение второго виртуального узла NUMA из совокупности на второй узел NUMA компьютерной системы. Например, согласно фиг.7, логический процессор, например, логический процессор 212A, может выполнять инструкции гипервизора и может назначать виртуальный узел NUMA 606 узлу NUMA 702 и назначать виртуальный узел NUMA 608 узлу NUMA 704. В этом примере при выполнении гипервизора 202, планировщик гипервизора может ставить в расписание потоки из виртуальных процессоров 230A-B на логических процессорах 212A-D и ставить в расписание потоки из виртуального процессора 230C или D на логических процессорах 212E-G.

На фиг.12 показан альтернативный вариант осуществления операционной процедуры, показанной на фиг.9. Согласно фигуре, процедура может включать в себя операцию 1226, которая показывает, что, согласно варианту осуществления, отношения NUMA для виртуальных узлов NUMA больше, чем среднее отношение NUMA, выявленное в центре обработки данных, причем центр обработки данных включает в себя совокупность компьютерных систем. Например, согласно фиг.5, система управления 502 может получать физическую топологию компьютерных систем 504-510 в центре 500 обработки данных. Согласно варианту осуществления, программа может опрашивать каждую компьютерную систему 504-510, и компьютеры могут в ответ передавать информацию. Когда система управления 502 имеет информацию, которая описывает топологию каждой компьютерной системы, программа может определять, какая компьютерная система имеет узел NUMA с наивысшим, например, наихудшим, отношением NUMA, и/или на основе среднего отношения NUMA. Система управления 502 может использовать эту информацию для генерации отношения NUMA, которое виртуальные узлы NUMA будут сообщать гостевым операционным системам во время загрузки. В этом примере система управления 502 может задавать виртуальное отношение NUMA как среднее или выше наивысшего отношения NUMA, выявленного в центре 500 обработки данных, таким образом, настраивая виртуальные узлы NUMA отражать состояние, которое выше полвины узлов NUMA или хуже, чем любая физическая топология, на которой любая виртуальная машина будет фактически выполняться.

На фиг.13 показана операционная процедура для практического осуществления аспектов настоящего изобретения, включающая в себя операции 1300, 1302 и 1304. Операция 1300 начинает операционную процедуру, и операция 1302 описывает генерацию совокупности виртуальных узлов NUMA для виртуальной машины, причем каждый виртуальный узел NUMA из совокупности включает в себя, по меньшей мере, один виртуальный процессор и, по меньшей мере, один блок памяти гостевых физических адресов, причем совокупность виртуальных узлов NUMA генерируется независимо от физической топологии какой-либо компьютерной системы. Согласно варианту осуществления, логический процессор, например, 212E, показанный на фиг.6 или фиг.7, может выполнять инструкции гипервизора, и процессор может генерировать виртуальные узлы NUMA 606-608 для виртуальной машины 240. По аналогии с вышеописанным, виртуальная машина 240 может иметь гораздо больше виртуальных узлов NUMA в зависимости, например, от характеристик виртуальной машины, например, виртуальная машина может иметь два или более виртуальных узла NUMA. Гипервизор 202 может выделять гостевые физические адреса каждому виртуальному узлу NUMA 606 и 608. Аналогично описанному выше, топология виртуальной машины 240 не зависит от базовой топологии компьютерной системы. Например, компьютерная система, на которой, в конце концов, формируется экземпляр виртуальной машины, может иметь топологию, аналогичную топологии компьютерной системы 600, показанной на фиг.6, или компьютерной системы, 700 показанной на фиг.7.

На фиг.13 операция 1304 показывает создание экземпляра виртуальной машины в компьютерной системе, причем виртуальная машина включает в себя совокупность виртуальных узлов NUMA. Согласно фиг.6 или фиг.7, после того, как гипервизор 202 сгенерирует конфигурацию виртуального узла NUMA для виртуальной машины 240, компьютерная система может реализовать его. Таким образом, гипервизор 202 ставит в расписание инструкции для запуска виртуальной машины 240. Согласно примеру, гипервизор 202 может выбирать один или несколько логических процессоров для выполнения инструкций из виртуальной машины 240, и гипервизор 202 может ставить в расписание инструкции для создания экземпляра виртуальной машины 240 на логическом процессоре. Виртуальная машина инструкции может выполняться процессором, и можно создавать экземпляр виртуальной машины 240. Виртуальная машина 240 в этом примере может включать в себя загрузочные таблицы, которые описывают два или более виртуальных узла NUMA. Гостевая операционная система или монолитное приложение могут запускаться и выявлять виртуальные узлы NUMA из загрузочных таблиц и выполнять инструкции для самонастройки, позволяющей пользоваться топологией виртуальной машины 240.

На фиг.14 показан альтернативный вариант осуществления операционной процедуры 1300, показанной на фиг.13, включающей в себя дополнительные операции 1406-1412. Операция 1406 иллюстрирует назначение первого виртуального узла NUMA и второго виртуального узла NUMA для выполнения на узле NUMA компьютерной системы. Например, согласно фиг.7, согласно варианту осуществления, компьютерная система может иметь архитектуру, которая включает в себя узлы NUMA. В этом примере гипервизор 202 может назначать два виртуальных узла NUMA из совокупности единичному узлу NUMA. Например, согласно фиг.7, инструкции гипервизора могут выполняться логическим процессором, и виртуальный узел NUMA 606 и 608 может назначаться, например, для выполнения на узле NUMA 702.

На фиг.14 операция 1408 описывает назначение первого виртуального узла NUMA из совокупности для выполнения на первом узле NUMA компьютерной системы; и назначение второго виртуального уза NUMA из совокупности для выполнения на втором узле NUMA компьютерной системы. Например, согласно фиг.7, логический процессор, например, логический процессор 212B, может выполнять инструкции гипервизора и может назначать виртуальный узел NUMA 606 узлу NUMA 704 и назначать виртуальный узел NUMA 608 узлу NUMA 706. В этом примере при выполнении гипервизора 202, планировщик гипервизора может ставить в расписание потоки из виртуальных процессоров 230A-B на логических процессорах 212F и 212G и ставить в расписание потоки из виртуального процессора 230C или D на логических процессорах 212H и 212I.

На фиг.14 операция 1410 описывает генерацию отношений NUMA для совокупности виртуальных узлов NUMA; и сообщение отношений NUMA гостевой операционной системе. Например, согласно варианту осуществления гипервизор 202 может генерировать отношения NUMA для виртуальных узлов NUMA, и эта информация может сообщаться гостевой операционной системе 220, показанной на фиг.6 или фиг.7.

На фиг.14 операция 1412 описывает определение, что узел NUMA, связанный с виртуальной машиной, перегружен; и перенос виртуальной машины на один или несколько других узлов NUMA. Например, согласно фиг.7, гипервизор 202 может ставить в расписание виртуальные узлы NUMA 606-612 для выполнения на узле NUMA 702. Таким образом, узел NUMA 702 может обладать возможностью размещать на себе виртуальные машины 240 и 242. В этом примере гипервизор 202 может принимать сигнал, указывающий, что узел NUMA 702 нагружен. Например, гостевая операционная система 220 и 222 может генерировать сигналы, которые указывают, что виртуальным машинам 240-242 не хватает памяти. В этом примере гипервизор 202 обладать возможностью снижать рабочую нагрузку на узле NUMA 702 путем переноса виртуальной машины на другой узел NUMA. В этом примере гипервизор 202 может переназначать виртуальные узлы NUMA 606 и 608 виртуальной машины 240 для выполнения на узле NUMA 704.

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

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

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

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

3. Способ по п. 1, дополнительно содержащий этап, на котором посылают сигнал в выбранную компьютерную систему, причем данный сигнал предписывает выбранной компьютерной системе перенести виртуальную машину с первого узла NUMA на второй узел NUMA.

4. Способ по п. 1, в котором на этапе определения количества виртуальных узлов NUMA для виртуальной машины дополнительно определяют наивысшее выявленное отношение NUMA в центре обработки данных, при этом отношение NUMA представляет собой отношение циклов процессора для доступа к удаленной памяти к циклам процессора для доступа к локальной памяти.

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

6. Компьютерная система по п. 5, дополнительно содержащая электронную схему для сохранения виртуальной машины.

7. Компьютерная система по п. 5, дополнительно содержащая электронную схему для отправки виртуальной машины в удаленную компьютерную систему.

8. Компьютерная система по п. 5, дополнительно содержащая электронную схему для переноса виртуальной машины на один или несколько других узлов NUMA.

9. Компьютерная система по п. 5, дополнительно содержащая:
электронную схему для назначения виртуальной машины первому узлу NUMA; и
электронную схему для переноса виртуальной машины на второй узел NUMA из совокупности узлов NUMA.

10. Компьютерная система по п. 5, дополнительно содержащая:
электронную схему для генерации отношений NUMA для упомянутой совокупности виртуальных узлов NUMA; и
электронную схему для сообщения гостевой операционной системе отношений NUMA для упомянутой совокупности виртуальных узлов NUMA.

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

12. Компьютерная система по п. 5, дополнительно содержащая:
электронную схему для выделения адресов системной памяти виртуальной машине, причем адреса системной памяти получены от одиночного узла NUMA; и
электронную схему для назначения процессора для исполнения виртуального процессора из упомянутого по меньшей мере одного виртуального процессора, причем процессор получен от этого одиночного узла NUMA.

13. Компьютерная система по п. 5, в которой электронная схема для создания экземпляра виртуальной машины дополнительно содержит:
электронную схему для соотнесения первого виртуального узла NUMA из упомянутой совокупности виртуальных узлов NUMA с первым узлом NUMA компьютерной системы; и
электронную схему для соотнесения второго виртуального узла NUMA из упомянутой совокупности виртуальных узлов NUMA с первым узлом NUMA компьютерной системы.

14. Компьютерная система по п. 5, в которой электронная схема для создания экземпляра виртуальной машины дополнительно содержит:
электронную схему для соотнесения первого виртуального узла NUMA из упомянутой совокупности виртуальных узлов NUMA с первым узлом NUMA компьютерной системы; и
электронную схему для соотнесения второго виртуального узла NUMA из упомянутой совокупности виртуальных узлов NUMA со вторым узлом NUMA компьютерной системы.

15. Компьютерная система по п. 10, в которой отношения NUMA для виртуальных узлов NUMA больше, чем среднее отношение NUMA, выявленное в центре обработки данных, причем центр обработки данных включает в себя совокупность компьютерных систем.

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

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

18. Считываемый компьютером носитель информации по п. 16, дополнительно содержащий:
инструкции для назначения первого виртуального узла NUMA из упомянутой совокупности виртуальных узлов NUMA для исполнения на первом узле NUMA первой компьютерной системы; и
инструкции для назначения второго виртуального уза NUMA из упомянутой совокупности виртуальных узлов NUMA для исполнения на втором узле NUMA первой компьютерной системы.

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

20. Считываемый компьютером носитель информации по п. 16, дополнительно содержащий:
инструкции для определения того, что узел NUMA, связанный с виртуальной машиной, перегружен; и
инструкции для переноса виртуальной машины на один или несколько других узлов NUMA.



 

Похожие патенты:

Изобретение относится к области технологии виртуализации. Техническим результатом является повышение эффективности управления памятью для виртуальных машин.

Изобретение относится к вычислительной технике. Технический результат заключается в повышении производительности системы хранения данных.

Изобретение относится к вычислительной технике. .

Изобретение относится к вычислительной технике. .

Изобретение относится к способу передачи данных в сообщениях, циклически передаваемых по линии связи системы связи в задаваемых окнах. .

Изобретение относится к устройству обработки информации и способу управления областью памяти. .

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

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

Изобретение относится к вычислительной технике. Технический результат - повышение быстродействия системы. Система содержит: модуль идентификации базового адреса данных эксплуатации воздушных судов авиакомпании; модуль идентификации относительного адреса данных эксплуатации воздушных судов одного типа; модуль селекции адреса параметров класса особых ситуаций (ОС); модуль вызова подпрограммы вычисления обратного значения суммарного налета; модуль регистрации параметров класса ОС; модуль селекции класса ОС без инцидентов; модуль селекции базового адреса параметров подклассов класса ОС; модуль распознавания ветви процедуры вычисления вероятностей возникновения ОС; модуль принятия решения об уровне безопасности полетов по суммарным вероятностям классов ОС; модуль принятия решения об уровне безопасности полетов по сигнальным вероятностям классов ОС; модуль идентификации сигнальных вероятностей подклассов класса ОС; модуль принятия решения об уровне безопасности полетов по сигнальным вероятностям подклассов класса ОС; модуль контроля завершения процедуры анализа массива подклассов класса ОС; и модуль контроля завершения процедуры анализа массива классов ОС. 15 ил., 4 табл.

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