Способ и устройства обработки виртуализации и компьютерная система
Иллюстрации
Показать всеИзобретение относится к обработке виртуализации в компьютерной системе. Технический результат заключается в обеспечении совместимости средств виртуализации с устройствами, использующимися в компьютерной системе. Вычислительный узел включает в себя: аппаратный уровень, хост, и, по меньшей мере, одну виртуальную машину VM, выполняющуюся на хосте, с несколькими соответствующими устройствами виртуальной функции VF, полученными из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF и несколько устройств VF, находящихся во взаимно однозначном соответствии. Хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O; BE на хосте связана с неактивным экземпляром программного обеспечения VF. 4 н. и 14 з.п. ф-лы, 19 ил.
Реферат
Перекрестная ссылка на родственные заявки
[0001] Данная заявка является продолжением международной заявки № PCT/CN2012/075846, поданной 22 мая 2012 г., которая испрашивает приоритет по заявке на патент Китая №201110458345.8, поданной 31 декабря 2011 г., которые обе, таким образом, включены посредством ссылки в полном объеме.
Область техники, к которой относится изобретение
[0002] Настоящее изобретение относится к области компьютерных технологий и, в частности, к способу и устройствам обработки виртуализации и компьютерной системе.
Уровень техники
[0003] Технология виртуализации является технологией развязки для отделения аппаратного устройства низкого уровня от операционной системы и прикладных программ более высокого уровня, и, согласно фиг. 1, уровень монитора виртуальной машины (VMM, монитор виртуальной машины) предложен для непосредственного управления аппаратными ресурсами низкого уровня, создания виртуальной машины (VM, виртуальная машина), не зависящей от оборудования низкого уровня, для использования операционной системой и прикладными программами более высокого уровня.
[0004] Технология виртуализации, в качестве одной из важных поддерживающих технологий популярной в настоящее время платформы облачных вычислений (облачные вычисления) может значительно повышать эффективность использования ресурсов физического устройства. По сравнению с традиционным физическим сервером, виртуальная машина имеет лучшую изоляцию и инкапсуляцию, и информация виртуальной машины в целом может сохраняться в виртуальном образе диска (VDI, виртуальный образ диска), для удобства осуществления операций, например, фотографирования, резервного копирования, клонирования и доставки для виртуальной машины.
[0005] С развитием процессора x86, технология виртуализации центрального процессора (ЦП, центральный процессор) и памяти постоянно совершенствуется, при этом служебная нагрузка постоянно снижается. Согласно данным по последнему процессору, служебная нагрузка виртуализации ЦП и памяти для большинства приложений составляла менее 10%. В области виртуализации ввода/вывода (I/O, ввод/вывод), решение I/O виртуализации, имеющее высокую производительность и низкую задержку, все еще является ключевой технической задачей в области виртуализации. Традиционное решение виртуализации I/O включает в себя два типа, а именно, программное решение и аппаратное решение. Однако традиционные программное решение и аппаратное решение имеют выдающиеся преимущества и недостатки. Например, традиционное программное решение имеет преимущество в совместимости, но имеет большую потерю производительности; аппаратное решение может обеспечивать желаемую производительность, но сталкивается с такими проблемами, как совместимость признаков и совместимость гостевой операционной системы (гостевой OS).
Сущность изобретения
[0006] Варианты осуществления настоящего изобретения предусматривают способ и устройства обработки виртуализации, и компьютерную систему, для оптимизации производительность и совместимость системы виртуализации.
[0007] Для решения вышеупомянутых технических проблем варианты осуществления настоящего изобретения предусматривают следующие технические решения.
[0008] В одном аспекте, вариант осуществления настоящего изобретения предусматривает способ обработки виртуализации, который применяется к вычислительному узлу, и вычислительный узел включает в себя:
аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну виртуальную машину VM, выполняющуюся на хосте, где аппаратный уровень включает в себя устройство ввода/вывода I/O, несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF, несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O; BE на хосте связана с неактивным экземпляром программного обеспечения VF;
способ включает в себя этапы, на которых:
предварительно выделяют, посредством FE, кэш-память для прямого доступа к памяти DMA;
получают, посредством экземпляра программного обеспечения VF, связанного с BE, адрес, соответствующий кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, записывают полученный адрес, соответствующий кэш-памяти для DMA, в первый блок хранения устройства VF, соответствующего экземпляру программного обеспечения VF; выбирают, посредством устройства VF, адрес, соответствующий кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициируют запрос записи DMA с использованием выбранного адреса, соответствующего кэш-памяти для DMA, в качестве целевого адреса; объявляют, посредством устройства VF, экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую адресу.
[0009] В другом аспекте, вариант осуществления настоящего изобретения дополнительно предусматривает способ обработки виртуализации, включающий в себя этапы, на которых:
после активации виртуальной функции I/O устройства ввода/вывода I/O, генерируют несколько экземпляров программного обеспечения VF на хосте; где несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии;
создают, посредством хоста, виртуальное устройство I/O, однотипное устройству I/O,
где экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте, экземпляр внешней стороны FE виртуального устройства I/O создается в инициированной виртуальной машине VM; и
связывают BE с неактивным экземпляром программного обеспечения VF.
[0010] В другом аспекте, вариант осуществления настоящего изобретения дополнительно предусматривает вычислительный узел, включающий в себя: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну виртуальную машину VM, выполняющуюся на хосте, где аппаратный уровень включает в себя устройство ввода/вывода I/O, несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF, несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O; BE на хосте связана с неактивным экземпляром программного обеспечения VF;
где FE выполнен с возможностью предварительного выделения кэш-памяти для прямого доступа к памяти DMA;
экземпляр программного обеспечения VF, связанный с BE, выполнен с возможностью получения адреса, соответствующего кэш-памяти для DMA, через экспортирующий интерфейс прикладного программирования BE, записи полученного адреса, соответствующего кэш-памяти для DMA, в первый блок хранения в устройстве VF соответствующий экземпляру программного обеспечения VF;
устройство VF выполнено с возможностью выбора адреса, соответствующего кэш-памяти для DMA, из первого блока хранения при наличии данных, подлежащих приему, и инициирования запроса записи DMA с использованием выбранного адреса, соответствующего кэш-памяти для DMA, в качестве целевого адреса; и объявления экземпляра программного обеспечения VF, который соответствует устройству VF и находится на хосте, после выполнения запроса записи DMA, так что экземпляр программного обеспечения VF запускает FE для приема данных, записанных в кэш-память, соответствующую адресу.
[0011] В другом аспекте, вариант осуществления настоящего изобретения дополнительно предусматривает хост, включающий в себя:
первый модуль создания, выполненный с возможностью, после активации виртуальной функции I/O устройства ввода/вывода I/O, генерировать несколько экземпляров программного обеспечения VF на хосте; где несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии;
второй модуль создания, выполненный с возможностью создания виртуального устройства I/O, однотипного устройству I/O,
где, экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте, экземпляр внешней стороны FE виртуального устройства I/O создается в инициированной виртуальной машине VM; и
модуль связывания, выполненный с возможностью связывания BE, созданного вторым модулем создания, с неактивным экземпляром программного обеспечения VF, созданным первым модулем создания.
[0012] Можно видеть, что, вычислительный узел в вариантах осуществления настоящего изобретения может включать в себя: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну VM, выполняющуюся на хосте, аппаратный уровень включает в себя устройство ввода/вывода I/O, несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF, несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны BE виртуального устройства I/O, однотипного устройству I/O, VM имеет экземпляр внешней стороны FE виртуального устройства I/O; где BE на хосте связана с неактивным экземпляром программного обеспечения VF. Таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в одной VM, проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, и устройство VF может обеспечивать высокоэффективный интерфейс устройства, поэтому VM полезно получать примерно такую же производительность, как у физической машины, задержка невелика, и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть, FE) виртуального устройства I/O находится в VM, поэтому FE переносит данные через привод внутренней стороны (то есть, BE) на хосте, и VM не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства, таким образом, реализуя оптимизацию совместимости системы виртуализации.
Краткое описание чертежей
[0013] Для пояснения технических решений вариантов осуществления настоящего изобретения или уровня техники, прилагаемые чертежи, используемые в описании вариантов осуществления или уровня техники, кратко описаны ниже. Очевидно, прилагаемые чертежи иллюстрируют некоторые иллюстративные варианты осуществления настоящего изобретения, и специалисты в данной области техники может получить другие чертежи на основании этих чертежей без применения творческих способностей.
[0014] Фиг. 1 - упрощенная архитектурная схема традиционной технологии виртуализации;
[0015] фиг. 2-a - упрощенная архитектурная схема программной и аппаратной системы виртуализации, предусмотренной согласно варианту осуществления настоящего изобретения;
[0016] фиг. 2-b - упрощенная архитектурная схема другой программной и аппаратной системы виртуализации, предусмотренной согласно варианту осуществления настоящего изобретения;
[0017] фиг. 3 - упрощенная блок-схема операций способа обработки виртуализации, предусмотренного согласно варианту осуществления настоящего изобретения;
[0018] фиг. 4 - упрощенная блок-схема операций другого способа обработки виртуализации, предусмотренного согласно варианту осуществления настоящего изобретения;
[0019] фиг. 5 - упрощенная блок-схема операций другого способа обработки виртуализации, предусмотренного согласно варианту осуществления настоящего изобретения;
[0020] фиг. 6-a - упрощенная блок-схема операций другого способа обработки виртуализации, предусмотренного согласно варианту осуществления настоящего изобретения;
[0021] фиг. 6-b - упрощенная схема трансляции адреса GPA и HPA, предусмотренной согласно варианту осуществления настоящего изобретения;
[0022] фиг. 7-a - упрощенная блок-схема операций другого способа обработки виртуализации, предусмотренного согласно варианту осуществления настоящего изобретения;
[0023] фиг. 7-b - упрощенная схема другой трансляции адреса GPA и HPA, предусмотренной согласно варианту осуществления настоящего изобретения;
[0024] фиг. 8-a - упрощенная блок-схема операций другого способа обработки виртуализации, предусмотренного согласно варианту осуществления настоящего изобретения;
[0025] фиг. 8-b - упрощенная схема другой трансляции адреса GPA и HPA, предусмотренной согласно варианту осуществления настоящего изобретения;
[0026] фиг. 9-a - упрощенная блок-схема операций другого способа обработки виртуализации, предусмотренного согласно варианту осуществления настоящего изобретения;
[0027] фиг. 9-b - упрощенная схема другой трансляции адреса GPA и HPA, предусмотренной согласно варианту осуществления настоящего изобретения;
[0028] фиг. 10 - упрощенная схема модульной архитектуры хоста, предусмотренной согласно варианту осуществления настоящего изобретения;
[0029] фиг. 11-a - упрощенная схема вычислительного узла, предусмотренного согласно варианту осуществления настоящего изобретения;
[0030] фиг. 11-b - упрощенная схема другого вычислительного узла, предусмотренного согласно варианту осуществления настоящего изобретения;
[0031] фиг. 11-c - упрощенная схема другого вычислительного узла, предусмотренного согласно варианту осуществления настоящего изобретения; и
[0032] фиг. 12 - упрощенная схема компьютерной системы, предусмотренной согласно варианту осуществления настоящего изобретения.
Подробное описание вариантов осуществления
[0033] Варианты осуществления настоящего изобретения предусматривают способ и устройства обработки виртуализации, и компьютерную систему, для оптимизации производительности и совместимости системы виртуализации.
[0034] Чтобы решения настоящего изобретения стали понятнее специалистам в данной области техники, технические решения в вариантах осуществления настоящего изобретения отчетливо и полностью описаны ниже со ссылкой на прилагаемые чертежи в вариантах осуществления настоящего изобретения. Очевидно, что варианты осуществления, подлежащие описанию, составляют лишь часть, а не все из вариантов осуществления настоящего изобретения. Все остальные варианты осуществления, полученные специалистами в данной области техники на основании вариантов осуществления настоящего изобретения без применения творческих способностей, должны попадать в объем защиты настоящего изобретения.
[0035] Для облегчения понимания вариантов осуществления настоящего изобретения, сначала проиллюстрируем несколько элементов, которые будут введены в описании вариантов осуществления настоящего изобретения.
[0036] Виртуальная машина VM:
Один или более виртуальных компьютеров можно имитировать на физическом компьютере посредством программного обеспечения виртуальной машины, и эти виртуальные машины работают, как реальные компьютеры, виртуальная машина может иметь операционную систему и установленные прикладные программы, и виртуальная машина также может обращаться к сетевым ресурсам. Для прикладной программы, выполняющейся на виртуальной машине, виртуальная машина ничем не отличается от реального компьютера.
[0037] Аппаратный уровень:
Аппаратная платформа выполняется в среде виртуализации. Аппаратный уровень может включать в себя множественные типы оборудования, например аппаратный уровень вычислительного узла может включать в себя ЦП и память, и может включать в себя высокоскоростные/низкоскоростные устройства ввода/вывода (I/O, ввод/вывод), например, сетевую карту и хранилище, и другие устройства, имеющие конкретные функции обработки, например, блок управления памятью ввода/вывода (IOMMU, блок управления памятью ввода/вывода), где IOMMU может быть выполнен с возможностью трансляции физического адреса виртуальной машины и физического адреса хоста.
[0038] Виртуальная функция I/O:
Соответствующее устройство физической функции (PF, физическая функция) и несколько устройств виртуальной функции (VF, виртуальная функция) можно виртуализировать из устройства I/O, имеющего виртуальную функцию I/O, после активации виртуальной функции I/O, где устройство PF, виртуализированное из устройства I/O, в основном, отвечает за функцию управления, и устройство VF, в основном, отвечает за функцию обработки.
[0039] Хост (Хост):
Хост, в качестве уровня управления, выполнен с возможностью выполнения управления и выделения аппаратных ресурсов; представления виртуальной аппаратной платформы для виртуальной машины; и реализации планирования и изоляции виртуальной машины. Хостом может быть монитор виртуальной машины (VMM); и, кроме того, иногда, VMM может объединяться с одной прерогативной виртуальной машиной для формирования хоста. Виртуальная аппаратная платформа обеспечивает различные аппаратные ресурсы для виртуальных машин, выполняющихся на платформе, например, обеспечивает виртуальный ЦП, память, виртуальный диск, виртуальную сетевую карту и т.д. Виртуальный диск может соответствовать одному файлу или одному устройству логического блока хоста. Виртуальная машина выполняется на виртуальной аппаратной платформе, подготовленной хостом, и хост может иметь одну или более виртуальных машин выполняющихся на хосте.
[0040] На фиг. 2-a и фиг. 2-b, фиг. 2-a и фиг. 2-b показаны упрощенные архитектурные схемы программных и аппаратных систем двух решений виртуализации, предусмотренных в вариантах осуществления настоящего изобретения. Архитектура системы, в основном, включает в себя три уровня: аппаратный уровень, хост и виртуальную машину (VM). Аппаратный уровень, показанный на фиг. 2-a или фиг. 2-b, включает в себя устройство I/O, и аппаратный уровень, показанный на фиг. 2-a, дополнительно включает в себя IOMMU. Хост выполняется на аппаратном уровне, и, по меньшей мере, одна виртуальная машина VM выполняется на хосте, где несколько соответствующих устройств виртуальной функции VF виртуализируется из устройства I/O, хост имеет несколько экземпляров программного обеспечения VF, несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост дополнительно имеет экземпляр внутренней стороны (BE, внутренняя сторона) виртуального устройства I/O, однотипного устройству I/O, VM имеет экземпляр внешней стороны (FE, внешняя сторона) виртуального устройства I/O; BE на хосте связана с неактивным экземпляром программного обеспечения VF. В техническом решении варианта осуществления настоящего изобретения, BE в VM можно рассматривать как драйвер внешней стороны виртуального устройства I/O, FE на хосте можно рассматривать как драйвер внутренней стороны виртуального устройства I/O, и виртуальное устройство I/O состоит из BE и FE.
[0041] Способ обработки виртуализации согласно варианту осуществления настоящего изобретения можно применять к вычислительному узлу, где вычислительный узел содержит: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну VM, выполняющуюся на хосте, аппаратный уровень включает в себя устройство ввода/вывода I/O, способ обработки виртуализации может включать в себя: после активации виртуальной функции I/O устройства ввода/вывода I/O, генерацию нескольких экземпляров программного обеспечения виртуальной функции (VF, виртуальная функция) на хосте; несколько соответствующих устройств виртуальной функции (VF) виртуализируется из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; создание, посредством хоста, виртуального устройства I/O, однотипного устройству I/O, где экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте, в инициированной VM создается экземпляр внешней стороны FE виртуального устройства I/O; и связывание BE с неактивным экземпляром программного обеспечения VF.
[0042] Согласно фиг. 3, способ обработки виртуализации, предусмотренный согласно варианту осуществления настоящего изобретения, может включать в себя:
[0043] 301. После активации виртуальной функции I/O устройства ввода/вывода I/O, генерацию нескольких экземпляров программного обеспечения виртуальной функции VF (экземпляров VF) на хосте;
где несколько соответствующих устройств VF можно виртуализировать из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии. Например, хост может активировать виртуальную функцию I/O устройства I/O во время инициирования или в определенный момент после инициирования, для активации виртуальной функции I/O устройства I/O. Альтернативно, устройство I/O может автоматически активировать свою виртуальную функцию I/O после активации питания устройства, и в этом случае, хосту не требуется активировать виртуальную функцию I/O устройства I/O.
[0044] Следует отметить, что устройство I/O, упомянутое согласно варианту осуществления настоящего изобретения, может представлять собой, например, устройство высокоскоростного соединения периферийных компонентов (PCIe, Peripheral Component Interconnect Express) или устройство другого типа, например, сетевую карту.
[0045] 302. Создание, посредством хоста, виртуального устройства I/O, однотипного устройству I/O, где экземпляр внутренней стороны (BE, внутренняя сторона) виртуального устройства I/O (vDEV) создается на хосте, и экземпляр внешней стороны (FE, внешняя сторона) виртуального устройства I/O создается в инициированной VM.
[0046] 303. Связывание, посредством хоста, BE с неактивным экземпляром программного обеспечения VF.
[0047] Если хост создает несколько виртуальных устройств I/O, однотипных устройству I/O, экземпляр внутренней стороны BE каждого виртуального устройства I/O связывается с неактивным экземпляром программного обеспечения VF, и между BE и экземпляром программного обеспечения VF, которые находятся в отношении связывания, существует интерфейс взаимного доступа, например, BE может осуществлять доступ к устройству VF, соответствующему экземпляру программного обеспечения VF, через интерфейс доступа, обеспеченный экземпляром программного обеспечения VF, связанным с BF. Таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в одной VM, проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, поэтому VM полезно получать примерно такую же производительность, как у физической машины. На основе архитектуры приложения, построенной хостом, VM может передавать данные, принимать данные или осуществлять обработку данных в других формах.
[0048] Например, согласно фиг. 2-a и фиг. 2-b, несколько соответствующих устройств VF можно виртуализировать из устройства I/O (например, устройства PCIe) при активированной виртуальной функции I/O, и соответствующее устройство физической функции (PF, физическая функция) можно дополнительно виртуализировать из устройства I/O при активированной виртуальной функции I/O, экземпляры внутренней стороны BE нескольких виртуальных устройств I/O, однотипных с устройством I/O и созданных хостом, располагаются на хосте, и экземпляр внешней стороны FE каждого виртуального устройства I/O располагается в отдельной VM. Совместно используемую память можно дополнительно конфигурировать между хостом и VM, и экземпляр внутренней стороны BE и экземпляр внешней стороны FE виртуального устройства I/O могут, например, переносить данные через совместно используемую память.
[0049] Можно видеть, что, в этом варианте осуществления, после активации виртуальной функции I/O устройства ввода/вывода I/O, несколько экземпляров программного обеспечения VF генерируются на хосте; несколько соответствующих устройств VF виртуализируются из устройства I/O при активированной виртуальной функции I/O; несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии; хост создает виртуальное устройство I/O, однотипное устройству I/O, где экземпляр внутренней стороны BE виртуального устройства I/O создается на хосте, и в инициированной VM создается экземпляр внешней стороны FE виртуального устройства I/O; BE связана с неактивным экземпляром программного обеспечения VF. Таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в одной VM, проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, и устройство VF может обеспечивать высокоэффективный интерфейс устройства, поэтому VM полезно получать примерно такую же производительность, как у физической машины, задержка невелика и возникновение какой-либо дополнительной служебной нагрузки ЦП маловероятно. Кроме того, привод внешней стороны (то есть, FE) виртуального устройства находится в VM, поэтому данные переносятся через привод внутренней стороны (то есть, BE) на хосте, и VM не воспринимает реальное физическое устройство хоста, что удобно для перехода и реализации совместного использования устройства, таким образом, реализуя оптимизацию совместимости системы виртуализации.
[0050] Согласно фиг. 4, другой способ обработки виртуализации, предусмотренный согласно варианту осуществления настоящего изобретения применяется к вычислительному узлу, вычислительный узел включает в себя: аппаратный уровень, хост, выполняющийся на аппаратном уровне, и, по меньшей мере, одну VM, выполняющуюся на хосте, где аппаратный уровень включает в себя устройство ввода/вывода I/O, способ может включать в себя:
[0051] 401. Активацию, посредством хоста, виртуальной функции I/O устройства ввода/вывода I/O.
Например, хост может активировать виртуальную функцию I/O устройства I/O во время инициирования или в определенный момент после инициирования, для активации виртуальной функции I/O устройства I/O. Несколько соответствующих устройств VF виртуализируются из устройства I/O при активированной виртуальной функции I/O. Альтернативно, устройство I/O может автоматически активировать свою виртуальную функцию I/O после активации питания устройства, и в этом случае, хосту не требуется активировать виртуальную функцию I/O устройства I/O.
[0052] 402. Генерацию нескольких экземпляров программного обеспечения VF на хосте, где несколько соответствующих устройств VF можно виртуализировать из устройства I/O при активированной виртуальной функции I/O, и несколько экземпляров программного обеспечения VF и несколько устройств VF находятся во взаимно-однозначном соответствии.
[0053] 403. Создание, посредством хоста, виртуального устройства I/O, однотипного устройству I/O, где экземпляр внутренней стороны BE виртуального устройства I/O (vDEV) создается на хосте, и экземпляр внешней стороны FE виртуального устройства I/O создается в инициированной VM.
[0054] 404. Связывание, посредством хоста, BE с неактивным экземпляром программного обеспечения VF.
[0055] Если хост создает несколько виртуальных устройств I/O, однотипных устройству I/O, экземпляр внутренней стороны BE каждого виртуального устройства I/O связывается с неактивным экземпляром программного обеспечения VF, и между BE и экземпляром программного обеспечения VF, которые находятся в отношении связывания, существует интерфейс взаимного доступа, например, BE может осуществлять доступ к устройству VF, соответствующему экземпляру программного обеспечения VF, через интерфейс доступа, обеспеченный экземпляром программного обеспечения VF, связанным с BE. Таким образом, устанавливается архитектура приложения, в которой каждая VM может независимо использовать одно устройство VF, между одним устройством VF, виртуализированным из устройства I/O, и экземпляром внешней стороны FE в VM проходит канал, так что FE может осуществлять доступ к устройству VF через BE на хосте. Устройство VF, виртуализированное из устройства I/O, по отдельности выделяется VM для использования, поэтому VM полезно получать примерно такую же производительность, как у физической машины. На основе архитектуры приложения, построенной хостом, VM может передавать данные, принимать данные или осуществлять обработку данных в других формах.
[0056] Например, согласно фиг. 2-a и фиг. 2-b, несколько соответствующих устройств VF можно виртуализировать из устройства I/O (например, устройства PCIe) при активированной виртуальной функции I/O, и соответствующее устройство физической функции PF можно дополнительно виртуализировать из устройства I/O при активированной виртуальной функции I/O (хост может дополнительно генерировать экземпляр программного обеспечения PF, соответствующий устройству PF), экземпляры внутренней стороны BE нескольких виртуальных устройств I/O, однотипных с устройством I/O и созданных хостом, располагаются на хосте, и экземпляр внешней стороны FE каждого виртуального устройства I/O располагается в отдельной VM. Совместно используемую память можно дополнительно конфигурировать между хостом и VM, и экземпляр внутренней стороны BE и экземпляр внешней стороны FE виртуального устройства I/O может, например, переносить данные через совместно используемую память.
[0057] Для простоты понимания, необязательный режим взаимодействия архитектуры приложения, построенной на основании вышеупомянутого механизма, проиллюстрирован ниже на примере процедуры приема данных.
[0058] В сценарии приложения, после того, как хост связывает BE и неактивный экземпляр программного обеспечения VF, FE может предварительно выделять кэш-память для прямого доступа к памяти (DMA, прямой доступ к памяти); FE может записывать физический адрес гостя (GPA, физический адрес гостя), соответствующий предварительно выделенной кэш-памяти для DMA, в память, совместно используемую между хостом и VM; через экспортирующий интерфейс прикладного программирования BE, экземпляр программного обеспечения VF, связанный с BE, может получать GPA, соответствующий кэш-памяти для DMA; экземпляр программного обеспечения VF может записывать полученный GPA, соответствующий кэш-памяти для DMA, в очередь приема устройства VF, соответствующего экземпляру программного обеспечения VF; при наличии данных, подлежащих приему, устройство VF может выбирать GPA, соответствующий кэш-памяти для DMA, из очереди приема устройства VF, и может инициировать запрос записи DMA (запрос записи DMA используется для записи данных в кэш-память) с использованием выбранного GPA в качестве целевого адреса; блок управления памятью ввода/вывода IOMMU преобразует целевой адрес GPA запроса записи DMA в соответствующий физический адрес хоста HPA (где таблица страниц трансляции адреса, например, устанавливается в IOMMU, в таблице страниц трансляции адреса задано отображение между HPA и GPA; когда запрос записи DMA проходит, IOMMU может получать HPA, соответствующий целевому адресу GPA запроса записи DMA, посредством поиска в таблице страниц трансляции адреса, и преобразовывать целевой адрес GPA запроса записи DMA в полученный HPA); после выполнения запроса записи DMA, целевой адрес которого преобразуется в HPA, устройство VF может объявлять экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, так что экземпляр программного обеспечения VF запускает соответствующий FE для приема данных, записанных в кэш-память, соответствующую HPA.
[0059] В другом сценарии приложения, после того, как хост связывает BE и неактивный экземпляр программного обеспечения VF, FE может предварительно выделять кэш-память для DMA; FE может записывать GPA, соответствующий предварительно выделенной кэш-памяти для DMA, в память, совместно используемую между хостом и VM; хост (например, BE или другой модуль на хосте) может преобразовывать GPA, соответствующий кэш-памяти для DMA, в соответствующий HPA (например, на хосте устанавливается таблица страниц трансляции адреса, в таблице страниц трансляции адреса задано отображение между HPA и GPA; посредством поиска в таблице страниц трансляции адреса, хост (например, BE или другой модуль на хосте) может получать HPA, соответствующий GPA, который соответствует кэш-памяти для DMA, и преобразовывать GPA, соответствующий кэш-памяти для DMA в полученный HPA); экземпляр программного обеспечения VF, связанный с BE на хосте получает, через экспортирующий интерфейс прикладного программирования BE, HPA, соответствующий кэш-памяти для DMA; полученный HPA, соответствующий кэш-памяти для DMA, записывается в очередь приема устройства VF, соответствующего экземпляру программного обеспечения VF; при наличии данных, подлежащих приему, устройство VF выбирает HPA, соответствующий кэш-памяти для DMA, из очереди приема устройства VF, и инициирует запрос записи DMA (запрос записи DMA используется для записи данных в кэш-память) с использованием выбранного HPA в качестве целевого адреса; после выполнения запроса записи DMA, устройство VF может дополнительно объявлять экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, так что экземпляр программного обеспечения VF запускает соответствующий FE для приема данных, записанных в кэш-память, соответствующую HPA.
[0060] Для простоты понимания, необязательный режим взаимодействия архитектуры приложения, построенной на основании вышеупомянутого механизма, проиллюстрирован ниже на примере процедуры передачи данных.
[0061] В сценарии приложения, после того, как хост связывает BE и неактивный экземпляр программного обеспечения VF, FE может записывать GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в память, совместно используемую между хостом и VM; соответствующий BE может вызывать программный интерфейс передачи экземпляра программного обеспечения VF, связанного с BE, и записывать GPA, соответствующий кэш-памяти, где находятся данные, подлежащие передаче, в очередь передачи устройства VF, соответствующего экземпляру программного обеспечения VF; обнаружив наличие данных, подлежащих передаче, устройство VF инициирует запрос чтения DMA (запрос записи DMA используется для считывания данных из кэш-памяти) с использованием GPA, записанного в очереди передачи устройства VF, в качестве целевого адреса; и IOMMU преобразует целевой адрес GPA запроса чтения DMA в соответствующий HPA (где таблица страниц трансляции адреса, например, устанавливается в IOMMU, в таблице страниц трансляции адреса задано отображение между HPA и GPA; когда запрос чтения DMA проходит, IOMMU может получать HPA, соответствующий целевому адресу GPA запроса чтения DMA, посредством поиска в таблице страниц трансляции адреса, и преобразовывать целевой адрес GPA запроса чтения DMA в полученный HPA). Дополнительно, после выполнения запроса чтения DMA, устройство VF может объявлять экземпляр программного обеспечения VF, который соответствует устройству VF и находится на хосте, так что экземпляр программного обеспечения VF запускает соответствующий FE для освобождения соответствующей кэш-памяти.
[0062] В другом сценарии приложения, после того, как хост связывает BE и неактивный экземпляр программного обеспечения VF, FE может запи