Главная » Просмотр файлов » Проектирование и разработка подсистемы виртуализации звука в Parallels Desktop

Проектирование и разработка подсистемы виртуализации звука в Parallels Desktop (1187416), страница 5

Файл №1187416 Проектирование и разработка подсистемы виртуализации звука в Parallels Desktop (Проектирование и разработка подсистемы виртуализации звука в Parallels Desktop) 5 страницаПроектирование и разработка подсистемы виртуализации звука в Parallels Desktop (1187416) страница 52020-09-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 5)

- Монитор виртуальных машин занимается обработкой запросов к ac97-cовместимой эмулируемой аудио карте, конфигурирует унифицированный аудио поток, переносит аудио данные из DMA ,буфера в аудио поток, а так же передает контрольные запросы в часть виртуальной машины, исполняющейся в режиме пользователя

- Пользовательское приложение обрабатывает запросы от монитора на запуск/остановку аудио потока и передает их в аудио библиотеку. Так же этот компонент занимается управлением выбора реального устройства воспроизведения и задержками виртуализированного аудио потока

- Аудио библиотека является обёрткой вокруг интерфейса Core Audio, позволяющей использовать унифицированный̆ аудио поток в

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

Разработка велась итеративно со следующими стадиями:

- Расширение кольцевого буфера до унифицированного аудио

потока

- Пошаговый перенос кода обработки запросов к ac97-

совместимой эмулируемой карте из пользовательского приложения в монитор виртуальных машин

- Написание кода конфигурации параметров унифицированного аудио потока, изменяющего эти параметры в при доступе к mmio регистрам эмулируемой аудио карты

- Изменение интерфейса взаимодействия монитора виртуальных машин и пользовательского приложения

- Переход на использование унифицированного аудио потока в качестве единственного источника данных и конфигурации аудио в пользовательском коде эмуляции.

4.3 Разработка аудио библиотеки

Как было указано в главе 3, существующие аудио библиотеки не удовлетворяли требованиям к хостовой части аудио подсистемы виртуальной машины, и поэтому было принято решение написать свой аудио компонент на базе интерфейса, предоставляемого Core Audio. Основной цикл работы в этом случае выглядит так [14]:

- Клиент создает обьект Audio Unit (HAL Audio Unit), выставляет необходимый формат аудио данных, параметры воспроизведения, регистрирует функцию обратного вызова и запускает воспроизведение

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

Такой подход в явном виде не учитывает ряд особенностей работы с аудио устройствами в среде OSX, которые так же должны быть учтены в аудио библиотеке:

- В списке устройств, предоставляемом библиотекой Core Audio нет “устройства по умолчанию”. Но есть параметр системы, который указывает на текущее устройство, которое считается таким. Из этого следует, что смена “устройства по умолчанию” должна быть обработана нашей аудио библиотекой (библиотека Portaudio не решала эту проблему, что приводило к излишней запутанности кода эмуляции).

- Тестирование прототипа, использующего Core Aduio для воспроизведения звука показало, что несмотря на ряд заверений

разработчиков Apple, эта аудио библиотека не умеет работать с форматами, в которых частота дискретизации не поддерживается аудио устройством, используемым для работы. Эта проблема может быть решена при помощи компонента Core Audio – AudioConverter, принцип работы которого совпадает с принципом работы HAL Audio Unit и основан на функции обратного вызова. Особенностью этого конвертера является то, что в качестве параметра при конвертации передается количество фреймов аудио данных, которые нужно получить на выходе из конвертера. Такой подход является очень удобным в случае воспроизведения: HAL Audio Unit запрашивает определенное количество квантов аудио в своей функции обратного вызова. Мы это же количество квантов запрашиваем у Audio Converter Unit’а, а тот в свою очередь выберет из нашего унифицированного аудио потока ровно столько фреймов, сколько ему необходимо (а в случае несовпадения частоты дискретизации ему может понадобиться как большее количество фреймов, так и меньшее). Но в этом случае для устройства записи возникает закономерная проблема: получив в функции обратного вызова пакет данных конкретной длинны – мы не знаем, какое количество квантов в гостевом формате выйдет из этого пакета после трансформации, а значит мы не знаем какой параметр выдать в трансформатор. Проблема заключается в том, что при некратном значении отношения хостовой и гостевой частоты дискретизации при конвертации запрашиваются пакеты данных фиксированного размера, и если из аудио устройства придет некратное размеру пакета количество данных, то часть из них не будет использована и без дополнительных действие со стороны аудио библиотеки пропадет, что для пользователя будет звучать как искажение звука. Обзор существующих решений показал что с этой проблемой борются созданием дополнительного кольцевого буфера между HAL Audio Unit и Audio Converter Unit.

- Функции обратного вызова в Core Audio не потоко-безопасны в том смысле, что могут быть вызваны после остановки и даже закрытия аудио устройства. Ряд библиотек не учитывал эту особенность и потому имел серьезные проблемы со стабильностью.

Учитывая выявленные выше особенности, было принято решение использовать следующую архитектуру:

CAudioPipeline – обертка вокруг унифицированного аудио потока, реализующую простую read/write семантику, и инкапсулирующего внутри себя логику по предобразованию аудио форматов.

CAudioUnit – обьект, инкапсулирующий логику инициализации и работы с HAL Audio Unit.

CAudioUnitManager – singletone обьект, занимающийся маршрутизацией запросов между CAudioUnit’ми и Core Audio. Является точкой входа для сторонних компонентов, и разрешает проблемы исполнения функций обратного вызова в устаревшем контексте при помощи механизма подсчета поколений аудио юнитов.

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

