31 3 / 2008

Performance Testing 101: Identify bottleneck points to monitor [performance/tips]

Outside of building your LoadRunner scripts, debugging your fails, and stepping through the tedium of mind-numbing correlation, there is test execution. And as you well know, test execution is where all the real fun begins. In my history, I’ve enjoyed the luxury of sitting side by side with the system admin, configuring the performance monitor and network monitors accordingly, while running single user “smoke tests” on my scripts to ensure that proper metrics are gathered. It was a matter of crossing my “t” and dotting my “i” one timid script at a time. Since that happen some year or two ago, I went digging through some of my notebooks and I found a few tips to share. Moreover, I found a few points of interest when looking for potential bottlenecks before a performance test, especially when setting up PerfMon (simply called Performance now) on an IIS server.

Baselines

Always gather your baselines on the server first, if at all possible. If you have this privilege, then start up Performance Monitor and gather the following counters:

Environment baselines. Identify any deviation from the normal.
  • System\Processor Queue length
  • Memory \ Committed Bytes
Network Specific baselines.
  • TCP\Segments Retransmitted per Second
  • IP\ Datagrams Received / Discarded
One note on gathering your baselines, don’t monitor any of the cache resources, since it may impact server performance, and keep in mind, you are logging these counters on the environment.

Monitors

Use the counters in PerfMon during your test execution to log some real numbers.
  • LogicalDisk\% Free space
You can grab the average of all logical drives. If it should fall below a 15% threshold, it could cause the Pagefile to not grow as expected.
  • PagingFile\ % Usage
If the PageFile should extend beyond 70% during your tests, the file will automatically grow and it will cause performance issues.
  • Memory \Pages per Second and Processor \% Processor Time
These are your standards and should already be active in PerfMon. A reasonable threshold for this depends on your server environment. Multi-processors and terabytes can go a long way, if dedicated.

These are just a few of the monitor counters I have used during performance, load or stress tests. Outside of the IIS server environments, I use rstat to gather similar monitor counters, and with the IP address, I plug those numbers directly into the LoadRunner monitor dashboard. I also recently discovered that you can use rstat with NeoLoad from Neotys. As a side note, NeoLoad is still on my radar and I’m still reviewing this performance powerhouse so that I can blog about it in the future.