Testing will show you the external impact of your system under load, but a real performance warrior needs to know more. You need to know what is going on under the surface, like a spy in the enemy camp. The more intelligence you can gather about the system you are working on, the better.
Performance issues are tough: they are hard to find, hard to replicate, hard to trace to a root cause, hard to fix, and often hard to validate as having been fixed. The more data can be uncovered, the easier this process becomes. Without it you are making guesses based on external symptoms.
Intelligence gathering also opens up a whole new theater of operations – you can now get some real-life data about what is actually happening in production. Production is a very rich source of data, and the data you can harvest from it is fundamentally different in that it is based on exactly what your actual users are doing, not what you expected them to do. However, you are also much more limited in the levels of data that you can capture on production without the data-capture process being too intrusive.
Chapter 6 discusses in more detail the types of data you can gather from production and how you should use that data.
During development and testing, there is much more scope for intrusive technologies that aim to collect data about the execution of programs at a much more granular level.
Depending on how much ...