2010-09-26 3 views
1

Я ищу инструменты, которые помогут мне оценить производительность архитектуры программного обеспечения. Для этого конкретного проекта мне нужно смоделировать [распределенную] систему с небольшим размером, которая сопоставима с ориентированным на сообщение промежуточным программным обеспечением (MOM). Основываясь на модели, я бы хотел измерить производительность системы при определенных обстоятельствах. Кроме того, инструмент (ы) должен помочь мне принять решение о том, как изменение архитектуры повлияет на производительность системы.Оценка производительности архитектуры программного обеспечения?

Вот пример вопроса (оставаясь с MOM аналогии), что я хотел бы быть в состоянии ответить:
Как бы пропускная способность (измеряется в сообщениях/с) изменения всей системы, если сохранение слой изменен с конца SQL на какой-то новый новый конец NoSQL с возможной последовательностью? В [упрощенной] модели компонент, который должен сделать что-то постоянное (т. Е. Записывать в БД), имеет операцию, которая задерживается на X ms до тех пор, пока не подтвердит поставщик сохранения. Если фокус сохранения сохраняется и подтверждение выполняется мгновенно, то указанная задержка будет уменьшаться до Y ms. Как уменьшить эту задержку, повлияет на пропускную способность системы?

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

+0

Возможно, вы можете отредактировать вопрос, а не добавить несколько ответов, которые на самом деле являются просто разъяснениями вопроса. –

+0

@Mike Dunlavey: это * не * разъяснения к вопросу, а скорее некоторые * возможные ответы, которые я придумал (я «сделал свою домашнюю работу», проведя некоторое исследование, прежде чем спрашивать). Кроме того, я не хотел размывать вопрос, он достаточно сложный, как сейчас. Если один из ответов (не обязательно мой) окажется интересным, я задам конкретные последующие вопросы. – paprika

+1

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

ответ

0

Несмотря на то, что в основном для сетевых исследований, модель ns-3 simulator может использоваться для моделирования и моделирования вашего приложения. Вероятно, это зависит от того, насколько сетевым является ваше приложение. ns-3 имеет класс Application как часть его объектной модели, предназначенную для моделирования всего выше TCP/UDP. Вы можете написать очень упрощенную версию вашей логики приложения, которая отправляет только тарабарщину по сети и вводит задержки здесь и там для определенных операций. ns-3 обеспечивает хорошую прослеживаемость.

0

Симуляторный каркас, такой как SimPy, может быть полезен для моделирования и моделирования поведения системы. В отличие от чего-то вроде ns-3 у вас нет готовых деталей, но вы не ограничены сетецентрическим симуляцией.

При таком подходе у вас есть свобода мира для моделирования, но изменение деталей в вашей модели может быть очень трудоемким, если вы не начинаете с хорошей объектной модели: возможно, это хорошая идея использовать общие понятия как «каналы» для связи между компонентами, а не напрямую/явно подключающие компоненты. Используются концепции и передовые методы ОО.

0

This master thesis оценивает несколько Architecture description languages (ADLs) и их применимость для оценки производительности архитектуры. В нем делается вывод о том, что существующие ADL не поддерживают оценку нефункциональных атрибутов с точки зрения прогнозов производительности. В тезисах также представлено программное обеспечение под названием SAPE (оценка производительности архитектуры программного обеспечения), которое, как уже говорилось в его названии, призвано помочь в оценке аспектов производительности архитектуры программного обеспечения. Кажется, что это программное обеспечение недоступно в любом месте в Интернете.

0

This paper содержит обзор нескольких подходов к получению моделей производительности из [формальных] спецификаций архитектуры программного обеспечения. Язык спецификации, используемый в большинстве методологий, - UML, модели производительности [quote:] включают сети очередей (QN) и их расширения, называемые расширенными сетями очередей (EQN) и многоуровневыми сетями очередей (LQN), стохастическими сетями временного петри (STPN) Stochastic Process Algebras (SPA) и имитационные модели.

1

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

Я бы предположил, что производительность архитектуры основана скорее на количестве задействованных компонентов и на том, как они расположены - и это зависит от того, где вы рисуете линию между «архитектурой» и «дизайном» (и деталями реализации).

Roger Sessions потратил много времени, глядя на impact of complexity в ИТ-системах (в частности, ориентированная на обслуживание архитектура). Лично я подозреваю, что есть заслуга в том, что более сложная архитектура может быть не такой эффективной и, следовательно, не такой быстрой.

Я не уверен, что вы действительно можете проверить «производительность» архитектуры - с точки зрения того, что она существует только «на бумаге». Известно, что самолеты, которые отлично смотрятся на бумаге, убивают летчиков-испытателей.

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

0

Возможно OMNeT++ является то, что ближе всего к тому, что я имел в виду:

OMNeT ++ является дискретным моделирование событий среды. Его основное применение область является моделирование сетей связи, но из-за своей родовой и гибкой архитектуры, успешно используется в других областях как моделирование сложных ИТ систем, сетей массового обслуживания или аппаратного архитектуры, а также.

Смежные вопросы