Performance is a critical factor in software systems. Often, performance issues in applications are identified too late—either during performance testing or, worse, in production by end users. At that stage, fixing performance problems becomes costly due to the extensive architectural, design, and code changes required, along with the associated rework and testing.
To avoid such late-stage performance issues, it is essential to design systems with performance in mind. This involves:
- Defining performance objectives
- Designing the system to meet those objectives
- Evaluating system performance under expected load conditions before making significant investments
Performance modeling plays a crucial role in predicting how an application will behave under load. It involves simulation techniques and data analysis—either based on historical records or real-time data collection—to estimate system performance under specific conditions.
Performance Modeling Process
1. Identify Key Scenarios
Determine which scenarios are critical to performance and pose the highest risk to meeting performance objectives.
2. Identify Workloads
Define the expected number of users and concurrent users the system must support.
3. Identify Performance Objectives
Establish performance goals for each key scenario. These objectives should align with business requirements.
4. Identify Constraints (Budget)
Define resource constraints such as:
- Maximum response time
- CPU, memory, disk I/O, and network I/O limits
5. Identify Processing Steps
Break down each scenario into its component processing steps.
6. Allocate Budget
Distribute the available resource budget (from Step 4) across the processing steps (from Step 5) to meet the performance objectives.
7. Evaluate Design
Assess the system design against performance objectives and constraints. Adjust the design or reallocate the response time and resource utilization budget as needed.
8. Validate the Model
Continuously validate performance models through prototyping, testing, and measurement.
Types of Performance Modeling
Not all performance models are suitable for every application. Choosing the right model is key—many failures in performance modeling result from selecting an unsuitable model rather than flaws in the modeling approach itself.
1. Integrated Performance Model
In this approach, performance modeling is integrated directly into the software development process. This method provides precise performance insights but requires significant effort and control over the software development lifecycle.
Applicability:
- When performance is a top priority for the business or users
- When the application is under direct development control
Pros:
- Provides accurate and detailed performance insights
Cons:
- Requires significant effort, time, and investment
2. Component-Based Performance Model
This approach is suitable when tightly integrated performance modeling is not feasible. Instead, performance is analyzed at the component level, making it more practical for certain use cases.
Applicability:
- Packaged software solutions
- Applications divided into independent components
- When cost and effort constraints exist
Pros:
- Easier to implement
- Requires less effort compared to an integrated model
Cons:
- Less precise in providing detailed performance insights for developers and architects
Performance Modeling Approaches
- Discrete Event Modeling – Used in integrated or tightly coupled performance modeling.
- Analytical Modeling – Uses simulation-based techniques to predict component behavior under specific conditions.
- Statistical Modeling – Uses statistical analysis to model application performance based on observed results under varying load conditions.
By applying the right performance modeling process and approach, IT teams can proactively address performance concerns early in the development lifecycle, reducing risks and optimizing system performance efficiently.
Interesting resources
1. http://jmt.sourceforge.net/
2. https://www.palladio-simulator.com/tools/
3. http://www.perfdynamics.com/Tools/PDQ.html
4. https://www.dynatrace.com/news/blog/how-to-create-performance-models-using-application-monitoring-data/
5. https://www.vtt.fi/inf/pdf/publications/2003/P512.pdf
6. https://waset.org/publications/3902/performance-modeling-for-web-based-j2ee-and-.net-applications
7. https://pdfs.semanticscholar.org/d688/37cbfb63c5c3469a7db7c520881001a039b8.pdf
8. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.10.2690&rep=rep1&type=pdf
9. http://alicezheng.org/papers/sigmetrics10-practicalperf.pdf
10. http://www.archer.ac.uk/training/course-material/2018/07/ScaleMPI-MK/Slides/PerformanceModelling.pdf
11. https://hal.archives-ouvertes.fr/hal-01118352/document
12. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.187.3046&rep=rep1&type=pdf
13. http://www.scs-europe.net/dlib/2013/ecms13papers/hipmos_ECMS2013_0178.pdf
14. http://www.iaeng.org/publication/WCECS2010/WCECS2010_pp35-43.pdf
15. http://jmt.sourceforge.net/Papers/acm09jmt.pdf
Comments
Post a Comment