Performance Evaluation and Engineering

We engage with our clients to do an evaluation of the performance and scalability of existing software systems. These evaluations are both diagnostic as well as prognostic in nature. Diagnostic evaluations are often used to troubleshoot specific performance issues associated with the system while the prognostic evaluations assist in capacity planning and benchmarking. Performance evaluations seek to answer the following types of questions:

  1. What is the performance characteristics of the system with respect to changing load patterns.
  2. What are the factors that affect the performance (e.g. no of simultaneous users, volume of data etc.)
  3. How much can the system scale before performance degrades, or it breaks down
  4. What kind of resources are required to guarantee the performance expectations (e.g. memory, no of CPUs, no of servers etc.)

Engagement Model

These are typically short term engagements, lasting for 2-3 months. We use our own team to plan and conduct the audit, without needing too much involvement from the client’s engineering team. Typically, the client’s QA team may be involved in discussing and planning for the performance scenarios.

We do a static analysis by reviewing the design and code for any obvious performance bottlenecks. To do the runtime evaluation, we use our scenario based methodology. We identify the important factors that affect the system’s performance and isolate them into distinct scenarios. Each scenario is designed to vary one factor, while keeping the others constant. We design & develop the test drivers for running the scenarios, generate test/simulation data and add any instrumentation required to measure the performance indicators. As we run the scenarios, we gather the performance measures and analyze them. We document our observations, conclusions and recommendations and conduct working sessions with the team to explain the feedback and techniques for building high performance systems.

Value Proposition

  • Systematic Approach – We use our own methodology to conduct the evaluation that is based on identifying and isolating performance impacting factors through the use of multiple scenarios.
  • Tool & Technology Agnostic – Our approach is independent of the technology platform or profiling tool. We select the most suitable tools depending upon the scenarios.
  • Asset Creation – The test drivers, data generators and scenario execution tools that we create are left behind as assets to the team who can continue to use them to do the evaluation in future.
  • Code Review & Mentoring – We also review the code and design, and mentor the team in aspects related to building efficient & high performance systems