5. Оценка результатов работы

Оценка результатов работы была проведена на базе измерения следущих метрик:

1. Полная величина задержки при неизменном значении величины пребуферизации

2. Частота возникновения искажений в VoIP приложениях при автоматической подстройке громкости аудио

Для проверки первого утверждения был собран следующий стенд: на физической машине MacPro 2 x 2,8 GHz Quad-Core Intel Xeon с установленной на ней OS X 10.10 линейный выход было соединен с линейным входом шнуром 3.5 jack. Внутри виртуальной машины (2 virtual CPU cores) Windows 8 было установлено приложение Audacity [36], позволяющее стартовать одновременную воспроизведение аудио сигнала и запись. В качестве аудио сигнала была выбрана синусоида, а в качестве метрики – задержка между началом воспроизведения и началом записи сигнала. Результаты измерений приведены в таблице 2.

Старая архитектура

Новая архитектура

Задержка полная, мс

119 ±15

86 ±11

Таблица 2. Сравнение величин полной задежки

Таким образом, полная задержка виртуализированного аудиотракта была снижена на 27% при неизменной величине пребуферизации.

На том же стенде удалось обнаружить качественный скачек в скорости обработки изменения громкости аудиоустройств. Для этого на том же стенде было установлено приложение Lync [37] и совершен звонок. На старой аудио архитектуре были очевидны искажения аудио сигнала. В версии с новой архитектурой эти помехи устранены.

6. Заключение

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

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

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

Таким образом, анализ показал, что наиболее оптимальным решением в вопросе улучшения аудио харатктеристик продукта Parallels Desktop является использование текущей архитектуры аудио потока (с рядом некритичных изменений) и имплементация собственной библиотеки для работы с аудио устройствами, учитывающей специфику виртуализацотнного ПО.

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

Тем не менее, стоит отметить ряд вопросов, которые все еще остаются актуальными, являясь по сути логическим продолжением данной работы:

- Развитие формальной модели виртуализированного аудиотракта. Анализ с учетом нестационарной природы нагрузки системы.

- Обзор методик управлением приоритетами виртуальной машины и анализ их применимости.

- Анализ методологий предсказания аудиосигнала в случаях простоя генератора.

В заключение хотелось бы особенно поблагодарить Константина Озеркова и Анну Мелехову за неоценимую помощь в работе.

7. Список использованной литературы

1. ADAMS, K. AND AGESEN, O. 2006. A comparison of software and hardware techniques for x86 virtualiza- tion. In Proceedings of the 12th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS-XII). 2–13.

2. AMD. AMD64 Virtualization Codenamed “Pacifica” Technology: Secure Virtual Machine Architecture Reference Manual, May 2005.

3. INTEL CORPORATION. Intel Virtualization Technology Specifica- tion for the IA-32 Intel Architecture, April 2005.

4. http://www.vmware.com/products/esxi-and-esx/overview

5. http://www.linux-kvm.org/page/Main_Page

6. http://www.vmware.com/ru/products/workstation

7. http://www.parallels.com/ru/products/desktop

8. Christopher Clark , Keir Fraser , Steven Hand , Jacob Gorm Hansen , Eric Jul , Christian Limpach , Ian Pratt , Andrew Warfield, Live migration of virtual machines, Proceedings of the 2nd conference on Symposium on Networked Systems Design & Implementation, p.273-286, May 02-04, 2005

9. MANACHER, G.K. Production and stabihzation of real-time task schedules. J. ACM 14' 3 (July 1967), 439-465.

10. Raoul Rivas , Ahsan Arefin , Klara Nahrstedt, Janus: a cross-layer soft real- time architecture for virtualization, Proceedings of the 19th ACM International Symposium on High Performance Distributed Computing, June 21-25, 2010, Chicago, Illinois

11. Vincent Legout , Matthieu Lemerre Paravirtualizing Linux in a real-time hypervisor, ACM SIGBED Review - 2nd Workshop on Embed With Linux

12. RT-Xen: towards real-time hypervisor scheduling in xen

13. Martin, James (1965). Programming Real-time Computer Systems.

Englewood Cliffs, NJ: Prentice-Hall Inc. p. 4. ISBN 013-730507-9.

14. http://www.portaudio.com/docs/latency.html

15. https://developer.apple.com/library/mac/documentation/MusicAudio/Concep

tual/CoreAudioOverview/CoreAudioEssentials/CoreAudioEssentials.html

16. https://msdn.microsoft.com/en-

us/library/windows/desktop/dd756612(v=vs.85).aspx

17. A. C. Younkin and P. J. Corriveau "Determining the amount of audio-video synchronization errors perceptible to the average end-user", IEEE Trans. Broadcast., vol. 54, pp.623 -627 2008

18. ITU-T Recommendation G.114

19. http://www.yamahaproaudio.com/europe/en_gb/training_support/selftrainin

g/audio_quality/chapter5/05_absolute_latency/

20. http://www.asio4all.com/

21. http://www.linux-kvm.org/page/Main_Page

22. https://www.virtualbox.org

23. http://www.di.ens.fr/~guatto/sbac13.pdf

24. http://www.intel.com/content/dam/www/public/us/en/documents/product-

specifications/high-definition-audio-specification.pdf

25. http://www.portaudio.com/

26. https://developer.apple.com/library/mac/documentation/MusicAudio/Concep

tual/AudioUnitProgrammingGuide/AudioUnitDevelopmentFundamentals/A

udioUnitDevelopmentFundamentals.html

27. http://www.intel.com/content/dam/www/public/us/en/documents/technical-

Характеристики

Список файлов ВКР

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее