I'm looking for tools that help me evaluate the performance of a software architecture. For this specific project I need to model a [distributed] system of a modest size that is comparable to message oriented middleware (MOM). Based on a model I'd like to measure the system's performance under certain circumstances. Also, the tool(s) should help me making decisions as to how a change to the architecture would affect the performance of the system.
Here's an example question (staying with the MOM analogy) that I'd like to be able to answer:
How would the throughput (measured in messages/s) of the whole system change if the persistence layer was changed from an SQL back end to some fancy new NoSQL back end with eventual consistency? In a [simplified] model the component that needs to make something persistent (i.e. write to the DB) has an operation that is delayed by X ms until the persistence provider acknowledges. If the persistence back-end is changed and the acknowledgement is instant then the said delay would drop to Y ms. How would decreasing this delay affect the throughput of the system?
Note that I'm primarily interested in ready to use software products or modeling techniques rather than research material, but nevertheless feel free to mention noteworthy academic resources.