СИСТЕМА И СПОСОБ ПРОЗРАЧНОЙ ТРАССИРОВКИ И ПРОФИЛИРОВАНИЯ ВИРТУАЛИЗИРОВАННЫХ ВСТРОЕННЫХ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ
SYSTEM AND METHOD FOR TRANSPARENT ROUTING AND PROFILING OF VIRTUALISED INBUILT COMPUTER SYSTEMS

Изобретение относится к области вычислительной техники, а именно к системам и способам профилирования и трассировки виртуализированных встроенных вычислительных систем, и может быть применено в виртуализированных встроенных вычислительных системах различного типа с различными архитектурами и операционными системами, поддерживающими технологию виртуализации.
Виртуализация обычно предполагает использование монитора виртуальных машин (ВММ) для обеспечения одновременной работы изолированных друг от друга виртуальных машин (ВМ) путем виртуализации и распределения аппаратных ресурсов вычислительной системы. В виртуализированных встроенных вычислительных системах ВММ, как правило, является программным слоем между аппаратурой вычислительной системы и операционной системой.
Поскольку технология виртуализации появилась относительно недавно, преобладающий подход к профилированию и трассировке виртуализированных систем заключается в использовании обычных присущих операционным системам способов, которые подразумевают сбор и накопление требуемой информации в подвергающейся профилированию и трассировке системе и дальнейшую ее обработку. Данная обработка может быть выполнена непосредственно в профилируемой и трассируемой ВМ или может быть передана в удаленную трассирующую/профилирующую систему (в случае ее наличия). Таким образом, этот подход не использует ВММ непосредственно.
Другой подход предполагает ВМ-прозрачное профилирование и трассировку: использование ВММ для профилирования и трассировки целевой ВМ. Существует несколько реализаций такого подхода. Некоторые из них используют ВММ как сервер профилирования и трассировки, другие требуют присутствия специального программного модуля в трассируемой/профилируемой ВМ.
Как известно, встроенные вычислительные системы располагают очень ограниченными вычислительными ресурсами. Принимая это во внимание, вышеупомянутые решения имеют один или несколько из следующих недостатков:
влияние трассирующей/профилирующей системы на полученные результаты в случае использования специального программного модуля для операционной системы трассируемой/профилируемой ВМ;
необходимость реализации контроля над трассировкой/профилированием непосредственно в трассируемой/профилируемой ВМ (в случае отсутствия удаленной трассирующей/профилирующей системы);
сильное усложнение ВММ в случае реализации трассирующих/профилирующих инструментов внутри него;
отсутствие возможности удаленной трассировки/профилирования.
В настоящее время неизвестно ни одного подходящего для виртуализированных встроенных вычислительных систем решения. Данное изобретение позволит создать систему, которая свободна ото всех вышеперечисленных недостатков.
Превалирующий подход для профилирования и трассировки виртуализированной встроенной вычислительной системы - это использование обычных профилирующих и трассирующих методов. Примерами таких методов являются Kprobe, OProfile, Spyker, SystemTap, LTTng, DTrace, KernInst и т.д. (см., например, G.H.Kuenning, Precise Interactive Measurement of Operating System Kernels, Software-Practice&Experience 25,1 (January 1995)) [1]. Использование этих методов оказывает влияние на результаты профилирования и трассировки. Степень этого влияния может меняться, и обычно ее слишком тяжело оценивать, так как она зависит от множества факторов и может быть различной даже в простых случаях использования виртуализированной системы. Поэтому точность (которая определяет полезность) профилирования и трассировки в данном случае не является высокой и в определенных случаях может оказаться недостаточной для того, чтобы использовать результаты трассировки/профилирования.
Развитием этого подхода является Xenoprof (разработчик - HP Labs) - набор инструментов для профилирования виртуальных машин, работающих с помощью конкретной реализации ВММ - Xen (см. http://www.intel.com/technology/itj/2006/v10i3/3-xen/5-performance-tuning-vt-x.htm) [2] Хеnoprof представляет собой изменения оригинального программного кода известной программы для профилирования OProfile и изменения оригинального программного кода ВММ Хеn. На настоящий момент Xenoprof реализован для операционной системы на основе ядра Linux. Xenoprof позволяет профилировать виртуальные машины, работающие под ВММ Хеn и разработан под определенные типы архитектур процессоров, которые не являются общепринятыми для встроенных вычислительных систем. Это решение имеет следующие недостатки:
Xenoprof содержит специальный модуль ядра в профилируемой ВМ, поэтому этот метод не может быть назван прозрачным для профилируемой ВМ, поскольку этот модуль влияет на полученные результаты профилирования.
Xenoprof предполагает, что инициатором процесса профилирования является одна из ВМ, запущенных в виртуальной среде Xen. He предусмотрено возможности удаленного управления процессом профилирования. Этот недостаток очень значителен применительно ко встроенным вычислительным системам, поскольку управление процессом профилирования на встроенной вычислительной системе осложняется малым размером экрана и другими специфическими ограничениями.
Наиболее близким к заявленному изобретению является способ профилирования и трассировки, называемый проникающей отладкой (см. Alex Но and Steven Hand, On the Design of a Pervasive Debugger, Computer laboratory, University of Cambridge [3]), в котором инструменты отладчика помещают в виртуализирующий слой аппаратной части системы и используют ВММ как трассирующий/профилирующий сервер. Данный способ выбран в качестве прототипа заявленного изобретения.
Главным недостатком способа прототипа является то, что он не рассчитан на применение во встроенных вычислительных системах. Неизвестно ни одной реализации этого способа для встроенных вычислительных систем. ВММ, реализованный с поддержкой этого способа, предъявляет высокие требования к аппаратным ресурсам. Кроме этого, программный интерфейс приложения и библиотеки операционной системы, которые могут потребоваться для трассировки и профилирования, не доступны в виртуализирующем слое ни в какой из известных реализаций ВММ для встроенных вычислительных систем. Их добавление приведет к необоснованному усложнению ВММ, усложняя выполнение способа и ухудшая его быстродействие. Кроме этого, необходимость реализации инструментов трассировки и профилирования внутри ВММ означала бы, что данное решение сильно привязано к текущей реализации ВММ и, если ВММ разрабатывается независимо сторонними разработчиками (например, как в случае с ВММ Хеn), то существенная модификация ВММ приводила бы к неработоспособности всей системы трассировки/профилирования.
Задачей заявленного изобретения является создание системы и способа прозрачной трассировки и профилирования ВМ в составе виртуализированных встроенных вычислительных систем с увеличенной точностью за счет устранения влияния трассирующей/профилирующей ВМ на трассируемую/профилируемую ВМ, а именно осуществления профилирования и трассировки прозрачно для трассируемой/профилируемой ВМ т.е., без оказания влияния на полученные результаты, с добавлением новой функциональной возможности, обеспечивающей трассировку/профилирование ВМ при отсутствии исходного кода операционной системы или приложения - необходима только информация об адресах точек профилирования и трассировки, с добавлением новой функциональной возможности, обеспечивающей возможность удаленной трассировки/профилирования, причем, инструменты трассировки и профилирования размещаются вне ВММ, что позволит легко адаптировать метод к различным типам ВММ.
Поставленная задача решена путем создания системы прозрачной трассировки и профилирования виртуализированных встроенных вычислительных систем, содержащей монитор виртуальных машин (ВММ), который связан с аппаратурой встроенной вычислительной системы и со всеми ВМ системы, удаленную трассирующую/профилирующую систему, выполненную с возможностью отображения трассировочной/профилировочной информации и управления процессом трассировки/профилирования и связанную с трассирующей/профилирующей виртуальной машиной (ВМ) трассирующую/профилирующую ВМ, выполненную с возможностью принятия команд на формирование трассировочных/профилировочных вызовов от удаленной трассирующей/профилирующей системы, инициирования формирования трассировочных/профилировочных вызовов в ВММ, получения трассировочной/профилировочной информации от трассируемой/профилируемой ВМ через ВММ и передачи этой информации в удаленную трассирующую/профилирующую систему, трассируемую/профилируемую ВМ, являющуюся объектом трассировки/профилирования, при этом ВММ дополнительно содержит блок трассировочных/профилировочных вызовов, выполненный с возможностью формирования трассировочных/профилировочных вызовов, которые обеспечивают установку точек профилирования и трассировки в заданных адресах памяти трассируемой/профилируемой ВМ, а также с возможностью получения от трассируемой/профилируемой ВМ трассировочной/профилировочной информации для трассирующей/профилирующей ВМ.
Рассматривая функционирование системы, следует отметить, что удаленная трассирующая/профилирующая система может быть подсоединена к любому количеству трассируемых/профилируемых виртуализированных встроенных вычислительных систем с целью их совместной трассировки/профилирования.
Поставленная задача решена также путем создания способа прозрачной трассировки и профилирования виртуализированных встроенных вычислительных систем, заключающегося в выполнении следующих операций:
определяют в удаленной трассирующей/профилирующей системе, по меньшей мере, одну точку профилирования и трассировки для трассируемой/профилируемой ВМ, при этом выбирают адреса памяти, предназначенные для трассировки/профилирования;
передают информацию о выбранных для трассировки/профилирования адресах из удаленной трассирующей/профилирующей системы в трассирующую/профилирующую ВМ;
передают информацию о выбранных для трассировки/профилирования адресах из трассирующей/профилирующей ВМ в блок трассировочных/профилировочных вызовов ВММ;
формируют в блоке трассировочных/профилировочных вызовов ВММ трассировочные/профилировочные вызовы и замещают ими содержимое памяти в выбранных адресах памяти трассируемой/профилируемой ВМ, при этом исходное содержимое памяти в выбранных адресах памяти сохраняют в профилирующей/трассирующей ВМ;
автоматически вызывают ВММ, т.е. выполняют трассировочный/профилировочный вызов, при попадании выполняемой программы в трассируемой/профилируемой ВМ на один из адресов, содержащих точку профилирования и трассировки в трассируемой/профилируемой ВМ, при этом ВММ приостанавливает трассируемую/профилируемую ВМ, уведомляет трассирующую/профилирующую ВМ о получении трассировочной/профилировочной информации и предоставляет к ней доступ; выполнение вызова продолжается в трассирующей/профилирующей ВМ;
передают полученную трассировочную/профилировочную информацию по каналу связи в удаленную трассирующую/профилирующую систему, которая обрабатывает и отображает полученную информацию;
после завершения трассировки/профилирования по команде из удаленной трассирующей/профилирующей системы трассирующая/профилирующая ВМ при посредничестве ВММ восстанавливает содержимое памяти в выбранных адресах памяти трассируемой/профилируемой ВМ, после чего виртуализированная встроенная вычислительная система продолжает работать в обычном режиме.
Адреса точек профилирования и трассировки при функционировании способа преимущественно формируют динамически в процессе трассировки/профилирования.
Информацию об адресах точек профилирования и трассировки при функционировании способа обычно кэшируют в трассирующей/профилирующей ВМ.
Информацию, передающуюся между удаленной трассирующей/профилирующей системой и трассирующей/профилирующей ВМ, при функционировании способа обычно буферизируют.
При функционировании способа имеется возможность поддержания механизма обеспечения безопасности, который ограничивает доступ к трассировочной/профилировочной функциональности.
При функционировании способа имеется возможность сохранения и/или передачи в сжатом состоянии трассировочной/профилировочной информации.
При функционировании способа имеется также возможность сохранения и/или передачи трассировочной/профилировочной информации в зашифрованном состоянии.
При функционировании способа адреса памяти, предназначенные для трассировки/профилирования, принадлежат адресному пространству ядра операционной системы или любому приложению трассируемой/профилируемой ВМ.
Техническим результатом заявленного изобретения является увеличение точности системы и способа профилирования и трассировки виртуализированных встроенных вычислительных систем и добавление новых полезных функциональных возможностей.
Для лучшего понимания заявленного изобретения далее приводится его подробное описание с соответствующими чертежами.
Фиг.1. Схема архитектуры системы прозрачного профилирования и трассировки виртуализированной встроенной вычислительной системы, выполненной согласно изобретению.
Фиг.2. Исходное состояние системы прозрачного профилирования и трассировки в примере варианта выполнения способа прозрачного профилирования и трассировки виртуализированных встроенных вычислительных систем, выполненного согласно изобретению.
Фиг.3. Состояние системы прозрачного профилирования и трассировки во время процесса профилирования и трассировки в примере варианта выполнения способа прозрачного профилирования и трассировки виртуализированных встроенных вычислительных систем, выполненного согласно изобретению.
Рассмотрим пример (Фиг.1) заявленной системы прозрачного профилирования и трассировки виртуализированных встроенных вычислительных систем, которая содержит несколько виртуальных машин, одна из которых является трассирующей/профилирующей виртуальной машиной, а другая трассируемой/профилируемой ВМ, а также удаленную трассирующую/профилирующую систему. ВМ связаны между собой через монитор виртуальных машин (ВММ), который связан с аппаратной частью виртуализированной встроенной вычислительной системы, причем ВММ дополнительно содержит блок трассировочных/профилировочных вызовов. Трассирующая/профилирующая ВМ связана с удаленной трассирующей/профилирующей системой.
Система работает следующим образом. Сначала определяют в удаленной трассирующей/профилирующей системе, по меньшей мере, одну точку профилирования и трассировки для трассируемой/профилируемой ВМ, при этом выбирают адреса памяти, предназначенные для трассировки/профилирования. Эти адреса принадлежат либо адресному пространству ядра операционной системы, либо любому приложению трассируемой/профилируемой ВМ (Фиг.2). Затем информацию об выбранных для трассировки/профилирования адресах передают из удаленной трассирующей/профилирующей системы в трассирующую/профилирующую ВМ через канал связи. Затем информацию о выбранных для трассировки/профилирования адресах передают из трассирующей/профилирующей ВМ в блок трассировочных/профилировочных вызовов ВММ. Затем формируют в блоке трассировочных/профилировочных вызовов ВММ трассирующие/профилирующие вызовы и замещают ими содержимое памяти в выбранных адресах памяти трассируемой/профилируемой ВМ, при этом исходное содержимое памяти в выбранных адресах памяти сохраняют в трассирующей/профилирующей ВМ (Фиг.3). При попадании выполняемой программы в трассируемой/профилируемой ВМ на один из адресов в трассируемой/профилируемой ВМ, содержащих точку профилирования и трассировки, автоматически вызывается ВММ (происходит трассирующий/профилирующий вызов). Выполняя трассирующий/профилирующий вызов, ВММ приостанавливает трассируемую/профилируемую ВМ, уведомляет трассирующую/профилирующую ВМ о получении трассировочной/профилировочной информации и предоставляет к ней доступ. Затем выполнение вызова продолжают в контексте трассирующей/профилирующей ВМ. Полученную трассировочную/профилировочную информацию передают по каналу связи в удаленную трассирующую/профилирующую систему. С помощью удаленной трассирующей/профилирующей системы обрабатывают и отображают полученную информацию. После завершения трассировки/профилирования по команде из удаленной трассирующей/профилирующей системы с помощью трассирующей/профилирующей ВМ при посредничестве ВММ восстанавливают содержимое памяти в выбранных адресах памяти трассируемой/профилируемой ВМ, после чего виртуализированная встроенная вычислительная система продолжает работать в обычном режиме.
Заявленные система и способ предполагают использование, по меньшей мере, одной трассируемой/профилируемой ВМ, которая представляет собой обычную ВМ, являющуюся объектом трассировки/профилирования.
ВММ, помимо обычных функций, выполняет функцию посредника между трассируемой/профилируемой ВМ и трассирующей/профилирующей ВМ. Это обусловлено добавлением дополнительных функций, реализованных с помощью блока трассировочных/профилировочных вызовов. Эта дополнительная функциональность реализует механизм для установки точек профилирования и трассировки в выбранных адресах памяти трассируемой/профилируемой ВМ, возможность оповещения трассирующей/профилирующей ВМ о поступлении новой информации о ходе трассировки/профилирования и передачи этой информации от трассируемой/профилируемой ВМ в трассирующую/профилирующую ВМ, механизм восстановления исходного содержимого адресов памяти трассируемой/профилируемой ВМ.
Трассирующая/профилирующая ВМ выполняет функции посредника между ВММ и удаленной трассирующей/профилирующей системой. Она содержит специальные инструменты, которые используют дополнительную функциональность ВММ (трассировочные/профилировочные вызовы). Трассирующая/профилирующая ВМ выполнена с возможностью обмена информацией с удаленной трассирующей/профилирующей системой через канал связи.
Удаленная трассирующая/профилирующая система представляет собой независимую вычислительную систему, которая предоставляет разработчику программного обеспечения графический пользовательский интерфейс для удобного выполнения трассировки/профилирования. Она выполнена с возможностью обмена информацией с трассирующей/профилирующей ВМ через канал связи. Удаленная трассирующая/профилирующая система содержит информацию об адресах памяти трассируемой/профилируемой ВМ.
Заявленные система и способ прозрачного профилирования и трассировки виртуализированных встроенных вычислительных систем позволяют проводить профилирование и трассировку виртуализированных встроенных вычислительных систем с увеличенной точностью за счет устранения влияния трассирующей/профилирующей ВМ на трассируемую/профилируемую ВМ, а именно осуществления профилирования и трассировки прозрачно для трассируемой/профилируемой ВМ, т.е. без оказания влияния на полученные результаты, с добавлением новой функциональной возможности, обеспечивающей трассировку/профилирование ВМ при отсутствии исходного кода операционной системы или приложения - необходима только информация об адресах памяти точек профилирования и трассировки, с добавлением новой функциональной возможности, обеспечивающей возможность удаленной трассировки/профилирования, причем инструменты трассировки и профилирования размещаются вне ВММ, что позволит легко адаптировать метод к различным типам ВММ.
Заявленное изобретение может быть применено в виртуализированных встроенных вычислительных системах различного типа с различными архитектурами и операционными системами, поддерживающими технологию виртуализации.
Хотя указанный выше вариант выполнения изобретения был изложен с целью иллюстрации настоящего изобретения, специалистам ясно, что возможны разные модификации, добавления и замены, не выходящие из объема и смысла настоящего изобретения, раскрытого в прилагаемой формуле изобретения.