I believe performance tuning (or even testing) is one the most challenging for an engineer. Well, in lots of company, this is the lowest priority than others "important" thing.

My purpose of opening this post is to know what do you think*good* performance engineer should have.

I can list some things like:

  1. Solid database,programming knowledge.
  2. Do single thread performance testing.
  3. Good knowledge of using the load generator tools to simulate the concurrent loads.
  4. Use different tools to monitor/measure the app/db server performance status
  5. Understand and can debug the codes. Even tune the codes.

Any more ideas are always appreciated!

link|improve this question

7  
I would have thought performance testing and tuning would be a specialty of a programmer, not a separate discipline. i.e. you don't need an engineer who is capable of understanding and debugging code; you need a programmer from amongst the developers of the application who is capable of using profilers, load generation tools, etc. – Carson63000 Mar 18 '11 at 4:43
Partially agree with that point. From the other side, the best performance tester should be the owner of codes. hmmmm.. – Vance Mar 18 '11 at 6:59
@Vance: By "owning code" do you mean that the perf tester will be modifying/writing the code as well? That pattern often doesn't turn out well. – SnOrfus Oct 20 '11 at 13:02
@SnOrfus Performance testing and tuning should always be closely connected with others. That means we find the slow codes and try to fix them and re-test again and find other slowness...We not just find the phenomenon, we also need provide solutions as well. – Vance Oct 20 '11 at 17:35
feedback

migrated from stackoverflow.com Mar 18 '11 at 3:58

This question came from our site for professional and enthusiast programmers.

6 Answers

up vote 3 down vote accepted

I run a consulting firm (80 people) uniquely focusing on Performance Engineering. My opinion is that performance engineering is extremely complex because it cannot be seen as a Sw engineering matter only but it is a multidisciplinary science that is extremely difficult to master.

Performance best practices (and so optimization initiatives, when needed) span across the whole IT "stack":

  • application design and algorithms
  • application code
  • framework code
  • platform (e.g. Apache, IIS, ...)
  • data access
  • operating system
  • hardware infrastrutture and processing distribution
  • network

The difficulty of the role resides in the fact that there are typically multiple ways to get to a result (e.g. Code optimization vs. Capacity plannning) with competing technical time and economical contraints.

So the best performance engineers are smart, flexible, trained in multiple disciplines and need strong communication and problem solving skills to succeed in their job.

link|improve this answer
Yeah @Paolo, this is really what I expected :-) – Vance Apr 19 '11 at 15:24
+1 "for trained in multiple disciplines" which includes checking network cables and NIC lights to see if it really is running full duplex and full speed. Everything in the stack is suspect and you have to challenge every assumption. – james Oct 20 '11 at 14:06
feedback

Add to your list a solid understanding of algorithms. That is a must.

link|improve this answer
feedback

I think good performance has a lot to do with

  • software architecture and desingn decissions (i.e. support for scalability in a Serverfarm)
  • database optimisations (i.e. indexing)
  • load balancing on high volume websides
  • product knowledge with their pros and contras
link|improve this answer
feedback
  • Knowing that profiling comes first. Too many developers start optimizing what they think is the problem- and they are often wrong.
  • Being able to understand profiling output and generate "real load"
  • General knowledge of parallelization techniques, RDBMS and operating system behavior
  • Good eye for algorithms and caching

More often than not, I've seen that big optimization gains are easy; just find the hot spot, and try different approaches. In most shops, it's rare to need thorough optimization- thoughtful coding from the start normally means that performance problems are far and between (esp. in this age where fast IO is relatively cheap and most working sets fit into RAM).

link|improve this answer
Thank you for the exciting answer! "Premature optimization is the root of all evil" – Vance Mar 21 '11 at 16:15
feedback

A general understanding of how to access the configuration of the software being tuned,e.g. IIS, along with what parameters are there to improve performance such as what hardware changes may improve performance or what configuration changes in software may have a large impact. This could mean getting to know something as general as an operating system or as specialized as a customization on top of off-the-shelf software.

Knowing how to analyze data for patterns would also be a standard requirement to handle things like extrapolation that someone may ask.

I'm used to thinking of this as a "Systems Engineer" who has some system administrator responsibilities as it is production that generally is getting tuned and not some lower environment. There could also be configuring network appliances like load balancers or firewalls for this person in addition to server configurations.

Nice to have:

ITIL's Service Asset & Configuration Management process experience and knowledge

link|improve this answer
Thank you for your answer! Yes, the operation engineers or system engineers is the most close to the production data and may also tune up as quick as they can. I think the one of the important for them is to set up a production monitor system and access log analysis system. – Vance Mar 21 '11 at 16:07
feedback

Math, modeling, and statistics are very important. You gotta be able to figure out trends, and understand the difference between errors and residuals.

In addition to this they've got to understand how the whole system works, all the way from how many spindles in a RAID array, to how are the worker threads in the application working out shared resource contention.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.