Библиотека сайта rus-linux.net
Применение принципов оптимизации к средствам компонентного развертывания и конфигурирования систем
Глава 6 из книги "Производительность приложений с открытым исходным кодом".
Оригинал: Applying Optimization Principle Patterns to Component Deployment and Configuration Tools,
Авторы: Doug C. Schmidt, William R. Otte, and Aniruddha Gokhal
Перевод: Н.Ромоданов
Заключение
В этой главе представлен обзор движка развертывания и конфигурирования Deployment And Configuration Engine (DAnCE), реализующий спецификацию развертывания и конфигурирования OMG Deployment and Configuration. Движок DAnCE, как средство исследования, использовался для демонстрации новых методов, применяемых в системах DRE для развертывания и конфигурирования (deployment and configuration - D&C) приложений, состоящих из компонентов. Хотя производительность этого движка была вполне удовлетворительной в узких и специальных случаях, которые ограничивались публикациями и демонстрациями, его производительность оказалась недостаточной, когда он использовался в крупномасштабных промышленных системах DRE. Ряд факторов, в том числе смена разработчиков проекта, а также разработка DAnCE, ориентированная на демонстрационные задачи, были причиной выбора на раннем этапе неправильных проектных решений, которые были реализованы в общей архитектуре проекта и конкретных проектных решениях, что серьезно воспрепятствовало достижению необходимой производительности.
Чтобы подчеркнуть многие возможности оптимизации, присутствующие в движке DAnCE, был описан типичный случай его использования - платформа South East Alaska MOnitoring Network for Science, Telecommunications, Education, and Research — SEAMONSTER (сеть мониторинга Юго-Восточной Аляски в науке, телекоммуникациях, образовании и исследованиях). Руководствуясь этим практическим случаем, мы в данной статье описывали, как применили принципы оптимизации, используемые в сетях, и заново перепроектировали и переделали движок DAnCE с тем, чтобы исправить описанные выше недостатки. Кроме того, мы описали три дополнительных принципа оптимизации: учет возможности распараллеливания, отказ от синхронизации и распределение в архитектуре решаемых задач. Эти дополнительные принципы в сочетании с принципами, приведенными в первоначальном списке, были использованы для разработки версии LE-DAnCE, которая явилась существенно улучшенным по производительности и надежности вариантом движка DanCE. В следующей таблице приведен итоговый список принципов оптимизации, включающий в себя и наши новые дополнения. Кроме того, подробное количественное обсуждение результатов повышения производительности описано в [27].
Принципы оптимизации и их использовании в реализации LE-DAnCE
Принцип | Пояснение | Пример в DaNCE |
Avoiding Waste - Избегайте излишних затрат | Избегайте очевидных излишних затрат | Предварительное выделение памяти при анализе планов развертывания. |
Shifting in Time - Сдвиг операций по времени | Сдвиг вычислений во времени (предварительные вычисления, ленивые вычисления, распределение затрат, дозирование действий) | Предварительное преобразование плана развертывания в двоичный формат, потенциально — разделение на подпланы предварительно откомпилированного плана. |
Relaxing Specifications - Ослабление спецификаций | Ослабление спецификации (временный компромисс с определенностью действий, временный компромисс по точности и сдвиг вычислений по времени) | Потенциально — разделение на подпланы предварительно откомпилированного плана. |
Leveraging Other Components - Балансировка межкомпонентной нагрузки | Использование других компонентов системы (локальная обработка, затраты памяти для увеличения скорости, использование аппаратных возможностей) | Не используется |
Adding Hardware - Добавление аппаратных возможностей | Добавление аппаратных возможностей для повышения производительности | Не используется |
Efficient Routines - Эффективные процедуры | Создание эффективных процедур | Привязка данных XML-IDL |
Avoiding Generality - Избегайте обобщений | Избегайте ненужных обобщений | Оптимизация анализа плана |
Specification vs Implementation - Спецификация или реализация | Не смешивайте спецификации и реализацию | Локальный менеджер LocalityManager |
Passing Hints - Передача компактных сообщений | Передавайте в интерфейсах информацию в компактном виде | Потенциально используется для разбиения на части предварительного откомпилированного плана |
Passing Information - Передача информации | Передайте информацию в заголовках протоколов | Не используется |
Expected Use Case - Предполагаемый вариант использования | Оптимизируйте предполагаемый вариант использования | Привязка данных XML-IDL |
Использование состояний | Добавьте и используйте состояния для увеличения скорости работы | Предварительно выделение памяти для подпланов во время анализа плана. |
Degrees of Freedom - Степени свободы | Оптимизируйте степени свободы | Обработчики установки отдельных экземпляров LocalityManager |
Exploit Finite Universes - Использование конечного числа элементов | Используйте специальные методики, предназначенные для универсумов с конечным числом элементов | Не используется |
Efficient Data Structures - Эффективные структуры данных | Используйте эффективные структуры данных | Оптимизация привязки данных XML-IDL |
Design for Parallelization - Разработка с учетом распараллеливания | Оптимизация архитектуру так, чтобы она допускала распараллеливание | Обработка дочерних планов параллельно |
Avoid Synchronization - Отказ от синхронизации | Избегайте синхронизаций и блокировок | Несинхронизированный доступ к основному плану при анализе плана. |
Separate Concerns — Распределение решаемых задач | Используйте строгое распределение задач для модуляризации архитектуры | Локальный менеджер Locality Manager |
Основываясь на нашем опыте применения вариантов оптимизации, описанных в этой главе, к движку LE-DAnCE, а также анализируя результаты, мы усвоили следующие уроки:
- Возможность использовать распараллеливание является критически важной возможностью оптимизации. Поскольку использование многоядерных процессоров становятся стандартной возможностью даже для встраиваемых устройств, крайне важно, чтобы алгоритмы и процессы разрабатывались таким образом, чтобы можно было пользоваться этой возможностью. Если алгоритмы и процессы оптимизированы для распараллеливания, следует разумно пользоваться синхронизацией, поскольку неправильное использование блокировок может приводить к тому, что системы с распараллеливанием будут работать в последовательном режиме, или, что еще хуже, во время их работы могут возникать трудноуловимые проблемы.
- Когда возможно, убирайте ресурсоемкие операции из критического путей исполнения. Хотя наши оптимизационные решения, применяемые на фазе анализа плана процесса D&C (описываемые в разделе «Оптимизация анализа плана»), эффективно уменьшили общую задержку развертывания в случае крупномасштабного развертывания, можно достичь дополнительногое улучшения при помощи шаблона Shifting in Time (Сдвиг операций по времени). Точно также, как и для проблемы разбора XML, которая была описана в разделе «Оптимизация анализа плана развертывания», результат этой операции, скорее всего, будет применен там, где на языке XML генерируется план развертывания. В этом случае можно также аналогичным образом выполнять предварительное компилирование и получить в инфраструктуре D&C дополнительную экономию на времени ожидания. Использование таких предварительно откомпилированных планов (как при глобальном разделении плана на составляющие, так и при их локальном разделении) могло бы быть примером использования шаблона Passing Hints (Передача компактных сообщений).
- Последовательное выполнение процессов является основным источником проблем с производительностью в системах DRE. При проектировании распределенных систем проще использовать последовательное выполнение, причем как с концептуальной, так и реализационной точек зрения. Однако такая простота часто становится причиной значительного снижения производительности. Часто, дополнительная сложность асинхронного взаимодействия является правильной и выгодной дополнительной сложностью.
- Отсутствие ясного архитектурного и технического лидерства губительно для проектов с открытым исходным кодом. Разработчики часто используют проект с открытым исходным кодом для решения узкой проблемы и вскоре после этого покидают проект. Если нет четкого руководства, слабые архитектурные и технические решения, принимаемые отдельными авторами могут, в конечном итоге, превратиться в практически неработоспособный проект.
TAO, CIAO и LE-DAnCE доступны в виде открытого исходного кода по ссылке download.dre.vanderbilt.edu.
Ссылки
[1] G. T. Heineman and B. T. Councill, Component-Based Software Engineering: Putting the Pieces Together. Addison-Wesley, 2001.
[2] A. Akkerman, A. Totok, and V. Karamcheti, “Infrastructure for Automatic Dynamic Deployment of J2EE Applications in Distributed Environments,” in 3rd International Working Conference on Component Deployment (CD 2005), Grenoble, France, 2005, pp. 17–32.
[3] D. Suri, A. Howell, N. Shankaran, J. Kinnebrew, W. Otte, D. C. Schmidt, and G. Biswas, “Onboard Processing using the Adaptive Network Architecture,” in Proceedings of the Sixth Annual NASA Earth Science Technology Conference, 2006.
[4] J. White, B. Dougherty, R. Schantz, D. C. Schmidt, A. Porter, and A. Corsaro, “R&D Challenges and Solutions for Highly Complex Distributed Systems: a Middleware Perspective,” the Springer Journal of Internet Services and Applications special issue on the Future of Middleware, vol. 2, no. 3, dec 2011.
[5] D. C. Schmidt, B. Natarajan, A. Gokhale, N. Wang, and C. Gill, “TAO: A Pattern-Oriented Object Request Broker for Distributed Real-time and Embedded Systems,” IEEE Distributed Systems Online, vol. 3, no. 2, Feb 2002.
[6] Institute for Software Integrated Systems, “Component-Integrated ACE ORB (CIAO).” www.dre.vanderbilt.edu/CIAO, Vanderbilt University.
[7] Lightweight CCM FTF Convenience Document, Ptc/04-06-10. Object Management Group, 2004.
[8] G. Deng, J. Balasubramanian, W. Otte, D. C. Schmidt, and A. Gokhale, “DAnCE: A QoS-enabled Component Deployment and Configuration Engine,” in Proceedings of the 3rd Working Conference on Component Deployment (CD 2005), 2005, pp. 67–82.
[9] Deployment and Configuration of Component-based Distributed Applications, v4.0, Document formal/2006-04-02. OMG, 2006.
[10] G. Varghese, Network Algorithmics: An Interdisciplinary Approach to Designing Fast Networked Devices. San Francisco, CA: Morgan Kaufmann Publishers (Elsevier), 2005.
[11] V. S. Pai, P. Druschel, and W. Zwaenepoel, “IO-Lite: A Unified I/O Buffering and Caching System,” ACM Transactions of Computer Systems, vol. 18, no. 1, pp. 37–66, 2000.
[12] M. Accetta, R. Baron, W. Bolosky, D. Golub, R. Rashid, A. Tavanian, and M. Young, “Mach: A New Kernel Foundation for UNIX Development,” in Proceedings of the Summer 1986 USENIX Technical Conference and Exhibition, 1986, pp. 93–112.
[13] D. D. Clark and D. L. Tennenhouse, “Architectural Considerations for a New Generation of Protocols,” in Proceedings of the Symposium on Communications Architectures and Protocols (SIGCOMM), ACM, 1990, pp. 200–208.
[14] M. Shreedhar and G. Varghese, “Efficient Fair Queueing using Deficit Round Robin,” in SIGCOMM ’95: Proceedings of the conference on Applications, technologies, architectures, and protocols for computer communication, ACM Press, 1995, pp. 231–242.
[15] M. Degermark, A. Brodnik, S. Carlsson, and S. Pink, “Small Forwarding Tables for Fast Routing Lookups,” in Proceedings of the ACM SIGCOMM ’97 Conference on Applications, Technologies, Architectures, and Protocols for Computer Communication, ACM Press, 1997, pp. 3–14.
[16] J. Hasan and T. N. Vijaykumar, “Dynamic pipelining: Making IP-lookup Truly Scalable,” in SIGCOMM ’05: Proceedings of the 2005 Conference on Applications, technologies, architectures, and protocols for computer communications, ACM Press, 2005, pp. 205–216.
[17] P. Druschel and L. L. Peterson, “Fbufs: A High-Bandwidth Cross-Domain Transfer Facility,” in Proceedings of the $14^th$ Symposium on Operating System Principles (SOSP), 1993.
[18] N. C. Hutchinson and L. L. Peterson, “Design of the x-Kernel,” in Proceedings of the SIGCOMM ’88 Symposium, 1988, pp. 65–75.
[19] S. McCanne and V. Jacobson, “The BSD Packet Filter: A New Architecture for User-level Packet Capture,” in Proceedings of the Winter USENIX Conference, 1993, pp. 259–270.
[20] J. C. Mogul, R. F. Rashid, and M. J. Accetta, “The Packet Filter: an Efficient Mechanism for User-level Network Code,” in Proceedings of the 11th Symposium on Operating System Principles (SOSP), 1987.
[21] D. R. Engler and M. F. Kaashoek, “DPF: Fast, Flexible Message Demultiplexing using Dynamic Code Generation,” in Proceedings of ACM SIGCOMM ’96 Conference in Computer Communication Review, ACM Press, 1996, pp. 53–59.
[22] Y. Rekhter, B. Davie, E. Rosen, G. Swallow, D. Farinacci, and D. Katz, “Tag Switching Architecture Overview,” Proceedings of the IEEE, vol. 85, no. 12, pp. 1973–1983, dec 1997.
[23] D. D. Clark, V. Jacobson, J. Romkey, and H. Salwen, “An Analysis of TCP Processing Overhead,” IEEE Communications Magazine, vol. 27, no. 6, pp. 23–29, jun 1989.
[24] S. Sahni and K. S. Kim, “Efficient Construction of Multibit Tries for IP Lookup,” IEEE/ACM Trans. Netw., vol. 11, no. 4, pp. 650–662, 2003.
[25] G. Varghese and T. Lauck, “Hashed and Hierarchical Timing Wheels: Data Structures for the Efficient Implementation of a Timer Facility,” IEEE Transactions on Networking, dec 1997.
[26] W. R. Otte, A. Gokhale, and D. C. Schmidt, “Predictable Deployment in Component-based Enterprise Distributed Real-time and Embedded Systems,” in Proceedings of the 14th international ACM Sigsoft Symposium on Component Based Software Engineering, ACM, 2011, pp. 21–30.
[27] W. Otte, A. Gokhale, D. Schmidt, and A. Tackett, “Efficient and Deterministic Application Deployment in Component-based, Enterprise Distributed, Real-time, and Embedded Systems,” Elsevier Journal of Information and Software Technology (IST), vol. 55, no. 2, pp. 475–488, feb 2013.
[28] D. ~. R. Fatland, M. ~. J. Heavner, E. Hood, and C. Connor, “The SEAMONSTER Sensor Web: Lessons and Opportunities after One Year,” AGU Fall Meeting Abstracts, dec 2007.
[29] J. S. Kinnebrew, W. R. Otte, N. Shankaran, G. Biswas, and D. C. Schmidt, “Intelligent Resource Management and Dynamic Adaptation in a Distributed Real-time and Embedded Sensor Web System,” Vanderbilt University, ISIS-08-906, 2008.
[30] A. Gokhale, B. Natarajan, D. C. Schmidt, A. Nechypurenko, J. Gray, N. Wang, S. Neema, T. Bapty, and J. Parsons, “CoSMIC: An MDA Generative Tool for Distributed Real-time and Embedded Component Middleware and Applications,” in Proceedings of the OOPSLA 2002 Workshop on Generative Techniques in the Context of Model Driven Architecture, ACM, 2002.
[31] J. White, B. Kolpackov, B. Natarajan, and D. C. Schmidt, “Reducing Application Code Complexity with Vocabulary-specific XML language Bindings,” in ACM-SE 43: Proceedings of the 43rd annual Southeast regional conference, 2005.
[32] The Common Object Request Broker: Architecture and Specification Version 3.1, Part 2: CORBA Interoperability, OMG Document formal/2008-01-07. Object Management Group, 2008.
[33] A. Dubey, W. Emfinger, A. Gokhale, G. Karsai, W. Otte, J. Parsons, C. Czabo, A. Coglio, E. Smith, and P. Bose, “A Software Platform for Fractionated Spacecraft,” in Proceedings of the IEEE Aerospace Conference, 2012, IEEE, 2012, pp. 1–20.
[34] A. B. Arulanthu, C. O’Ryan, D. C. Schmidt, M. Kircher, and J. Parsons, “The Design and Performance of a Scalable ORB Architecture for CORBA Asynchronous Messaging,” in Proceedings of the Middleware 2000 Conference, Pallisades, New York: ACM/IFIP, 2000.
[35] ObjectWeb Consortium, “CARDAMOM - An Enterprise Middleware for Building Mission and Safety Critical Applications.” cardamom.objectweb.org, 2006.
[36] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
[37] D. C. Schmidt, M. Stal, H. Rohnert, and F. Buschmann, Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects, Volume 2. New York: Wiley & Sons, 2000.
Вернуться к началу статьи.